# Mais Gestão — API pública: contexto para LLMs Este documento contém o contrato OpenAPI publicado pela API Mais Gestão, completo ou recortado para o endpoint selecionado. O recorte inclui componentes necessários por referência transitiva e não busca URLs externas. Use-o como referência para ajudar a implementar uma integração. A autenticação depende da configuração da chave. No modo com login, envie X-Public-Access-Key e X-Public-API-Key. Permissões liberadas sem login podem usar apenas X-Public-Access-Key. O fluxo de duas chaves abaixo descreve o modo com login; consulte também a seção Chave de acesso sem login. ## Orientações para a integração - Não invente endpoints, campos, permissões ou códigos de resposta. Consulte o contrato abaixo. - Use os servidores e variáveis definidos no contrato. Solicite ao integrador o tenant e o ambiente corretos. - Respeite os esquemas de autenticação de cada operação. Use placeholders nos exemplos; não solicite nem inclua senhas ou chaves reais em conversas. - Preserve os tipos JSON, campos nullable, enums, paginação e exemplos exatamente como documentados. - Respeite as regras de negócio, os pré-requisitos e as limitações descritas nas operações. - Quando algo não estiver documentado, indique a lacuna em vez de presumir comportamento. - Não execute operações na API apenas por ler esta documentação. ## Primeiros passos com curl Confirme o tenant e o host do ambiente. O contrato usa https://{tenant}.{host}/public-api/v1; os paths já começam após /v1. A origem dos arquivos de documentação não é a base de chamadas da sua empresa. Crie a chave de acesso no painel com um administrador. O exemplo abaixo usa login: envie X-Public-Access-Key, email e password; HTTP 201 devolve api_key. Se receber 202, conclua o segundo fator conforme /auth/sessions no contrato antes de continuar. Não compartilhe credenciais em conversas ou histórico de terminal. Defina as variáveis no seu ambiente seguro. Em BASE_URL informe a URL completa com tenant, host e /public-api/v1. Em AUTH_JSON_FILE informe o caminho de um arquivo JSON protegido com email e password. Após HTTP 201, preencha PUBLIC_API_KEY com api_key. A listagem exige as permissões correspondentes. ```sh # Variáveis: BASE_URL, PUBLIC_ACCESS_KEY e AUTH_JSON_FILE curl --fail-with-body -i "$BASE_URL/auth/sessions" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Public-Access-Key: $PUBLIC_ACCESS_KEY" \ --data-binary "@$AUTH_JSON_FILE" # Após HTTP 201: PUBLIC_API_KEY recebe api_key curl --fail-with-body "$BASE_URL/clients?page=1&per_page=20" \ -H "Accept: application/json" \ -H "X-Public-Access-Key: $PUBLIC_ACCESS_KEY" \ -H "X-Public-API-Key: $PUBLIC_API_KEY" ``` ## Da chave à primeira cobrança Esta jornada usa POST /charges com IntegrationChargeRequest e um cliente existente. Não há sandbox ou homologação oferecidos neste portal: executar os comandos pode criar uma conta a receber e emitir uma cobrança real. Credenciamento e configuração podem exigir etapas prévias; não há promessa de emissão em cinco minutos. Copiar um snippet não executa chamada alguma. Pré-requisitos: empresa com boleto/PIX habilitado e credenciamento aprovado para o meio escolhido, módulos contratados, cliente ativo com endereço nacional válido, caixa da própria empresa, conta contábil ativa do tipo receivable e categoria compatível. Confira também o centro de custo: no modo múltiplos, informe cost_center_id ativo conforme o contrato. Verifique o credenciamento no painel; GET /configuration/payment-activation permite consultar o estado com bank_slip.configure ou card_receiving.configure. Permissões do atalho: accounts.view e clients.view; accounts.create para criar a conta; bank_slip.emit e bank_slip.print para boleto/PIX. Reutilizar o cliente evita exigir clients.create; criar cliente ou categoria exige as permissões de criação correspondentes. Os catálogos usados abaixo exigem std_launch.view e categories.view. A consulta de caixas não exige permissão específica adicional além da autenticação. Após autenticar, consulte GET /clients, GET /cashboxes, GET /account-standard-launches?type=receivable e GET /categories. Percorra a paginação, escolha registros da empresa e use os IDs retornados. Não invente UUIDs. No corpo, o cliente existente é client: { id }; não existe client_id nesse schema. Use category_id para reutilizar a categoria; não combine com category. Baixe o JSON de exemplo, substitua os placeholders pelos IDs consultados e revise valor e vencimento. A data ilustrativa 2027-03-03 deve ser substituída por um dia útil e ano aceitos no contrato. O exemplo usa PIX: charge.kind=pix e account.payment_method=pix. Para boleto, use charge.kind=boleto e account.payment_method=bank_slip. O enum de kind também admite payment_link, que possui módulo e permissões próprios. Guarde uma chave Idempotency-Key de 8 a 128 caracteres por pedido. Reutilize a mesma chave, conteúdo, empresa, chave de acesso e identidade ao recuperar a mesma operação; conteúdo diferente com a mesma chave pode retornar 409. O campo idempotency_key no JSON é alternativa ao cabeçalho; se enviar ambos, devem ser iguais. HTTP 201 indica operação criada, mas exige conferir data.status e artefatos; 202 indica processamento ou resposta externa inconclusiva; 200 pode recuperar operação existente. Guarde data.operation_id. Consulte GET /charges/{operation} com esse ID e a mesma identidade; outra chave ou usuário recebe 404. status_url, quando publicado, indica a consulta de acompanhamento. A resposta da operação de cobrança define data.status: processing, uncertain, completed, failed e canceled. processing pede acompanhamento; uncertain exige reconciliação, sem nova emissão; completed conclui a operação de emissão, não comprova pagamento; failed e canceled exigem verificar a mensagem e os artefatos antes de decidir o próximo passo. data.charge.status é separado e não tem enum neste schema: não suponha paid ou settled. Para polling GET em 429/5xx, use backoff exponencial com jitter, limite de tentativas e prazo máximo; respeite Retry-After quando presente. Após timeout de criação, consulte pelo operation_id conhecido antes de qualquer repetição. Sem ID, reconcilie o pedido por suporte/consulta documentada, preservando a chave original; não repita a emissão automaticamente nem crie uma chave nova para contornar uncertain. Webhooks externos ficam para uma entrega futura; este fluxo usa polling. ```sh # Salve o JSON disponibilizado abaixo como primeira-cobranca.json. # Substitua os IDs, revise os dados e valide a sintaxe localmente: node -e 'JSON.parse(require("fs").readFileSync("primeira-cobranca.json","utf8")); console.log("JSON válido")' # Só execute após revisar: emissão real. Defina IDEMPOTENCY_KEY uma vez por pedido. curl --fail-with-body -i "$BASE_URL/charges" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Public-Access-Key: $PUBLIC_ACCESS_KEY" \ -H "X-Public-API-Key: $PUBLIC_API_KEY" \ -H "Idempotency-Key: $IDEMPOTENCY_KEY" \ --data-binary @primeira-cobranca.json # OPERATION_ID recebe data.operation_id. Apenas consulta; não emite novamente. curl --fail-with-body "$BASE_URL/charges/$OPERATION_ID" \ -H "Accept: application/json" \ -H "X-Public-Access-Key: $PUBLIC_ACCESS_KEY" \ -H "X-Public-API-Key: $PUBLIC_API_KEY" ``` ## JSON da primeira cobrança Arquivo: https://maisgestao.com.br/docs/examples/first-charge.json. Este é um modelo JSON válido sintaticamente, mas os placeholders precisam ser substituídos por IDs reais antes de validar contra IntegrationChargeRequest. Nenhum segredo ou dado pessoal real está incluído. ```json { "client": { "id": "" }, "account": { "unit_price": 150, "payment_method": "pix", "due_date": "2027-03-03", "cashbox_id": "", "account_standard_launch_id": "", "category_id": "", "description": "Serviço de exemplo" }, "charge": { "kind": "pix" } } ``` ## Credenciais e permissões No fluxo com login, as operações usam X-Public-Access-Key e X-Public-API-Key. A chave temporária tem validade de 24h; um novo login não encerra as anteriores. Não use o Bearer MCP nas rotas públicas REST. Uma chave criada com require_login: false permite somente as permissões concedidas sem login, usando X-Public-Access-Key. Operações que exigem login respondem 403 sem a chave temporária. Confira security e as regras de cada operação no contrato. ## Erros em Problem Details (RFC 9457) Todo erro HTTP 400–599 retorna application/problem+json com o schema ProblemDetails. O formato obrigatório independe do cabeçalho Accept, inclusive quando ausente. As respostas de sucesso seguem o schema e a mídia de cada operação. O corpo contém type, title, status, detail, instance e code textual. Use code para decisões do integrador e errors para mensagens por campo quando disponíveis. instance é o caminho público sem query string; erros 5xx são mascarados. Confira as extensões e os exemplos publicados no OpenAPI. Trate o status HTTP antes do corpo: 401 pede revisão das credenciais; 403 pede revisão das permissões; 422 pede correção dos dados. Em 429 respeite Retry-After quando presente. Não repita escritas cegamente após timeout. ```sh # Resposta de erro HTTP 400–599, sem necessidade de Accept Content-Type: application/problem+json # Sucesso: segue o schema e a mídia da operação ``` ## Processamento e polling Uma solicitação aceita pode ainda estar em processamento. Use a operação de consulta documentada para acompanhar o mesmo recurso pelo identificador retornado, até o estado final definido pelo contrato. Percorra a paginação quando aplicável. Como estratégia do integrador, use backoff exponencial com jitter (variação aleatória da espera), limite de tentativas e prazo máximo para consultas que retornem 429 ou 5xx. Em 429, aguarde no mínimo Retry-After quando presente. Após timeout de criação ou emissão, consulte por ID quando disponível e reconcilie o estado; não repita a emissão automaticamente. Se o ID não chegou, recupere-o por uma consulta documentada ou peça suporte. Use idempotência somente onde o contrato a prevê. Exemplo do contrato: GET /accounts-payable/scan/{scan_id} retorna ScanStatus na raiz: pending aguarda, ready permite revisar a leitura e failed encerra com falha. Esses estados não indicam pagamento nem criação de conta. Cada GET tem seu próprio schema; não reutilize o vocabulário de outro recurso. O acompanhamento descrito aqui é por consulta (polling). Esta documentação não oferece assinatura de webhook externo. Use apenas os recursos publicados para o seu ambiente. ## Valores monetários sem perda de precisão Consulte o schema da operação: entradas de contas aceitam números JSON, enquanto saídas como unit_price, balance e balance_paid são texto decimal com duas casas, por exemplo "1500.00". Não converta todas as entradas em texto ou todas as saídas em número. Não use ponto flutuante binário (float) para somar valores financeiros. Use aritmética decimal ou inteiros na menor unidade monetária, com conversão e arredondamento explícitos conforme o campo. Preserve as strings decimais recebidas. ## Encerrar a chave temporária Ao terminar as consultas e a jornada de cobrança, encerre a chave temporária com DELETE /auth/session. ```sh # Encerre a chave temporária ao concluir curl --fail-with-body -X DELETE "$BASE_URL/auth/session" \ -H "Accept: application/json" \ -H "X-Public-Access-Key: $PUBLIC_ACCESS_KEY" \ -H "X-Public-API-Key: $PUBLIC_API_KEY" ``` ## Suporte e versionamento O caminho /public-api/v1 identifica a versão REST. Consulte a política de evolução e o changelog datado abaixo antes de atualizar a integração. A versão efetivamente publicada continua sendo a informada no contrato do ambiente. Para suporte, consulte https://maisgestao.com.br/contato; clientes também abrem tickets no sistema em Ajuda → Meus chamados. Informe operação, método, horário, status HTTP, versão do contrato e identificador de requisição se disponível. Remova senhas, chaves, tokens, dados pessoais e documentos do material enviado. As chamadas atuam no ambiente e na empresa informados. Verifique os dados e as permissões antes de executar operações financeiras. ## Política de evolução e compatibilidade A referência de evolução desta entrega é OpenAPI info.version 1.1.0, com o caminho /public-api/v1 preservado. info.version identifica a revisão do contrato; não muda sozinho a versão da URL. A versão efetivamente publicada vem do OpenAPI do ambiente: um artefato ainda em 1.0.0 não deve ser tratado como 1.1.0 apenas por ler este guia. Na linha v1, adições compatíveis preservam os campos, tipos, autenticação, respostas de sucesso e comportamento já documentados dos clientes existentes. Novos campos opcionais, operações e capacidades devem ser descritos no contrato e no changelog. O cliente deve tolerar campos opcionais ausentes e campos adicionais de resposta. Erros HTTP 400–599 usam obrigatoriamente application/problem+json no formato RFC 9457 (Problem Details), independente do cabeçalho Accept. O formato obrigatório preserva as respostas de sucesso documentadas por operação. Mudanças incompatíveis, como remoção de campo, alteração de tipo, permissão ou semântica exigida de clientes existentes, exigem nova versão ou migração explícita documentada antes da adoção, com impactos e passos de atualização. Descontinuações devem indicar o recurso afetado e a alternativa; não há prazo de antecedência, compatibilidade ou SLA inventado neste guia. No MCP, negocie a versão de protocolo aceita na inicialização e confira os schemas do catálogo. A versão do servidor MCP e a revisão OpenAPI são independentes. O changelog desta entrega está na seção datada abaixo. ## Changelog — 2026-10-29 Portal REST/MCP: índices curtos como contexto padrão; arquivos completos explicitamente separados; recortes por endpoint ou ferramenta; referências transitivas REST; cópia de contexto, links e exemplos sem execução automática. Integração: jornada da chave à primeira cobrança com JSON de placeholders obrigatórios e Idempotency-Key, polling com estados do contrato, precisão decimal, autenticação distinta REST/MCP e confirmação humana nas operações MCP de revisão. Evolução: referência OpenAPI info.version 1.1.0 mantendo /public-api/v1; erros RFC 9457 com application/problem+json obrigatório para HTTP 400–599, preservando as respostas de sucesso. Esta seção registra a entrega documental e a política de evolução, não comprova publicação do runtime em cada ambiente. Correção da revisão: suporte direcionado à central oficial existente, política de compatibilidade e este changelog acessíveis nos portais e exports. Webhooks externos e sandbox são roadmap futuro, indisponíveis nesta entrega e sem data ou prazo de entrega. ## Fonte e atualização Portal: https://maisgestao.com.br/docs Protocolo MCP (autenticação própria): https://maisgestao.com.br/docs/mcp Contrato: https://maisgestao.com.br/docs/openapi.yaml Índice para LLMs: https://maisgestao.com.br/docs/llms.txt Export completo: https://maisgestao.com.br/docs/llms-full.txt O conteúdo abaixo é obtido do contrato publicado pela API, sem cópia manual. No recorte, o YAML é reserializado com schemas, exemplos e tipos preservados; componentes não referenciados são omitidos. Consulte novamente esta URL para obter revisões posteriores. Credenciais digitadas no portal não fazem parte deste documento; exemplos pertencem ao contrato público. ## Contrato OpenAPI (todos os endpoints ou endpoint selecionado) ````yaml x-tagGroups: - name: Acesso e integração tags: - Autenticação - Usuários - Users - Permissões - Logs - Atalhos de integração - Consulta de CNPJ - name: Cadastros tags: - Clientes - Providers - Fornecedores - Partners - Employees - Interns - Estagiários - Bancos - Benefícios - Cargos - Categorias - Categorias de pagamento - Centros de custo - Contas contábeis - Localidades e contatos - Filiais - Escritórios contábeis - Catálogos de integração - name: Financeiro tags: - AccountsPayable - AccountsReceivable - PaymentLinks - BankSlip - PIX Automático - Cards - CardBills - Cashboxes - Conciliação - Open Finance - Recorrências - Réguas de cobrança - Modelos de comunicação - Caixas — operações complementares - Cartões — conciliação e conexão - Contas a pagar — operações complementares - Contas a receber — operações complementares - Cópias de cobranças - name: Documentos e fiscal tags: - AdministrativeDocuments - DocumentLote - FiscalRps - Documentos - Documentos auxiliares - Perfis de documentos - Contratos - Catálogos fiscais - Emissões fiscais - name: Análise e operação tags: - Reports - Spreadsheets - Balanços - Governança - Indicadores - Órbita financeira - DataMigration - Migração de dados - Configurações - Assinatura da empresa - Backups - Configurações de consumo - Créditos - Notificações - Solicitações de certificado x-docs-verified-links: date: '2026-10-29' source: https://maisgestao.com.br/ terms: https://maisgestao.com.br/termos-de-uso support: https://maisgestaoerp.atlassian.net/servicedesk/ openapi: 3.0.3 info: contact: name: Suporte Mais Gestão url: https://maisgestaoerp.atlassian.net/servicedesk/ termsOfService: https://maisgestao.com.br/termos-de-uso title: Mais Gestão - API Pública version: 1.1.0 description: "API Pública do **Mais Gestão / SGE** para integrações externas.\n\nDocumentação dos recursos públicos\ \ de autenticação, cadastros, contas, cobranças,\ndocumentos e relatórios.\n\n## URL base e tenant\n\nCada empresa\ \ (tenant) tem seu próprio subdomínio. Todas as chamadas usam o padrão:\n\n```\nhttps://{tenant}.{host}/public-api/v1/...\n\ ```\n\n- `{tenant}` — o subdomínio da sua empresa (ex.: `minha-empresa`).\n- `{host}` — o domínio do ambiente\ \ (ex.: `api.maisgestao.com.br`).\n\n## Autenticação e permissões\n\nA chave de acesso é obrigatória. Quando\ \ o vínculo da permissão exige login, envie também X-Public-API-Key. O login é `POST /auth/sessions`,\nque exige\ \ apenas `X-Public-Access-Key`:\n\n| Cabeçalho | Origem \ \ |\n|-----------------------|------------------------------------------------------------------------|\n\ | `X-Public-Access-Key` | Chave de acesso criada por um administrador no painel. |\n| `X-Public-API-Key`\ \ | Chave temporária (24h) obtida em `POST /auth/sessions` (campo `api_key`). |\n\n### Fluxo\n\n1. Chame\ \ `POST /auth/sessions` com `{ \"email\", \"password\" }` e o cabeçalho `X-Public-Access-Key`.\n A resposta\ \ (**HTTP 201**) traz o campo `api_key`.\n2. Nas chamadas cujo vínculo exige login, envie os dois cabeçalhos:\ \ `X-Public-Access-Key`\n e `X-Public-API-Key` (com o valor de `api_key`).\n3. Ao terminar, chame `DELETE\ \ /auth/session` com os dois cabeçalhos para encerrar a\n chave de API. Um novo login não encerra as chaves\ \ anteriores: cada processo do\n integrador pode ter a sua, e todas valem até expirar (24h) ou serem encerradas.\n\ \n### Chave de acesso sem login\n\nUma chave de acesso criada com `require_login: false` autentica sem `POST\ \ /auth/sessions`:\nbasta o cabeçalho `X-Public-Access-Key`, e as operações seguem registradas em nome\nde um\ \ usuário interno de integração. Esse modo é uma escolha do administrador ao\ncriar a chave, por permissão.\ \ Só funcionam as permissões concedidas à chave sem\nexigir login, e o administrador deve conceder somente as\ \ necessárias. Permissões\nque exigem login respondem **403** sem `X-Public-API-Key`.\n\n## Códigos de resposta\n\ \n| Situação | Status |\n|-------------------------------------------|--------|\n\ | Credencial ausente, inválida ou expirada | **401**|\n| Credencial válida, sem permissão | **403**|\n\ | Erro de validação | 422 |\n| Recurso não encontrado | 404 \ \ |\n\n> A criação de cliente (`POST /clients`) retorna **HTTP 201**.\n\n## Paginação e ordenação\n\nO formato\ \ da paginação depende da operação: pode haver `data`, `links` e `meta`, um paginador com metadados na raiz\ \ ou `data` e `meta` sem links. Consulte o schema da resposta. Use `page` para\nselecionar a página e `per_page`\ \ para definir a quantidade de itens.\n`per_page` deve ser um inteiro positivo; valores inválidos retornam **422**.\n\ \nNas operações que permitem ordenação, `sort_column` deve ser uma das colunas\nindicadas na descrição. Colunas\ \ não aceitas retornam **422**, com erro no campo\n`sort_column`. Use `sort_direction=asc` ou `desc`; a aceitação\ \ e o tratamento de valores inválidos dependem da operação.\n\n## Valores monetários\n\nNas contas a pagar e\ \ a receber, `unit_price`, `balance` e `balance_paid` são\nstrings decimais com duas casas, como `\"1500.00\"\ `. O mesmo formato se aplica a\n`amount` e `start_amount` dos caixas. Consulte o schema de cada recurso para\n\ os demais valores e preserve a precisão decimal nos cálculos da integração.\n\n## Catálogo de enums\n\nOs valores\ \ abaixo são enviados e recebidos no JSON. Os rótulos ajudam na\nexibição dos dados na integração.\n\n### `status`\ \ — contas a pagar e a receber (`AccountStatus`)\n\n| Valor | Rótulo |\n|-------|--------|\n| `pending` | Pendente\ \ |\n| `partial` | Parcialmente pago |\n| `paid` | Pago |\n| `overdue` | Atrasado |\n| `canceled` | Cancelado\ \ |\n| `partial_overdue` | Atrasado com pagamento parcial |\n\n### `payment_method` — contas e pagamentos (`PaymentMethod`)\n\ \n| Valor | Rótulo |\n|-------|--------|\n| `pix` | Pix |\n| `bank_slip` | Boleto bancário |\n| `transfer` |\ \ Transferência bancária |\n| `check` | Cheque |\n| `credit` | Cartão de crédito |\n| `debit` | Cartão de débito\ \ |\n| `debit_account` | Débito em conta |\n| `money` | Dinheiro |\n| `none` | Nenhum |\n\n> `debit` representa\ \ cartão de débito; `debit_account`, débito em conta.\n\n### `type` — conta a pagar (`PayableType`)\n\n| Valor\ \ | Descrição |\n|-------|--------------|\n| `normal` | Normal |\n| `internal_transfer` | Transferência interna\ \ |\n| `credit_bill` | Fatura de cartão |\n| `card_invoice_advance` | Antecipação de fatura |\n\n### `type`\ \ na resposta — conta a receber (`ReceivableType`)\n\n| Valor | Rótulo |\n|-------|--------|\n| `normal` | Normal\ \ |\n| `internal_transfer` | Transferência Interna |\n\n### `generated_for_entity_type` — conta a pagar (`AccountPayableFor`)\n\ \n| Valor | Rótulo |\n|-------|--------|\n| `employee` | Funcionário |\n| `intern` | Estagiário |\n| `provider`\ \ | Fornecedor |\n| `cashbox` | Caixa |\n| `partner` | Sócio |\n\n### `generated_for_entity_type` — conta a\ \ receber (`AccountReceivableFor`)\n\n| Valor | Rótulo |\n|-------|--------|\n| `client` | Cliente |\n| `provider`\ \ | Fornecedor |\n| `employee` | Funcionário |\n| `intern` | Estagiário |\n| `cashbox` | Caixa |\n| `partner`\ \ | Sócio |\n\n> `generated_for_entity_name` contém o nome da entidade vinculada.\n> O envio de cobranças e\ \ as notificações de cobrança exigem uma conta vinculada\n> a `client`. Variáveis de template `{{cliente-*}}`\ \ não são preenchidas para\n> outros tipos de entidade.\n\n### `recurrence_type` / `recurrence.type` (`RecurrenceType`)\n\ \n| Valor | Rótulo |\n|-------|--------|\n| `unique` | Única |\n| `installments` | Parcelada |\n| `monthly`\ \ | Mensal |\n| `fortnightly` | Quinzenal |\n| `quarterly` | Trimestral |\n| `semiannually` | Semestral |\n\ | `annually` | Anual |\n\n> Nas **listagens** de contas o campo se chama `recurrence_type` e é **nulável**\n\ > (`null` quando a conta não tem recorrência); no **detalhe** o mesmo dado vem no\n> objeto aninhado `recurrence.type`.\ \ São dois nomes para o mesmo conceito.\n\n### `standard_launch.type` (`StdLaunchType`)\n\n| Valor | Rótulo\ \ |\n|-------|--------|\n| `payable` | Conta a pagar |\n| `receivable` | Conta a receber |\n\n### `addresses[].type`\ \ na resposta (`TypeOfPersonalData`)\n\n| Valor | Descrição |\n|-------|--------------|\n| `none` | Padrão |\n\ | `fiscal` | Fiscal |\n| `contact` | Contato |\n| `charge` | Cobrança |\n\n## Primeiros passos com curl\n\n\ Obtenha no painel a chave de acesso e confirme com o administrador as permissões\nnecessárias. Use o endereço\ \ HTTPS da sua empresa. As variáveis abaixo são locais;\nos nomes e segredos de exemplo não são credenciais\ \ utilizáveis.\n\n```sh\nexport BASE_URL='https://SUA_EMPRESA.SEUDOMINIO/public-api/v1'\nread -r ACCESS_KEY\ \ # informe sua chave sem incluí-la no comando\n\ncurl --fail-with-body --request POST \"$BASE_URL/auth/sessions\"\ \ \\\n --header 'Accept: application/json' \\\n --header 'Content-Type: application/json' \\\n --header \"\ X-Public-Access-Key: $ACCESS_KEY\" \\\n --data '{\"email\":\"integracao@example.com\",\"password\":\"SUBSTITUA_LOCALMENTE\"\ }'\n```\n\nApós o HTTP 201, copie `api_key` para `API_KEY`. Se houver HTTP 202, conclua o\nsegundo fator conforme\ \ o schema de autenticação antes de consultar recursos.\nNão grave senhas, chaves ou respostas de autenticação\ \ em logs compartilhados.\n\n```sh\nread -r API_KEY\ncurl --fail-with-body \"$BASE_URL/clients?page=1\" \\\n\ \ --header 'Accept: application/json' \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header \"\ X-Public-API-Key: $API_KEY\"\n\ncurl --fail-with-body --request DELETE \"$BASE_URL/auth/session\" \\\n --header\ \ 'Accept: application/json' \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header \"X-Public-API-Key:\ \ $API_KEY\"\nunset ACCESS_KEY API_KEY\n```\n\nA consulta requer `clients.view`. Para chaves autorizadas pelo\ \ administrador a\noperar sem login, siga as condições da seção de autenticação; não envie uma chave\nAPI fictícia.\ \ Os exemplos de cadastros e operações usam dados ilustrativos e UUIDs\nsintaticamente válidos: substitua-os\ \ por registros da própria empresa. Revisões, versões e hashes devem ser\nobtidos nas consultas atuais antes\ \ de confirmar alterações. Eles não\nrepresentam emissão, autorização fiscal ou liquidação financeira reais.\n\ \n## Precisão dos valores\n\nNão converta strings monetárias de resposta em ponto flutuante binário para fazer\n\ cálculos. Use um tipo decimal ou centavos inteiros, com arredondamento explícito.\n`\"150.00\"` é uma string\ \ decimal em reais; `amount_cents: 15000` é um inteiro em\ncentavos. Campos de entrada declarados como `number`\ \ continuam sendo números JSON:\n`150.00`, sem `R$`, vírgula decimal ou separador de milhar. Não troque o tipo\ \ indicado\nno schema. Alíquotas, percentuais, tarifas e valores fixos têm unidades próprias;\nconsulte a descrição\ \ da operação em vez de interpretar todo número como dinheiro.\n\n## Limites, erros e repetição de pedidos\n\ \nO login público tem limite configurável, com padrão de 5 tentativas em 1 minuto,\nconsiderando empresa, IP,\ \ chave de acesso e e-mail. Os atalhos `/charges` e\n`/service-invoices` compartilham orçamento de consulta\ \ e criação por empresa e chave,\ncom padrão de 180 chamadas por minuto. Operações que passam pela API interna\ \ estão\nsujeitas também ao limite dessa camada (180 chamadas por minuto). Estes valores\nsão padrões da configuração,\ \ não uma franquia garantida. Ao receber 429, respeite\n`Retry-After`; não aumente a concorrência enquanto aguarda.\n\ \n401 indica credencial ausente, inválida ou expirada; 403 indica recusa de permissão\nou módulo; 402 pode bloquear\ \ o acesso por situação da assinatura da empresa. 422\ninforma os campos recusados. Outros erros estão descritos\ \ na operação. Um 404 pode\nsignificar que o registro não pertence ao escopo da credencial. Preserve as\ninformações\ \ de erro e o identificador da requisição, quando disponível, ao acionar\n[o suporte](https://maisgestaoerp.atlassian.net/servicedesk/),\ \ sem incluir segredos.\n\n### Erros em Problem Details (RFC 9457)\n\nTodos os erros HTTP 400–599 da API pública\ \ retornam `application/problem+json`\ncom o schema `ProblemDetails`. Esse formato é obrigatório e independe\ \ do cabeçalho\n`Accept`; nenhuma negociação de formato é necessária. As respostas de sucesso\nseguem o formato\ \ documentado em cada operação.\n\nO problema contém `type` (`about:blank`), `title`, `status`, `detail`, `instance`\n\ (caminho da requisição pública, sem query string) e `code` textual. O código de\ndomínio é preservado quando\ \ disponível; caso contrário, aplica-se o código estável\nassociado ao status. Em 422, `errors` pode conter\ \ listas de mensagens por campo em\nPT-BR. `request_id` aparece somente quando disponível no cabeçalho de correlação.\n\ Nos erros fiscais 4xx, `fiscal_codes`, `cause` e `retryable` podem trazer códigos,\ncausa e possibilidade de\ \ repetição informados pelo emissor. Em 402, `collection`\npode trazer somente o resumo público da assinatura\ \ descrito no schema. Erros 5xx\nsão mascarados e não expõem essas extensões de domínio. Em recusas 422 de PIX\n\ Automático, `eligibility` preserva a disponibilidade, o código do motivo e sua\nexplicação pública, sem dados\ \ privados do provedor.\nOs cabeçalhos do erro, como `Retry-After`, são preservados. Não interprete o texto\ \ de\n`detail` como código de máquina. Confira o schema e os exemplos em cada resposta.\n\n### Acompanhamento\ \ de cobranças e emissões\n\nA API pública não oferece cadastro de webhooks externos para o integrador.\nAcompanhe\ \ a operação por polling com GET em `/charges/{operation}` ou\n`/service-invoices/{operation}`, ou no `status_url`\ \ retornado. Essas consultas são\nsomente leitura. Aguarde entre consultas e respeite os limites e `Retry-After`.\n\ Não reenvie uma emissão para consultar seu estado, especialmente após timeout ou\nresposta `uncertain`: uma\ \ resposta inconclusiva não significa que o provedor não\nrecebeu o pedido. Preserve a identificação e a chave\ \ de idempotência da intenção\noriginal. Uma nova intenção de cobrança deve ter sua própria chave.\n\n## Versões\ \ e compatibilidade\n\nO prefixo `/v1` identifica a versão das rotas; `info.version` identifica a revisão\n\ deste contrato documental. Na revisão 1.1.0, antes do primeiro consumidor,\nas URLs públicas foram substituídas\ \ pelas rotas canônicas definidas em\n`routes/public-api-canonical.json`. As URLs antigas foram removidas, sem\ \ aliases,\nredirecionamentos ou janela de compatibilidade. Os `operationId` foram preservados.\nAdições opcionais\ \ compatíveis podem ser documentadas na mesma versão. Remoção de\ncampo, mudança de tipo, enum ou obrigatoriedade,\ \ alteração de significado e mudança\nde envelope exigem avaliação explícita de compatibilidade e nova versão\ \ ou\nmigração explícita documentada. A migração de erros desta entrega adota\nProblem Details obrigatório para\ \ HTTP 400–599. Não há prazo de descontinuação ou SLA de integração definido por este\ncontrato. Nenhuma operação\ \ é marcada como descontinuada sem plano correspondente.\nConsulte os [Termos de Uso](https://maisgestao.com.br/termos-de-uso)\ \ para as condições\ndo serviço; esta seção não cria garantias comerciais adicionais.\n\n### Changelog — 01/11/2026\ \ — tributação do ISSQN e comércio exterior (NFS-e nacional)\n\n- **Mudança de significado, com migração:**\ \ em `POST /accounts-receivable/{account_receivable}/fiscal-invoice-batches`,\n no `invoice` do facilitador\ \ e no `tributacao_issqn` da tool MCP `emitir_nfse`, `issqn_tributation` diferente de\n `none` passa a valer\ \ para a nota e sobrepõe a categoria e a empresa. Antes, o valor do pedido não mudava a nota.\n Para seguir\ \ a configuração, envie `none` (os exemplos passaram a usar `none`). O campo novo\n `fiscal_config.trib_issqn`\ \ (1 a 4) declara a tributação; os dois com valores diferentes retornam 422. A escolha é\n fiscal: confirme\ \ com o contador.\n- Em `GET /accounts-receivable/{account_receivable}/fiscal-invoice-eligibility`, `issqn_tributation`\ \ devolve `none`\n enquanto a empresa não confirmar a Tributação ISSQN, e o valor da empresa depois de confirmada.\ \ Não copie esse valor\n para a nota: ele sobreporia a categoria e a recorrência. Envie `none` para seguir\ \ a configuração.\n- Campos novos opcionais em `fiscal_config` (nota, categoria, recorrência e facilitador):\ \ `trib_issqn`,\n `tp_imunidade` e os padrões de comércio exterior `comex_md_prestacao`, `comex_mec_af_prestador`,\n\ \ `comex_mec_af_tomador`, `comex_mov_temp_bens` e `comex_mdic`.\n- `comercio_exterior` na nota e no facilitador\ \ (país do resultado, país da prestação, moeda, valor na moeda\n estrangeira, vínculo e números de declaração)\ \ e na recorrência (sem números de declaração, com o valor de\n referência em reais), para a emissão automática.\n\ - Cliente: `comex_vinculo` e `comex_moeda`. País do endereço: código ISO de duas letras da lista de `/countries`,\n\ \ conferido em cliente do exterior (o já gravado é aceito).\n- Configuração fiscal: `issqn_immunity_type`,\ \ `confirmar_issqn_tributation` e o marcador\n `issqn_tributation_confirmada_em` (Tributação ISSQN gravada\ \ antes de 31/10/2026 só vale depois de confirmada).\n- Verificação de pré-requisitos fiscais: bloco `tributacao_issqn`.\n\ - **Mudança de significado do `cause` (Problem Details):** toda recusa da verificação do Mais Gestão antes do\n\ \ envio ao governo passa a vir com `cause` `recusa_antes_do_envio`, e não mais `regra_de_negocio`. Vale para\ \ as\n recusas novas desta entrega e para as que já existiam: competência posterior à emissão (E0015), IBS/CBS,\n\ \ retenção maior que o valor do serviço (E0700/E0701) e as demais da retenção, a conferência da DPS antes do\ \ envio,\n o código de tributação municipal (desdobramento ambíguo ou sem correlação) e o total aproximado\ \ dos tributos.\n `regra_de_negocio` fica só para a rejeição do sistema do governo. As duas continuam com `retryable`\ \ `false`:\n para decidir se repete, use `retryable`, não `cause`, e trate valor de `cause` desconhecido como\ \ definitivo\n quando `retryable` for `false`.\n- `cause` documenta também `classificacao_categoria` (a classificação\ \ de IBS e CBS da categoria falta ou não\n vale; corrigir na categoria), que a API já devolvia.\n- **Códigos\ \ internos em `fiscal_codes`:** as recusas da verificação do Mais Gestão que reusavam códigos do\n governo\ \ passam a vir com códigos próprios `MG-NFSE-*`, que não existem no manual do governo: E0001 vira\n `MG-NFSE-TELEFONE-TOMADOR`\ \ (telefone do cliente) ou `MG-NFSE-RETENCAO-ISSQN` (retenção do ISSQN); E0130 vira\n `MG-NFSE-REGIME-SIMPLES`;\ \ E0702 vira `MG-NFSE-TOTTRIB-VALOR`; E0709 vira `MG-NFSE-TOTTRIB-SN-PERCENTUAL`; E1577\n vira `MG-NFSE-IBSCBS-CLASSIFICACAO`\ \ (com `cause` `classificacao_categoria`); E0223 vira\n `MG-NFSE-ENDERECO-EXTERIOR` ou `MG-NFSE-PAIS-TOMADOR`.\ \ Códigos novos: `MG-NFSE-IBSCBS-CREDITO-PRESUMIDO`,\n `MG-NFSE-PAIS-RESULTADO` e `MG-NFSE-VALOR-MOEDA-RECORRENCIA`.\ \ Trate código desconhecido pelo `cause` e pelo\n `retryable`.\n\n### Changelog — 29/10/2026 — contrato 1.1.0\n\ \n- Rotas públicas canônicas: 144 pares método/path migrados; 539 operationIds, tags,\n segurança, obrigatoriedade\ \ e campos de corpo preservados. URLs anteriores removidas\n antes do primeiro consumidor; rotas internas da\ \ interface e app permanecem internas.\n\n- Descrições de campos e parâmetros enriquecidas por semântica de\ \ domínio.\n- Respostas documentadas por finalidade e exemplos verificados contra schemas.\n- Corrigidos relacionamentos\ \ nulos de contas a pagar, envelope da prévia de\n conciliação e mapas de regras de governança conforme o comportamento\ \ do runtime.\n- Agrupamento de tags e nomes de exibição, preservando identidades de operação.\n- Primeiros\ \ passos de autenticação e consulta por curl, precisão de dinheiro,\n limites de chamadas e acompanhamento\ \ por polling GET.\n- Erros HTTP 400–599 obrigatórios em `application/problem+json` (RFC 9457).\n- Verificação\ \ local reproduzível de exemplos e qualidade da documentação.\n\n\n### Contexto dos campos de entrada e saída\n\ \nNa entrada pública de conta a receber, `type` usa RecurrenceType (`unique`, `installments`, `monthly`, `fortnightly`,\ \ `quarterly`, `semiannually`, `annually`) e é convertido para `recurrence_type`. O `type` da conta retornada\ \ usa ReceivableType (`normal`, `internal_transfer`).\n\nNa saída, `emails[].type` e `phones[].type` são objetos\ \ de catálogo com `id`, `name` e `description`. Apenas `addresses[].type` usa TypeOfPersonalData. Na entrada,\ \ use as chaves exigidas pelo request da operação, sem copiar o objeto da resposta.\n\nO catálogo administrativo\ \ de chaves públicas inclui `api_logs.view`; GET `/permissions` representa a sessão interna e não enumera todas\ \ as permissões da chave pública.\n\nNão há rota pública de refresh de autenticação: obtenha outra chave com\ \ POST /auth/sessions. Documentos fiscais compostos apenas por zeros e a chave CHAVE_FICTICIA_SEM_VALIDADE_NAO_UTILIZAR\ \ são marcadores fictícios, sem validade.\n" servers: - url: https://{tenant}.{host}/public-api/v1 description: API Pública (por tenant) variables: tenant: default: minha-empresa description: Subdomínio do seu tenant. host: default: api.maisgestao.com.br description: Domínio do ambiente. tags: - x-displayName: Autenticação name: Autenticação description: Geração da chave de API temporária (X-Public-API-Key). - x-displayName: Clientes name: Clientes description: Gestão de clientes (PF/PJ), status e documentos anexos. - name: AccountsPayable x-displayName: 'Contas a pagar: cadastro e pagamentos' description: Contas, parcelas, pagamentos e comprovantes de saída. - name: AccountsReceivable x-displayName: 'Contas a receber: cadastro e pagamentos' description: Recebíveis, vencimentos, pagamentos e cancelamentos. - name: PaymentLinks x-displayName: Links de pagamento description: Ativação de recebimentos e cobrança por link de pagamento. - name: AdministrativeDocuments x-displayName: Documentos administrativos description: Documentos vinculados a cadastros, anexos e vigência. - name: Cards x-displayName: 'Cartões: cadastro e despesas' description: Cartões de despesas, faturas e histórico de movimentações. Recebimentos por cartão são configurados em Links de pagamento. - name: Cashboxes x-displayName: Caixas description: Caixas financeiros, saldos, transferências e histórico. - name: DataMigration x-displayName: Importação de arquivos description: Envio de arquivos, validação e acompanhamento de importações. - name: DocumentLote x-displayName: Lotes de documentos description: Geração e download de documentos em lote. - name: Employees x-displayName: Funcionários description: Cadastro, situação e documentos de funcionários. - name: Interns x-displayName: 'Estagiários: cadastro e anexos' description: Cadastro, formação e documentos de estagiários. - name: Partners x-displayName: Sócios description: Cadastro, situação e documentos dos sócios. - name: Logs x-displayName: Logs de auditoria description: Consulta de ações registradas pela API pública. - name: Providers x-displayName: 'Fornecedores: cadastro e anexos' description: Cadastro, contatos e documentos de fornecedores. - name: Reports x-displayName: Relatórios description: Solicitação, acompanhamento e download de relatórios em PDF. - name: Users x-displayName: 'Usuários: cadastro' description: Cadastro e manutenção dos usuários da empresa. - name: BankSlip x-displayName: Boletos description: Emissão, consulta e cancelamento de boletos de contas a receber. - name: CardBills x-displayName: Faturas de cartão description: Consulta de faturas, estatísticas e movimentação de pagamentos. - name: FiscalRps x-displayName: Notas fiscais por recebível description: Emissão, cancelamento e download de NFS-e e RPS. - name: Spreadsheets x-displayName: Planilhas description: Geração e download de planilhas de contas a pagar. - x-displayName: PIX Automático name: PIX Automático description: Elegibilidade, autorizações e instruções de cobrança recorrente por PIX. - description: Receitas, despesas e resultado por período, com exportação dos resultados. x-displayName: Balanços name: Balanços - description: Catálogo de instituições financeiras para vincular contas bancárias e caixas. x-displayName: Bancos name: Bancos - description: Catálogo de benefícios utilizados nos vínculos de funcionários e estagiários. x-displayName: Benefícios name: Benefícios - description: Catálogo de cargos utilizados nos cadastros de pessoas da empresa. x-displayName: Cargos name: Cargos - description: Classificação das receitas e despesas e configuração fiscal das categorias. x-displayName: Categorias name: Categorias - description: Classificação dos pagamentos para organizar a movimentação financeira. x-displayName: Categorias de pagamento name: Categorias de pagamento - description: Códigos de tributação, NBS e classificações utilizados na emissão fiscal. x-displayName: Catálogos fiscais name: Catálogos fiscais - description: Organização dos lançamentos financeiros por unidade de responsabilidade. x-displayName: Centros de custo name: Centros de custo - description: Importação, conferência e vínculo entre extratos bancários e lançamentos do sistema. x-displayName: Conciliação name: Conciliação - description: Preferências operacionais e fiscais da empresa utilizadas pelas integrações. x-displayName: Configurações name: Configurações - description: Consulta cadastral de pessoa jurídica para apoiar o preenchimento de cadastros. x-displayName: Consulta de CNPJ name: Consulta de CNPJ - description: Preparação de contratos, documentos e participantes do fluxo de assinatura. x-displayName: Contratos name: Contratos - description: Consulta e preparação das representações de cobranças para apresentação ao pagador. x-displayName: Cópias de cobranças name: Cópias de cobranças - description: Cadastro, anexos e organização dos documentos da empresa. x-displayName: 'Documentos: exclusão' name: Documentos - description: Catálogos e recursos complementares usados na gestão documental. x-displayName: Documentos auxiliares name: Documentos auxiliares - description: Cadastros de filiais e configurações próprias de endereço e emissão. x-displayName: Filiais name: Filiais - description: Análise de ocorrências financeiras, regras e decisões de acompanhamento. x-displayName: Governança name: Governança - description: Métricas e resumos financeiros da empresa para acompanhamento gerencial. x-displayName: Indicadores name: Indicadores - description: Lançamentos padrão usados para classificar e reconhecer operações financeiras. x-displayName: Contas contábeis name: Contas contábeis - description: Municípios, estados e tipos de contato utilizados nos cadastros. x-displayName: Localidades e contatos name: Localidades e contatos - description: Modelos de mensagens utilizados nos envios e réguas de cobrança. x-displayName: Modelos de comunicação name: Modelos de comunicação - description: Conexões autorizadas com instituições e consulta de movimentações financeiras. x-displayName: Open Finance name: Open Finance - description: Exigências documentais aplicadas aos diferentes tipos de cadastro. x-displayName: Perfis de documentos name: Perfis de documentos - description: Configuração e acompanhamento das séries de lançamentos financeiros. x-displayName: Recorrências name: Recorrências - description: Etapas, condições e modelos para comunicação e cobrança de recebíveis. x-displayName: Réguas de cobrança name: Réguas de cobrança - x-displayName: Atalhos de integração name: Atalhos de integração description: Cliente, recebível e cobrança ou NFS-e em um pedido. - description: Importação, ajustes e demais operações auxiliares dos caixas financeiros. x-displayName: Caixas — operações complementares name: Caixas — operações complementares - description: Conexões e conferência dos lançamentos e pagamentos das faturas de cartões. x-displayName: Cartões — conciliação e conexão name: Cartões — conciliação e conexão - description: Operações em lote, leitura de documentos e preparação de contas a pagar. x-displayName: Contas a pagar — operações complementares name: Contas a pagar — operações complementares - description: Agrupamentos, recorrências e ações adicionais sobre os recebíveis. x-displayName: Contas a receber — operações complementares name: Contas a receber — operações complementares - description: Preparação, acompanhamento e consulta dos documentos fiscais emitidos. x-displayName: Lotes fiscais e reemissão name: Emissões fiscais - description: Consulta do plano e operações de contratação da assinatura da empresa. x-displayName: Assinatura da empresa name: Assinatura da empresa - description: Solicitação e acompanhamento de cópias dos dados da empresa. x-displayName: Backups name: Backups - description: Preferências e limites de consumo dos serviços cobrados por créditos. x-displayName: Configurações de consumo name: Configurações de consumo - description: Consulta de saldo, consumo e recarga de créditos dos serviços da empresa. x-displayName: Créditos name: Créditos - description: Vínculo e gestão dos escritórios com acesso contábil à empresa. x-displayName: Escritórios contábeis name: Escritórios contábeis - description: Operações complementares do cadastro e vínculo acadêmico dos estagiários. x-displayName: 'Estagiários: exigências documentais' name: Estagiários - description: Operações complementares do cadastro e documentos dos fornecedores. x-displayName: 'Fornecedores: documentos e indicadores' name: Fornecedores - description: Importação e acompanhamento da migração dos cadastros da empresa. x-displayName: Exportação e processamento de arquivos name: Migração de dados - description: Consulta e gestão dos avisos enviados aos usuários da empresa. x-displayName: Notificações name: Notificações - description: Catálogo e atribuição das permissões de acesso aos recursos da empresa. x-displayName: Permissões name: Permissões - description: Solicitação e acompanhamento da contratação de certificado digital. x-displayName: Solicitações de certificado name: Solicitações de certificado - description: Operações complementares dos usuários e seus acessos à empresa. x-displayName: 'Usuários: vínculos e segurança' name: Usuários - description: Acompanhamento consolidado e decisões sobre o contexto financeiro da empresa. x-displayName: Órbita financeira name: Órbita financeira - name: Catálogos de integração description: Catálogos de referência para preencher os identificadores de categorias, localidades, bancos e cadastros da integração. x-displayName: Catálogos de integração security: - accessKey: [] apiKey: [] paths: /accounts-payable: get: tags: - AccountsPayable summary: Listar contas a pagar operationId: listAccountsPayable description: 'Sem sort_column: due_date crescente. Com status=paid: last_payment_date decrescente. A listagem geral não promete partição de contas pagas.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - provider - due_date - original_due_date - balance - balance_paid - unit_price - description - document_number - installment - installments - status - type - payment_method - cnpj - reconciled - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: '200': description: Lista paginada de contas a pagar. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractAccountPayableListItem' description: Registros da página atual, serializados pelo Resource da listagem. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links da paginação pública. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação pública. required: - data - links - meta description: Coleção paginada de Resources Laravel; sem remover links/meta do paginator. example: data: - id: 00000000-0000-4000-8000-000000000001 name: Fornecedor exemplo generated_for_entity_type: provider balance: '123.45' balance_paid: '0.00' payment_method: pix due_date: '2027-03-15T03:00:00.000000Z' description: Serviço de consultoria status: pending archived_at: null cost_center_id: null recurrence_id: null recurrence_type: null unit_price: '123.45' deleted_at: null document_number: '1' installment: null installments: null last_payment_date: null payments: [] reconciled: false document_adherence: status: pending score: null range: null color: null critical_count: 0 summary: null analyzed_at: null error_code: null type: normal links: first: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-payable?page=1 last: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-payable?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-payable?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-payable per_page: 25 to: 1 total: 1 '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - AccountsPayable summary: Criar conta a pagar operationId: createAccountPayable description: 'Cria uma conta a pagar e retorna HTTP 201. Permissões exigidas: `accounts.view` + `accounts.create`. `account_standard_launch_id` é obrigatório e aceita somente conta contábil do tipo `payable`. `generated_for_entity` e `generated_for_entity_id` são obrigatórios: toda conta a pagar tem uma pessoa vinculada (`provider`, `employee`, `intern` ou `partner`), ativa e não excluída; sem ela a resposta é **422**. `recurrence_type` é obrigatório: `unique` exige `due_date`; `installments` exige `due_date`, `due_day` e `installments` (1–300), exceto com `payment_method: credit` (cartão de crédito), que dispensa `due_day`: cada parcela cai no mesmo dia da primeira data; os demais tipos recorrentes exigem `due_date` e `due_day` (1–31). Recorrência só com `due_day` retorna **422** e não grava nada. Em `installments`, `unit_price` é o valor TOTAL da compra, não o de cada parcela: R$ 100,00 em 3x gera 33,33 + 33,33 + 33,34 (a diferença de centavos fica na última parcela, e a soma sempre fecha). Compra no cartão de crédito (`payment_method: credit`), única ou parcelada, nasce SEMPRE em aberto, porque pode ser só um provisionamento (despesa futura ou recorrente); sem caixa (`cashbox_id` nulo). Para baixá-la no cartão use o cadastro assistido (`POST /accounts-payable/assisted`) com o bloco `payment` ("Já paga"): na única ele baixa a conta e na parcelada baixa todas as parcelas, cada uma na data do seu vencimento e na fatura do seu ciclo. Cartão inativo é recusado com **422** ("Não é possível cadastrar compra em um cartão inativo."). `limit_date` pode ser enviado no topo ou em `recurrence.limit_date`; o valor do topo tem precedência. O objeto `recurrence` é opcional. Campos condicionados a permissões do usuário: - `cashbox_id`: obrigatório com `cashboxes.view` quando o método não é `credit`. - `category_id`: obrigatório com `categories.view`. - `card_id`: obrigatório com `cards.view` quando `payment_method = credit`. A resposta usa o mesmo recurso de detalhe e atualização, incluindo `generated_for_entity_type` e `generated_for_entity_name`. Valores monetários são strings decimais. Retorna **HTTP 201** em caso de sucesso. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - recurrence_type - unit_price - payment_method - account_standard_launch_id - generated_for_entity - generated_for_entity_id description: "Payload para criação de conta a pagar (POST /accounts-payable).\n\nCampos de recorrência\ \ adicionais dependem do `recurrence_type`:\n- `unique` → `due_date` obrigatório; `due_day`\ \ ignorado.\n- `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`\n \ \ → `due_date` + `due_day` (1-31) obrigatórios.\n- `installments` → `due_date` + `due_day` (1-31)\ \ + `installments` (1-300) obrigatórios. Em `installments`, `unit_price` é o valor TOTAL da compra,\ \ não o de cada parcela: R$ 100,00 em 3x gera 33,33 + 33,33 + 33,34 (a diferença de centavos fica\ \ na última parcela, e a soma sempre fecha). Contas já criadas não mudam.\n\nCampos condicionados\ \ a permissões tenant: `cashbox_id`, `category_id`,\n`account_standard_launch_id`, `card_id` (ver\ \ descrição do endpoint).\n" properties: cost_center_id: type: string format: uuid nullable: true description: Centro de custo desta empresa. No modo múltiplos, informe um centro ativo; no modo único, o padrão é aplicado automaticamente. generated_for_entity: type: string enum: - provider - employee - intern - partner nullable: false description: Tipo do beneficiário. Para sócio, envie partner e informe generated_for_entity_id. generated_for_entity_id: type: string format: uuid nullable: false description: Obrigatório na criação. Na edição omissão preserva pessoa; null não é aceito. recurrence_type: type: string enum: - unique - monthly - fortnightly - quarterly - semiannually - annually - installments description: Tipo de recorrência da conta. unit_price: type: number format: float minimum: 0 description: Obrigatório e positivo. Edição e assistida exigem até duas casas decimais. example: 1500.0 exclusiveMinimum: true payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit - debit_account - money - none description: Método de pagamento. Enum PaymentMethod — ver "Catálogo de enums". example: pix description: type: string maxLength: 500 nullable: true description: Descrição livre da conta. document_number: type: string nullable: true maxLength: 191 description: Número do documento de origem (boleto, nota fiscal). Até 191 caracteres, o mesmo limite em pagar e receber. due_date: type: string format: date description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. example: '2027-08-15' due_day: type: integer description: Base opcional e nullable, inteira, sem faixa universal. Em unique, 0/32 são preservados como valores de campo ignorado. Recorrências exigíveis usam 1..31. Criação parcelada no cartão a pagar permite omitir/null; quando informado nesse ramo, aplica 1..31. Entrada não muda representação string da resposta. nullable: true limit_date: type: string format: date nullable: true description: Data limite para geração de ocorrências recorrentes. installments: type: integer minimum: 1 maximum: 300 description: Número de parcelas — obrigatório para `recurrence_type=installments`. cashbox_id: type: string format: uuid nullable: true description: Obrigatório com cashboxes.view quando payment_method não é credit; não é required universal. category_id: type: string format: uuid nullable: true description: Obrigatório conforme categories.view; categoria de conta a pagar elegível do tenant. account_standard_launch_id: type: string format: uuid description: UUID de uma conta contábil ativa do tipo payable (obrigatório). card_id: type: string format: uuid nullable: true description: UUID do cartão. Obrigatório quando `payment_method=credit` (caso `PaymentMethod::CREDIT_CARD`). allOf: - anyOf: - required: - recurrence_type properties: recurrence_type: enum: - unique description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `unique`.' - required: - recurrence_type - due_day properties: recurrence_type: enum: - monthly - fortnightly - quarterly - semiannually - annually description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - recurrence_type - installments properties: recurrence_type: enum: - installments description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. payment_method: enum: - credit description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `credit`.' due_day: type: integer nullable: true minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - recurrence_type - installments - due_day properties: recurrence_type: enum: - installments description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. payment_method: not: enum: - credit description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. example: recurrence_type: unique unit_price: 100 payment_method: pix due_date: '2026-11-03' account_standard_launch_id: 00000000-0000-4000-8000-000000000001 description: Aluguel escritório agosto cashbox_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000001 generated_for_entity: provider generated_for_entity_id: 00000000-0000-4000-8000-000000000001 responses: '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/ValidationError' '201': description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: 9615a644-7197-5c27-93ff-3e27ee2d377b cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e category_id: 9971a616-770a-50cc-a124-1fa5691762c6 recurrence_id: null account_standard_launch_id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 unit_price: '150.00' balance: '150.00' balance_paid: '0.00' payment_method: pix status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '2092' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 09b39d6a-fa2e-5088-937f-af51d170d022 created_at: '2026-11-01T13:27:08.000000Z' updated_at: '2026-11-01T13:27:08.000000Z' type: normal card_id: null cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: [] receipt: null invoice: null category: id: 9971a616-770a-50cc-a124-1fa5691762c6 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:27:07.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 name: Registro de exemplo type: payable requires_cnpj: false code: '70149' created_at: '2026-11-01T13:27:06.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: null document_adherence: status: pending score: null range: null color: null critical_count: 0 summary: null analyzed_at: null error_code: null revision: 1 analyzed_revision: null algorithm_version: null flags: [] documents: [] evidence: {} '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-payable/{account_payable}: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsPayable summary: Obter conta a pagar operationId: showAccountPayable description: 'Retorna os detalhes de uma conta a pagar. **Permissão exigida:** `accounts.view` ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes da conta a pagar. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: a6448928-1bb6-5e7c-ba96-c3764a558e94 cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e category_id: 9971a616-770a-50cc-a124-1fa5691762c6 recurrence_id: 0ec49a4a-8552-55d7-acf7-a344f89ba5a4 account_standard_launch_id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 unit_price: '150.00' balance: '150.00' balance_paid: '0.00' payment_method: pix status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '2099' installment: null installments: null due_date: '2026-12-15T03:00:00.000000Z' original_due_date: '2026-12-15T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 09b39d6a-fa2e-5088-937f-af51d170d022 created_at: '2026-11-01T13:27:31.000000Z' updated_at: '2026-11-01T13:27:31.000000Z' type: normal card_id: null cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: [] receipt: null invoice: null category: id: 9971a616-770a-50cc-a124-1fa5691762c6 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:27:07.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 name: Registro de exemplo type: payable requires_cnpj: false code: '70149' created_at: '2026-11-01T13:27:06.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: id: 0ec49a4a-8552-55d7-acf7-a344f89ba5a4 account_standard_launch_id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 serviceable_type: null serviceable_id: null unit_price: 150 sequence: 2098 recurrenceFor: account_payable type: monthly installments: 1 due_day: '15' due_date: '2026-12-15T03:00:00.000000Z' limit_date: '2027-04-15T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 09b39d6a-fa2e-5088-937f-af51d170d022 description: Descrição ilustrativa payment_method: pix workflow_id: null pix_mandate_id: null active: 1 flag: 0 created_at: '2026-11-01T13:27:31.000000Z' updated_at: '2026-11-01T13:27:31.000000Z' cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e category_id: 9971a616-770a-50cc-a124-1fa5691762c6 card_id: null retentions: null fiscal_config: null charge_group_id: null cost_center_id: null document_adherence: status: pending score: null range: null color: null critical_count: 0 summary: null analyzed_at: null error_code: null revision: 1 analyzed_revision: null algorithm_version: null flags: [] documents: [] evidence: {} '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - AccountsPayable summary: Editar conta a pagar operationId: updateAccountPayable description: 'Atualiza os dados de uma conta a pagar. **Permissões exigidas:** `accounts.view` + `accounts.update`. `account_standard_launch_id` é obrigatório e aceita somente conta contábil do tipo `payable`. Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. O dia da recorrência pode ser enviado em `recurrence.due_day` ou em `due_day` no primeiro nível. O valor do primeiro nível tem precedência. Se ambos forem omitidos, o dia atual é preservado. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - due_date - payment_method - account_standard_launch_id - unit_price description: 'Payload para edição de conta a pagar (PUT /accounts-payable/{id}). `due_date` e `payment_method` são sempre obrigatórios no update. `unit_price` é opcional. `recurrence` é opcional: omitido, a recorrência preserva o `due_day` atual. ' properties: cost_center_id: type: string format: uuid nullable: true description: Centro de custo desta empresa. No modo múltiplos, informe um centro ativo; no modo único, o padrão é aplicado automaticamente. due_date: type: string format: date description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. example: '2027-09-01' payment_method: type: string description: Método de pagamento (obrigatório). Enum PaymentMethod. example: pix unit_price: type: number format: float description: Obrigatório e positivo. Edição e assistida exigem até duas casas decimais. example: 1500.0 minimum: 0 exclusiveMinimum: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true active: type: integer enum: - 0 - 1 description: Ativo (1) ou inativo (0). recurrence: anyOf: - type: object nullable: true additionalProperties: true properties: due_day: type: integer nullable: true minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - type: array nullable: true items: {} description: 'Entrada gravável usada pela action: recurrence.due_day é fallback do due_day superior e pode atualizar a recorrência real. Opcional; omissão/null/[] preservam os dados existentes. Metadata completa do cliente continua aceita; escalar é 422 errors.recurrence. Se recurrence.due_day vier, deve ser nullable/inteiro entre 1 e 31. Não é campo readOnly.' cashbox_id: description: Obrigatório com cashboxes.view quando payment_method não é credit; não é required universal. type: string format: uuid nullable: true category_id: description: Obrigatório conforme categories.view; categoria de conta a pagar elegível do tenant. type: string format: uuid nullable: true account_standard_launch_id: type: string format: uuid description: UUID de uma conta contábil ativa do tipo payable (obrigatório). card_id: description: UUID do cartão de despesas vinculado à fatura ou lançamento. type: string format: uuid nullable: true generated_for_entity_id: type: string nullable: false description: Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. due_day: type: integer nullable: true description: Base opcional e nullable, inteira, sem faixa universal. Em unique, 0/32 são preservados como valores de campo ignorado. Recorrências exigíveis usam 1..31. Criação parcelada no cartão a pagar permite omitir/null; quando informado nesse ramo, aplica 1..31. Entrada não muda representação string da resposta. installments: type: integer nullable: true description: Base opcional/nullable, numeric|integer. Required e faixa 1..300 somente quando a modalidade informada é installments; fora dela não aplicar limites universais. generated_for_entity: type: string nullable: false description: Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. allOf: - anyOf: - not: required: - recurrence_type - required: - recurrence_type properties: recurrence_type: enum: - unique description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `unique`.' - required: - recurrence_type - due_day properties: recurrence_type: enum: - monthly - fortnightly - quarterly - semiannually - annually description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - recurrence_type - installments - due_day properties: recurrence_type: enum: - installments description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. example: due_date: '2026-11-03' payment_method: pix account_standard_launch_id: 00000000-0000-4000-8000-000000000001 unit_price: 100 description: Aluguel escritório setembro recurrence: due_day: 1 cashbox_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000001 responses: '200': description: Conta atualizada com sucesso. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: 9615a644-7197-5c27-93ff-3e27ee2d377b cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e category_id: 9971a616-770a-50cc-a124-1fa5691762c6 recurrence_id: null account_standard_launch_id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 unit_price: '150.00' balance: '150.00' balance_paid: '0.00' payment_method: pix status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '2092' installment: null installments: null due_date: '2027-01-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 09b39d6a-fa2e-5088-937f-af51d170d022 created_at: '2026-11-01T13:27:08.000000Z' updated_at: '2026-11-01T13:27:39.000000Z' type: normal card_id: null cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: [] receipt: null invoice: null category: id: 9971a616-770a-50cc-a124-1fa5691762c6 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:27:07.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 name: Registro de exemplo type: payable requires_cnpj: false code: '70149' created_at: '2026-11-01T13:27:06.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: null document_adherence: status: pending score: null range: null color: outline critical_count: 0 summary: Nenhum documento anexado para conferir. analyzed_at: '2026-11-01T10:27:10-03:00' error_code: null revision: 3 analyzed_revision: 1 algorithm_version: 2026.09.18-1 flags: [] documents: [] evidence: account: amount: '150.00' due_date: '2026-12-01' creditor_document_masked: 92.335.***/****-** payments: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - AccountsPayable summary: Excluir conta a pagar operationId: deleteAccountPayable description: 'Exclui uma conta a pagar e retorna **204**, sem corpo. **Permissões exigidas:** `accounts.view` + `accounts.delete`. Faturas de cartão não podem ser excluídas; a resposta é **400**. Uma conta paga (ou parcialmente paga) **pode** ser excluída: as baixas dela são estornadas e o saldo de cada caixa volta ao que era antes do pagamento. Não há conta paga que fique fora do caixa. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir conta a pagar. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-payable/{account_payable}/cancellations: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb post: tags: - AccountsPayable summary: Cancelar conta a pagar operationId: cancelAccountPayable description: 'Cancela uma conta a pagar com status `pending` ou `overdue`. **Permissões exigidas:** `accounts.view` + `accounts.update`. Envie `cancel_recurrent=true` para cancelar também as ocorrências futuras da recorrência, ou `false` para cancelar somente esta conta. Um valor não booleano retorna **422** no campo `cancel_recurrent`. Contas em outros estados retornam **403**. Esta operação muda estado e por isso usa **POST** (como o cancelamento de conta a receber). Um `GET` neste caminho não existe mais. ' security: - accessKey: [] apiKey: [] parameters: - name: cancel_recurrent in: query required: false description: 'Se `true`, cancela também as ocorrências futuras da recorrência. Aceita `true`/`false`/`1`/`0`. ' schema: type: boolean responses: '204': description: Cancelar conta a pagar. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /accounts-payable/{account_payable}/invoice: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsPayable summary: Download da nota fiscal operationId: downloadAccountPayableInvoice description: 'Faz o download da nota fiscal de uma conta a pagar, em PDF ou imagem. **Permissão exigida:** `accounts.view`. A resposta contém o arquivo binário. Se o arquivo estiver indisponível, pode retornar **404**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário da nota fiscal (PDF ou imagem). content: application/pdf: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-payable/{account_payable}/payments: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsPayable summary: Listar pagamentos da conta operationId: showAccountPayablePayments description: 'Retorna os pagamentos registrados para uma conta a pagar. **Permissões exigidas:** `accounts.view` + `payments.view` ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de pagamentos (pode ser array vazio). content: application/json: example: - id: 8b9e484f-a2aa-56c3-b2b0-28c7593979d3 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 50 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:28:04.000000Z' updated_at: '2026-11-01T13:28:04.000000Z' cnpj: null cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '721.50' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:18.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false - id: 0630a77a-e3a1-519b-8448-37781fc49393 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 10 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:28:05.000000Z' updated_at: '2026-11-01T13:28:05.000000Z' cnpj: null cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '721.50' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:18.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false - id: bec174a7-516a-588b-8017-56f1857a6d82 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 10 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:28:06.000000Z' updated_at: '2026-11-01T13:28:06.000000Z' cnpj: null cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '721.50' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:18.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false - id: 19bfa18f-2a84-5963-85f4-166994d76032 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 1 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:28:12.000000Z' updated_at: '2026-11-01T13:28:12.000000Z' cnpj: null cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '721.50' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:18.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false schema: type: array items: $ref: '#/components/schemas/PublicContractPayment' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/${ACCOUNT_PAYABLE_ID}/payments\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form-string \"date=${CAMPO_DATE}\" \\\n --form-string \"payment_method=${CAMPO_PAYMENT_METHOD}\"\ \ \\\n --form-string \"value_paid=${CAMPO_VALUE_PAID}\" \\\n --form \"attachmentFileReceipt=@${ARQUIVO_ATTACHMENTFILERECEIPT}\"\ \ \\\n --form \"attachmentFileInvoice=@${ARQUIVO_ATTACHMENTFILEINVOICE}\"" tags: - AccountsPayable summary: Registrar pagamento operationId: storeAccountPayablePayment description: 'Registra um pagamento total ou parcial em uma conta a pagar. **Permissões exigidas:** `accounts.view` + `payments.create`. `value_paid` é o total desembolsado e **já inclui** os acréscimos: para quitar uma conta de 100,00 com juros de 5,00 e multa de 2,50, envie `value_paid: 107.50`, `interest: 5.00` e `penalty: 2.50`. O valor efetivo abatido da conta é `value_paid` menos os acréscimos (`penalty`, `interest`, `charges`, `expedient`, `iof`, `insurance`, `agreement`) e mais `discount_obtained` (o desconto concedido, `discount_granted`, só existe em conta a receber: enviar um valor maior que zero é recusado com **422**). A soma do efetivo com o já pago não pode exceder `unit_price`; caso contrário, a resposta é **400**. Conta cancelada não recebe baixa (**400**), assim como conta já paga. Conta **arquivada** também não recebe baixa manual (**400**, "Esta conta está arquivada. Desarquive a conta antes de registrar a baixa."). A despesa gerada pela tarifa de um recebimento não recebe baixa (**400**). `date` não pode ser futura e todos os campos de dinheiro aceitam no máximo 2 casas decimais (**422**). Envie o cabeçalho `Idempotency-Key` (até 200 caracteres) para repetir a chamada com segurança: duas chamadas com a mesma chave geram uma única baixa e a segunda devolve a conta no estado atual. A mesma chave com outro conteúdo retorna **409** (`code: idempotency_key_reused`); gere uma chave nova para uma operação nova. Sem o cabeçalho, cada chamada é uma baixa nova. A resposta traz a conta já com `status`, `balance` e `balance_paid` depois da baixa. Campos condicionados a permissões do usuário: - `cashbox_id`: obrigatório com `cashboxes.view` quando o método não é cartão. - `card_id`: obrigatório com `cards.view` quando `payment_method=credit`. - `account_standard_launch_id`: opcional, aceita somente conta contábil do tipo `payable`. Quando omitido, preserva a conta contábil atual. - `category_id`: obrigatório com `categories.view` quando a conta não é uma fatura de cartão. Campos auxiliares, como `penalty`, `interest` e `charges`, aceitam valores numéricos maiores ou iguais a zero, ou `null`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - date - payment_method - value_paid description: Dados para registrar um pagamento de conta a pagar. Campos auxiliares numéricos, como `penalty`, `interest` e `charges`, aceitam `null` e valores negativos. properties: date: type: string format: date description: Data civil da baixa, não futura. example: '2027-07-01' payment_method: type: string description: Método de pagamento (obrigatório). Enum PaymentMethod. example: pix enum: - pix - bank_slip - transfer - check - credit - debit - debit_account - money - none value_paid: type: number format: float minimum: 0.01 description: Valor pago neste registro (obrigatório, mínimo 0.01). example: 750.0 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true observation: description: Observações complementares para acompanhamento interno do registro. type: string maxLength: 500 nullable: true identifier: type: string nullable: true description: Identificador externo do pagamento (ex. ID da transação PIX). penalty: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 interest: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 charges: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 expedient: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 iof: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 insurance: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 agreement: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 discount_obtained: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 cashbox_id: type: string format: uuid nullable: true description: UUID da caixa. Condicional à permissão `Cashboxes_View` do token. card_id: type: string format: uuid nullable: true description: UUID do cartão. Condicional à permissão `Cards_View` + `payment_method=credit` (caso `PaymentMethod::CREDIT_CARD`). account_standard_launch_id: type: string format: uuid nullable: true description: Conta contábil do tipo `payable`; opcional. Ausente preserva a atual. category_id: type: string format: uuid nullable: true description: Condicional a `Categories_View` e tipo da conta não ser `CARD_INVOICE`. example: date: '2026-10-01' payment_method: pix value_paid: 50 description: Pagamento parcial julho cashbox_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000001 multipart/form-data: schema: allOf: - type: object required: - date - payment_method - value_paid description: Dados para registrar um pagamento de conta a pagar. Campos auxiliares numéricos, como `penalty`, `interest` e `charges`, aceitam `null` e valores negativos. properties: date: type: string format: date description: Data do pagamento (obrigatório). example: '2027-07-01' payment_method: type: string description: Método de pagamento (obrigatório). Enum PaymentMethod. example: pix value_paid: type: number format: float minimum: 0.01 description: Valor pago neste registro (obrigatório, mínimo 0.01). example: 750.0 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true observation: description: Observações complementares para acompanhamento interno do registro. type: string maxLength: 500 nullable: true identifier: type: string nullable: true description: Identificador externo do pagamento (ex. ID da transação PIX). penalty: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 interest: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 charges: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 expedient: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 iof: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 insurance: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 agreement: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 discount_obtained: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 cashbox_id: type: string format: uuid nullable: true description: UUID da caixa. Condicional à permissão `Cashboxes_View` do token. card_id: type: string format: uuid nullable: true description: UUID do cartão. Condicional à permissão `Cards_View` + `payment_method=credit` (caso `PaymentMethod::CREDIT_CARD`). account_standard_launch_id: type: string format: uuid nullable: true description: Conta contábil do tipo `payable`; opcional. Ausente preserva a atual. category_id: type: string format: uuid nullable: true description: Condicional a `Categories_View` e tipo da conta não ser `CARD_INVOICE`. - type: object properties: attachmentFileReceipt: type: string format: binary description: Comprovante (pdf, jpg, png, jpeg; max 100 MB). attachmentFileInvoice: type: string format: binary description: Nota fiscal (pdf, jpg, png, jpeg; max 100 MB). required: - date - payment_method - value_paid properties: payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit - debit_account - money - none description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `pix`, `bank_slip`, `transfer`, `check`, `credit`, `debit`, `debit_account`, `money`, `none`.' date: type: string format: date description: Data civil da baixa, não futura. value_paid: type: number minimum: 0.01 description: Valor pago na liquidação da conta, em reais. penalty: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. interest: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. charges: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. expedient: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. iof: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. insurance: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. agreement: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. discount_obtained: type: number minimum: 0 nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. example: date: '2026-10-01' payment_method: pix value_paid: 50 cashbox_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000001 responses: '200': description: Conta a pagar atualizada após registrar a baixa (HTTP 200). content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: 477fd76d-f880-56eb-9b5b-bb78209f822b cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e category_id: 9971a616-770a-50cc-a124-1fa5691762c6 recurrence_id: null account_standard_launch_id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 unit_price: '150.00' balance: '100.00' balance_paid: '50.00' payment_method: pix status: partial reconciled: false description: Descrição ilustrativa observation: null document_number: '2116' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 09b39d6a-fa2e-5088-937f-af51d170d022 created_at: '2026-11-01T13:28:03.000000Z' updated_at: '2026-11-01T13:28:04.000000Z' type: normal card_id: null cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: - id: 8b9e484f-a2aa-56c3-b2b0-28c7593979d3 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 50 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:28:04.000000Z' updated_at: '2026-11-01T13:28:04.000000Z' cnpj: null cashbox_id: 6496f889-0ca2-5880-aace-706f5afa4e7e card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '950.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:04.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false receipt: null invoice: null category: id: 9971a616-770a-50cc-a124-1fa5691762c6 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: null cashbox: id: 6496f889-0ca2-5880-aace-706f5afa4e7e name: Registro de exemplo amount: '950.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:27:07.000000Z' updated_at: '2026-11-01T13:28:04.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: e4817671-c7c0-5f4b-8713-b24f2f8285d5 name: Registro de exemplo type: payable requires_cnpj: false code: '70149' created_at: '2026-11-01T13:27:06.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: null document_adherence: status: pending score: null range: null color: outline critical_count: 0 summary: Nenhum documento anexado para conferir. analyzed_at: '2026-11-01T10:28:03-03:00' error_code: null revision: 2 analyzed_revision: 1 algorithm_version: 2026.09.18-1 flags: [] documents: [] evidence: account: amount: '150.00' due_date: '2026-12-01' creditor_document_masked: 92.335.***/****-** payments: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O pagamento informado excede o valor permitido para a conta. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A chave de idempotência foi reutilizada com outro conteúdo. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-payable/{account_payable}/payments/{payment}: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb - name: payment in: path required: true description: UUID do pagamento a excluir. schema: type: string format: uuid example: 9c541dc4-aabb-4eaf-a643-aadd48c0a2fb delete: tags: - AccountsPayable summary: Excluir pagamento operationId: deleteAccountPayablePayment description: 'Exclui um pagamento da conta a pagar e retorna **204**, sem corpo. **Permissões exigidas:** `accounts.view` + `payments.delete`. O pagamento deve pertencer à conta indicada na URL. Um identificador inexistente ou vinculado a outra conta retorna **404**. A baixa de uma transferência entre caixas e a baixa da despesa gerada pela tarifa de um recebimento não podem ser estornadas por aqui (**400**): exclua a transferência, ou altere a tarifa no recebimento. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir pagamento. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Baixas de transferências entre caixas e despesas de tarifa não podem ser estornadas diretamente por esta operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' put: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/${ACCOUNT_PAYABLE_ID}/payments/${PAYMENT_ID}\" \\\n --header\ \ \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept:\ \ application/json' \\\n --form-string \"date=${CAMPO_DATE}\" \\\n --form-string \"payment_method=${CAMPO_PAYMENT_METHOD}\"\ \ \\\n --form-string \"value_paid=${CAMPO_VALUE_PAID}\" \\\n --form-string \"_method=PUT\" \\\n --form\ \ \"attachmentFileInvoice=@${ARQUIVO_ATTACHMENTFILEINVOICE}\" \\\n --form \"attachmentFileReceipt=@${ARQUIVO_ATTACHMENTFILERECEIPT}\"" tags: - Contas a pagar — operações complementares summary: Editar baixa — contas a pagar — operações complementares operationId: financial_put_accounts_payable_account_payable_payments_payment description: 'Permissões exigidas na chave: (accounts.view) e (payments.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A baixa de uma transferência entre caixas e a da despesa gerada pela tarifa de um recebimento não podem ser editadas (400: "A baixa de uma transferência entre caixas não pode ser editada. Exclua a transferência e registre de novo."). Enviar cashbox_id nulo é recusado (422: "Para tirar a baixa do caixa, estorne a baixa.") fora do cartão de crédito; omitir o campo preserva o caixa atual.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: payment in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: date: description: Data civil da baixa. Não futura, exceto para payment_method=credit (parcela futura de cartão de crédito). type: string format: date description: description: Descrição DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. type: string nullable: true maxLength: 500 observation: description: Observação DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. type: string nullable: true maxLength: 191 payment_method: description: Meio de pagamento conforme PaymentMethod; a opção credit não torna card_id editável. type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none value_paid: description: Valor pago em reais, mínimo 0,01 e até duas casas decimais (decimal:0,2). Required e não nulo. Sujeito ao teto de pagamento/recebimento do serviço. type: number minimum: 0.01 multipleOf: 0.01 penalty: description: Multa em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 interest: description: Juros em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 charges: description: Encargos em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 expedient: description: Despesa de expediente em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 iof: description: IOF em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 insurance: description: Seguro em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 agreement: description: Convênio em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 discount_obtained: description: Desconto obtido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. type: number nullable: true minimum: 0 multipleOf: 0.01 attachmentFileInvoice: type: string format: binary description: Arquivo da nota fiscal. Um arquivo real PDF/JPG/JPEG/PNG, nome e extensão validados (Rule::filename/fileExtension), até 102400 KiB (100 MiB). Ausência preserva o anexo existente; campo vazio não pede remoção. Envie por POST multipart com _method=PUT. attachmentFileReceipt: type: string format: binary description: Arquivo da comprovante. Um arquivo real PDF/JPG/JPEG/PNG, nome e extensão validados (Rule::filename/fileExtension), até 102400 KiB (100 MiB). Ausência preserva o anexo existente; campo vazio não pede remoção. Envie por POST multipart com _method=PUT. invoice_password: type: string nullable: true maxLength: 128 description: Senha do PDF da nota fiscal, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. pattern: ^[^\p{C}]*$ receipt_password: type: string nullable: true maxLength: 128 description: Senha do PDF da comprovante, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. pattern: ^[^\p{C}]*$ cashbox_id: description: UUID do caixa financeiro vinculado à operação na empresa autenticada. type: string nullable: true category_id: description: Categoria DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_PAYABLE/PAYABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. type: string nullable: true account_standard_launch_id: description: Lançamento padrão DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_PAYABLE/PAYABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. type: string nullable: true discount_granted: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Desconto concedido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Neste tipo de conta só ausência, null ou zero são aceitos; valor positivo é recusado por DescontoDoTipoDeConta. maximum: 0 _method: type: string enum: - PUT description: 'Override HTTP do transporte: enviar POST multipart na mesma URL com _method=PUT; Laravel captura como PUT antes do roteamento. Não é campo de negócio nem parte de validated().' required: - date - payment_method - value_paid - _method description: 'Editar baixa existente vinculada à conta da URL, no próprio tenant. Campos opcionais não se tornam obrigatórios por aparecerem em exemplos. As guardas de conciliação/movimento e teto de recebimento continuam vigentes. Campos não validados, como card_id, identifier/cnpj, document_number e IDs de anexos, não passam a ser editáveis por existirem no DTO. Transporte de arquivos: POST multipart/form-data com _method=PUT; não pressupõe parser de multipart em PUT direto.' x-source-validation: dinheiro: decimal:0,2; min:0.01 para value_paid, min:0 para ajustes; limites cruzados descritos nos campos não são máximos constantes. ausencia: Somente cashbox_id, category_id, account_standard_launch_id, description, observation preservam via Optional; ajustes monetários comuns têm default null. anexos: Arquivos reais pertencem ao multipart; texto/base64/IDs no JSON não substituem file(). oneOf: - properties: payment_method: enum: - credit description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `credit`.' - properties: payment_method: enum: - pix - bank_slip - transfer - check - debit_account - debit - money - none description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `pix`, `bank_slip`, `transfer`, `check`, `debit_account`, `debit`, `money`, `none`.' cashbox_id: type: string nullable: false description: UUID do caixa financeiro vinculado à operação na empresa autenticada. description: 'Editar baixa de conta a pagar. Para arquivos reais, enviar POST multipart com _method=PUT na mesma URL. Não aceita páginas Images nesta edição: o request e o controller só recebem os dois arquivos únicos. Não importar retenções, gateway_fee ou card_id do DTO compartilhado.' responses: '200': description: Editar baixa — contas a pagar — operações complementares. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: 20000000-0000-4000-8000-000000000010 generated_for_entity: provider generated_for_entity_id: 20000000-0000-4000-8000-000000000004 description: Serviço Exemplo type: normal payment_method: pix origin: manual unit_price: '150.00' balance_paid: '50.00' balance: '100.00' status: partial due_date: '2026-11-10T00:00:00.000000Z' original_due_date: '2026-11-10T00:00:00.000000Z' archived_at: null reconciled: false created_by: 20000000-0000-4000-8000-000000000003 recurrence_id: null category_id: null cashbox_id: null card_id: null account_standard_launch_id: null receipt_attachment_id: null invoice_attachment_id: null document_number: EXEMPLO-001 installment: 1 installments: 1 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: - id: 20000000-0000-4000-8000-000000000011 value_paid: 50 date: '2026-10-29T00:00:00.000000Z' payment_method: pix cashbox_id: null card_id: null user_id: 20000000-0000-4000-8000-000000000003 receipt_attachment_id: null invoice_attachment_id: null agreement: 0 charges: 0 discount_granted: 0 discount_obtained: 0 fed_retention: 0 iss_retention: 0 expedient: 0 insurance: 0 interest: 0 iof: 0 penalty: 0 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' link: null group_item: null user: name: Pessoa Exemplo attachment: null attachment_invoice: null card: null cashbox: null reconciled: false receipt: null invoice: null category: null card: null cashbox: null standard_launch: null generated_for_entity_type: provider generated_for_entity_name: Fornecedor Exemplo generated_for_entity_document: 00000000000191 created_by_name: Pessoa Exemplo recurrence: null document_adherence: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/receipt: parameters: - name: account_payable in: path required: true description: UUID da conta a pagar. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsPayable summary: Download do comprovante operationId: downloadAccountPayableReceipt description: 'Faz o download do comprovante de pagamento em PDF. **Permissão exigida:** `accounts.view`. A resposta contém o arquivo binário. Se o arquivo estiver indisponível, a operação pode retornar **404**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do comprovante (PDF ou imagem). content: application/pdf: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-receivable: get: tags: - AccountsReceivable summary: Listar contas a receber operationId: listAccountsReceivable description: 'Retorna uma lista paginada de contas a receber do tenant. Permissão exigida: `accounts.view`. **Ordenação:** `sort_column` aceita `client`, `due_date`, `original_due_date`, `balance`, `balance_paid`, `unit_price`, `description`, `document_number`, `installment`, `installments`, `status`, `type`, `payment_method`, `reconciled`, `created_at`, `updated_at`. Colunas fora da lista retornam **422** no campo `sort_column`. Use `sort_direction=asc` ou `desc`; quando omitido ou inválido, o sentido é `asc`. ' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - client - due_date - original_due_date - balance - balance_paid - unit_price - description - document_number - installment - installments - status - type - payment_method - reconciled - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: '200': description: Lista paginada de contas a receber. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractAccountReceivableListItem' description: Registros da página atual, serializados pelo Resource da listagem. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links da paginação pública. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação pública. required: - data - links - meta description: Coleção paginada de Resources Laravel; sem remover links/meta do paginator. example: data: - id: 00000000-0000-4000-8000-000000000002 name: Cliente exemplo generated_for_entity_type: client category: null balance: '123.45' balance_paid: '0.00' payment_method: pix due_date: '2027-03-15T03:00:00.000000Z' description: Serviço de consultoria status: pending archived_at: null cost_center_id: null recurrence_id: null recurrence_type: null unit_price: '123.45' retentions: null deleted_at: null document_number: '1' installment: null installments: null last_payment_date: null payments: [] workflow: null flag: 0 has_charge_mail: false has_charge_phone: false cashbox: id: 00000000-0000-4000-8000-000000000001 name: Caixa reconciled: false has_bank_slip: false has_fiscal_rps: false has_aux_documents: false overpaid_amount: '0.00' has_payment_attachments: false links: first: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-receivable?page=1 last: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-receivable?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-receivable?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://your-company.api.maisgestao.com.br/public-api/v1/accounts-receivable per_page: 25 to: 1 total: 1 '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - AccountsReceivable summary: Criar conta a receber operationId: createAccountReceivable description: 'Cria uma conta a receber e retorna HTTP 201. Permissões exigidas: `accounts.view` + `accounts.create`. `cashbox_id` é sempre obrigatório. `account_standard_launch_id` é obrigatório e aceita somente conta contábil do tipo `receivable`. `category_id` é obrigatório quando o usuário tem `categories.view`. Campos condicionais por `type`: - `unique`: `due_date` obrigatório, uma data válida em dia útil. - `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`: `due_day` obrigatório (1–31). - `installments`: `due_date`, `due_day` (1–31) e `installments` (1–300) obrigatórios. Em `installments`, `unit_price` é o valor TOTAL da compra, não o de cada parcela: R$ 100,00 em 3x gera 33,33 + 33,33 + 33,34 (a diferença de centavos fica na última parcela, e a soma sempre fecha). Contas já criadas não mudam. `generated_for_entity` aceita `client`, `provider`, `employee`, `intern` e `partner`. O identificador `generated_for_entity_id` deve pertencer a uma entidade ativa e não excluída do tipo informado. Retorna **HTTP 201** em caso de sucesso. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - type - unit_price - payment_method - generated_for_entity - generated_for_entity_id - account_standard_launch_id - cashbox_id - due_date description: 'Payload para criação de conta a receber. Campos condicionais por `type`: - `unique` → `due_date` obrigatório - `monthly`/`fortnightly`/`quarterly`/`semiannually`/`annually` → `due_day` obrigatório - `installments` → `due_date` + `due_day` + `installments` obrigatórios. Em `installments`, `unit_price` é o valor TOTAL da compra, não o de cada parcela: R$ 100,00 em 3x gera 33,33 + 33,33 + 33,34 (a diferença de centavos fica na última parcela, e a soma sempre fecha). Contas já criadas não mudam. ' properties: cost_center_id: type: string format: uuid nullable: true description: Centro de custo desta empresa. No modo múltiplos, informe um centro ativo; no modo único, o padrão é aplicado automaticamente. type: type: string enum: - unique - installments - monthly - fortnightly - quarterly - semiannually - annually description: Entrada RecurrenceType, convertida para recurrence_type; type retornado normal/internal_transfer é outro enum. unit_price: type: number description: Valor da conta. Deve ser maior que 0 (gt:0). example: 150.0 maximum: 99999999.99 payment_method: type: string description: Método de pagamento (enum PaymentMethod). example: pix enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none due_date: type: string format: date description: 'Data de vencimento. Obrigatório para `type=unique`. Deve ser um dia útil (weekday) e ano válido (ValidWeekday + ValidYear). ' example: '2027-03-03' due_day: type: integer description: Base opcional e nullable, inteira, sem faixa universal. Em unique, 0/32 são preservados como valores de campo ignorado. Recorrências exigíveis usam 1..31. Criação parcelada no cartão a pagar permite omitir/null; quando informado nesse ramo, aplica 1..31. Entrada não muda representação string da resposta. example: 15 nullable: true limit_date: type: string format: date nullable: true description: Data limite para geração das recorrências. installments: type: integer minimum: 1 maximum: 300 description: Número de parcelas. Obrigatório para `type=installments`. generated_for_entity: type: string enum: - client - provider - employee - intern - partner description: Tipo da entidade destinatária; deve estar ativa e não excluída. generated_for_entity_id: type: string format: uuid description: Na edição, ausência preserva a pessoa; null explícito é recusado. nullable: false description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 document_number: type: string nullable: true maxLength: 191 description: Número do documento de origem (boleto, nota fiscal). Até 191 caracteres, o mesmo limite em pagar e receber. observation: description: Observações complementares para acompanhamento interno do registro. type: string nullable: true maxLength: 500 cashbox_id: type: string format: uuid description: UUID da caixa. Sempre obrigatório; deve existir no tenant. category_id: type: string format: uuid nullable: true description: Obrigatório conforme categories.view; não é required universal. account_standard_launch_id: type: string format: uuid description: UUID de uma conta contábil ativa do tipo receivable (obrigatório). allOf: - anyOf: - required: - type properties: type: enum: - unique description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `unique`.' - required: - type - due_day properties: type: enum: - monthly - fortnightly - quarterly - semiannually - annually description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - type - installments - due_day properties: type: enum: - installments description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. example: type: monthly unit_price: 150.0 payment_method: pix due_date: '2026-11-10' generated_for_entity: client generated_for_entity_id: 00000000-0000-4000-8000-000000000001 cashbox_id: 00000000-0000-4000-8000-000000000001 account_standard_launch_id: 9c541dc4-2222-4eaf-a643-aadd48c0a2fb description: Serviço de consultoria observation: Observação interna due_day: 10 category_id: 00000000-0000-4000-8000-000000000001 responses: '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/ValidationError' '201': description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 8b1c5515-be68-5f84-af0b-132970f6952b cashbox_id: 82cacccc-d8e5-5238-a312-2eb8a9a111f7 category_id: fd59cd5d-2295-5903-a221-943794927803 recurrence_id: null account_standard_launch_id: af2224bf-5860-5241-a0a5-50e2cc593efb serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1807' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:06:22.000000Z' updated_at: '2026-11-01T13:06:22.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: [] overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: fd59cd5d-2295-5903-a221-943794927803 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: 82cacccc-d8e5-5238-a312-2eb8a9a111f7 name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:06:19.000000Z' updated_at: '2026-11-01T13:06:19.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: af2224bf-5860-5241-a0a5-50e2cc593efb name: Registro de exemplo type: receivable requires_cnpj: false code: '28782' created_at: '2026-11-01T13:06:20.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /fiscal-invoices/{fiscal_rps}/cancellations: parameters: - name: fiscal_rps in: path required: true description: UUID do RPS a cancelar. Um identificador inexistente retorna 404. schema: type: string format: uuid example: 9c5d0209-62b9-41ee-a65c-46616c55df28 post: tags: - FiscalRps summary: Cancelar RPS / NFS-e operationId: cancelFiscalRps description: 'Solicita o cancelamento de um RPS com status `Attached`. O status passa a `Canceling` enquanto o cancelamento é processado de forma assíncrona. **Permissões exigidas:** `accounts.view` + `fiscal_rps.cancel`. O campo `code` é obrigatório e aceita `"1"` ou `"2"`. Um RPS já cancelado retorna **400**. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CancelFiscalRpsRequest' example: code: '1' responses: 200: description: RPS atualizado com status Canceling. content: application/json: example: id: 9c5d0209-62b9-41ee-a65c-46616c55df28 number: '202424067330000' receipt: '24067330000' year: '2024' verification: null alerts: '' content: null status: canceling operation_nature: '' emission: '2024-06-24 09:40:01' schema: $ref: '#/components/schemas/PublicContractFiscalNoteRaw' 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-receivable/{account_receivable}: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsReceivable summary: Obter conta a receber operationId: showAccountReceivable description: 'Retorna os detalhes de uma conta a receber, incluindo pagamentos, caixa, categoria, recorrência e lotes de RPS. Permissão exigida: `accounts.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes da conta a receber. content: application/json: example: id: ab7424f8-eb69-5c59-a1b7-cbd7af81defd cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1812' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:48.000000Z' updated_at: '2026-11-01T13:30:48.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: [] overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 20355a58-9a53-551c-beb2-3f4e4a606399 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:30:44.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba name: Registro de exemplo type: receivable requires_cnpj: false code: '37720' created_at: '2026-11-01T13:30:44.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - AccountsReceivable summary: Editar conta a receber operationId: updateAccountReceivable description: 'Atualiza os dados de uma conta a receber. **Permissões exigidas:** `accounts.view` + `accounts.update`. `account_standard_launch_id` é obrigatório e aceita somente conta contábil do tipo `receivable`. Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. `type=unique` exige `due_date`; tipos recorrentes exigem `due_day`; `type=installments` exige também `installments` (1–300). Quando `due_day` não é enviado, o valor atual é preservado. Datas de pagamento devem ser datas válidas; expressões relativas, como `tomorrow`, retornam **422**. Quando existe boleto ativo, a edição também pode solicitar sua alteração ao provedor. A conta e a intenção de atualização são gravadas antes dessa solicitação. Se a comunicação falhar ou a resposta não confirmar o mesmo boleto e pedido, retorna **409** com a intenção local preservada; a resposta não significa que a alteração foi desfeita. Consulte a conta e `GET /accounts-receivable/{account_receivable}/bank-slip` antes de solicitar outra alteração. `update_sync_status` é somente leitura: `pending` indica alteração em andamento, `uncertain` indica resultado externo inconclusivo e `synced` indica sincronização confirmada; `null` indica ausência desse acompanhamento. Esse campo não substitui a situação financeira em `status`. Uma tentativa posterior não reenvia a alteração anterior automaticamente. Quando houve mudança de valor ou vencimento, o servidor pode conferir o resultado por consulta autenticada ao provedor, exigindo coincidência de identificador, pedido, valor e vencimento. Uma edição apenas textual ou de pagador com resultado incerto exige conferência pelo suporte, pois essa consulta não comprova todos os campos alterados. Reserva de emissão ainda sem confirmação, outra atualização em andamento ou mudança do boleto vinculado durante a edição retornam **409** antes de alterar a conta. Provedor que não permite editar o boleto por esta operação retorna **422**. Não crie outra cobrança para contornar um resultado incerto. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - type - unit_price - payment_method - account_standard_launch_id description: Dados para atualizar uma conta a receber. As regras condicionais dependem de `type`, conforme os campos do schema. `generated_for_entity_id` aceita `null` na atualização. properties: cost_center_id: type: string format: uuid nullable: true description: Centro de custo desta empresa. No modo múltiplos, informe um centro ativo; no modo único, o padrão é aplicado automaticamente. type: description: Entrada RecurrenceType, convertida para recurrence_type; type retornado normal/internal_transfer é outro enum. type: string enum: - unique - installments - monthly - fortnightly - quarterly - semiannually - annually unit_price: type: number description: Valor da conta. Deve ser maior que 0 (gt:0). maximum: 99999999.99 payment_method: type: string description: Método de pagamento (enum PaymentMethod). enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none due_date: type: string format: date nullable: true description: Obrigatório para `type=unique`. due_day: type: integer nullable: true description: Base opcional e nullable, inteira, sem faixa universal. Em unique, 0/32 são preservados como valores de campo ignorado. Recorrências exigíveis usam 1..31. Criação parcelada no cartão a pagar permite omitir/null; quando informado nesse ramo, aplica 1..31. Entrada não muda representação string da resposta. limit_date: description: Data limite para gerar ou selecionar os lançamentos abrangidos pela operação. type: string format: date nullable: true installments: description: Base opcional/nullable, numeric|integer. Required e faixa 1..300 somente quando a modalidade informada é installments; fora dela não aplicar limites universais. type: integer nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 observation: description: Observações complementares para acompanhamento interno do registro. type: string nullable: true maxLength: 500 generated_for_entity_id: description: Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. type: string format: uuid nullable: false cashbox_id: type: string format: uuid nullable: true description: Obrigatório se o token tiver permissão `cards.view`. category_id: type: string format: uuid nullable: true description: Obrigatório conforme categories.view; não é required universal. account_standard_launch_id: type: string format: uuid description: UUID de uma conta contábil ativa do tipo receivable (obrigatório). generated_for_entity: type: string nullable: false description: Na edição, omitir generated_for_entity e generated_for_entity_id preserva a pessoa atual. Se a conta não tiver pessoa, informe o par. Uma pessoa diferente precisa estar ativa e não excluída, entre os tipos permitidos. Reenviar exatamente o vínculo atual preserva inclusive vínculos legados ou pessoas posteriormente inativadas; ausência de um par válido quando exigido retorna 422. allOf: - anyOf: - required: - type properties: type: enum: - unique description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `unique`.' - required: - type - due_day properties: type: enum: - monthly - fortnightly - quarterly - semiannually - annually description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - type - installments - due_day properties: type: enum: - installments description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. example: type: monthly unit_price: 250.0 payment_method: pix due_date: '2027-04-07' account_standard_launch_id: 9c541dc4-2222-4eaf-a643-aadd48c0a2fb description: Serviço de consultoria — revisado due_day: 10 category_id: 00000000-0000-4000-8000-000000000001 cashbox_id: 00000000-0000-4000-8000-000000000001 responses: '200': description: Conta atualizada com sucesso. content: application/json: example: id: 1a0a8a7e-937f-5e2d-9bd2-a68dea16d9fc cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '250.00' balance: '250.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1872' installment: null installments: null due_date: '2028-07-31T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:54.000000Z' updated_at: '2026-11-01T13:31:50.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: [] overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 20355a58-9a53-551c-beb2-3f4e4a606399 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:30:44.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba name: Registro de exemplo type: receivable requires_cnpj: false code: '37720' created_at: '2026-11-01T13:30:44.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Uma alteração do boleto ainda sem confirmação exige conferência do resultado externo antes de nova alteração. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - AccountsReceivable summary: Excluir conta a receber operationId: deleteAccountReceivable description: 'Exclui uma conta a receber e retorna **204**, sem corpo. **Permissões exigidas:** `accounts.view` + `accounts.delete`. Uma conta paga pode ser excluída: as baixas dela são estornadas e o saldo do caixa volta ao que era antes do recebimento. Conta com boleto ou nota fiscal ativos não pode ser excluída (**400**). ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir conta a receber. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Contas com boleto ou nota fiscal ativos não podem ser excluídas. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /accounts-receivable/{account_receivable}/accounts-with-same-due-date: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsReceivable summary: Contas com mesmo vencimento operationId: accountsWithSameDueDate description: 'Retorna um array de contas a receber com a mesma data de vencimento da conta informada. Permissão exigida: `accounts.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Array de contas com o mesmo vencimento (pode ser vazio). content: application/json: example: - id: 497bfbde-4c01-5a02-aeb3-ce47d2d7a323 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: AUD99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:48.000000Z' updated_at: '2026-11-01T13:30:49.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 1964b240-c142-56a2-8d4f-e00d31dec61b cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1813' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:49.000000Z' updated_at: '2026-11-01T13:30:49.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: db093c37-505c-5da6-8d69-fa02ecdc0d81 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: a5733aaf-e999-5fc8-af5c-c375d5ceb491 account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1817' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:51.000000Z' updated_at: '2026-11-01T13:30:51.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 207b2624-961b-5881-95e3-9be4eb5b5321 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: 04e28492-880a-5286-a4cb-beb53b4863b3 account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1843' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:53.000000Z' updated_at: '2026-11-01T13:30:53.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 4b52a3a4-9f70-59d3-a304-b35f6990b6b3 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '100.00' balance: '100.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1873' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:55.000000Z' updated_at: '2026-11-01T13:30:55.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 5d1ec192-8910-5011-bac0-148e48624a8c cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '100.00' balance: '100.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1874' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:55.000000Z' updated_at: '2026-11-01T13:30:55.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: be418ec9-1d24-5903-80e6-e6a0cb0b9542 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '100.00' balance: '100.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1875' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:56.000000Z' updated_at: '2026-11-01T13:30:56.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 3cc6bc8c-6bab-5c00-8926-aefd6622ee01 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1876' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:56.000000Z' updated_at: '2026-11-01T13:30:56.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: ef659554-8544-5ef1-8d8b-e0f0dbf31ed8 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1877' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:57.000000Z' updated_at: '2026-11-01T13:30:57.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 15987bfe-4ba6-59f5-b303-341635f49a48 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1878' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:57.000000Z' updated_at: '2026-11-01T13:30:57.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 - id: 3b05aae2-b6a2-5118-86aa-2ec769da4cf3 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1879' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:58.000000Z' updated_at: '2026-11-01T13:30:58.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null bank_slip: [] active_rps_amount: 0 schema: type: array items: $ref: '#/components/schemas/PublicContractSameDueDateAccount' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-receivable/{account_receivable}/bank-slip: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. Retorna 404 se não pertencer à empresa. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - BankSlip summary: Listar boletos da conta a receber operationId: listBankSlip description: 'Retorna os boletos vinculados à conta a receber como um array JSON, sem paginação. O array é vazio quando não há boletos. **Permissão exigida:** `accounts.view`. Cada boleto inclui seus dados de identificação, valores, vencimento, status e datas, além de: - `accounts`: contas a receber vinculadas. - `downloadUrl`: URL temporária para download do PDF, válida por uma hora; `null` em reserva de emissão, sem documento disponível ou em PIX puro. Use `number` como identificador do boleto na conciliação da integração. `number`, `digitable` e `link` podem ser `null` enquanto a reserva de emissão aguarda confirmação ou o artefato ainda não está disponível. A presença do registro não comprova emissão concluída. `update_sync_status`, somente leitura, acompanha alterações de um boleto existente: `pending`, `uncertain`, `synced` ou `null` quando não há acompanhamento. Não indica pagamento nem substitui a situação financeira em `status`. Consulte a conta e o boleto após um conflito de edição; uma consulta desta lista não reenvia a alteração ao provedor. ' security: - accessKey: [] apiKey: [] responses: '200': description: Array de boletos (pode ser vazio). content: application/json: example: - accounts: - id: 5d061546-9563-5107-bccd-44f4c01e2ab1 cashbox_id: 472d8f8b-4180-54ea-a638-003b2b0c42f5 category_id: 1fb280f5-a0b3-557f-b236-e633b5d26c7f recurrence_id: null account_standard_launch_id: 33fdfc9c-be16-580b-af23-6b5e1a5943f8 serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1885' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 3650abcd-0b52-54f1-8f3a-143cd539a09e payment_method: bank_slip workflow_id: null flag: 0 created_at: '2026-11-01T13:35:07.000000Z' updated_at: '2026-11-01T13:35:07.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: [] overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 1fb280f5-a0b3-557f-b236-e633b5d26c7f name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: 472d8f8b-4180-54ea-a638-003b2b0c42f5 name: Registro de exemplo amount: '1000.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:34:47.000000Z' updated_at: '2026-11-01T13:34:47.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 33fdfc9c-be16-580b-af23-6b5e1a5943f8 name: Registro de exemplo type: receivable requires_cnpj: false code: '44006' created_at: '2026-11-01T13:34:48.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null id: 5a839040-2e85-574c-9a46-185076e7d28a amount: 150 due_date: '2026-12-01T03:00:00.000000Z' order: 5a839040-2e85-574c-9a46-185076e7d28a number: '76480257' provider_receivable_id: null digitable: 03399.15472 89300.007641 80257.701013 6 16470000015000 pix_copy_paste: null interest: 0 mulct: 0 discount: null link: https://empresa-exemplo.invalid/boletos/925465ee5c53d2068fc2bcbd8b5688ebaac0f1e8 status: pendent replaced_by_id: null issuance_state: null issuance_error: null payment_link_id: null provider: pjbank deleted_at: null created_at: '2026-11-01T13:35:15.000000Z' updated_at: '2026-11-01T13:35:18.000000Z' link_info: null format: boleto_pix update_sync_status: null pix_qr_code: null pix_query_status: null pivot: account_receivable_id: 5d061546-9563-5107-bccd-44f4c01e2ab1 bank_slip_id: 5a839040-2e85-574c-9a46-185076e7d28a downloadUrl: https://empresa-exemplo.invalid/tenant/download-bank-slip/TOKEN-ILUSTRATIVO-SEM-VALIDADE/boleto receipt_url: null schema: type: array items: $ref: '#/components/schemas/PublicContractBankSlip' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - BankSlip summary: Emitir boleto para a conta a receber operationId: storeBankSlip description: 'Emite um boleto para a conta a receber e retorna **201**. **Permissões exigidas:** `accounts.view` + `bank_slip.emit`. Cada conta pode ter somente um boleto ativo. Uma nova emissão enquanto houver boleto não cancelado retorna **400**. O vencimento da conta não pode ser anterior a hoje (data de São Paulo): nesse caso a resposta é **422**. A emissão exige configuração de cobrança e endereço válido do cliente. Parâmetros opcionais de juros e multa (valores padrão: zero): | Campo | Descrição | |-------|-----------| | `type_penalty` | Use `fix` para multa fixa; caso contrário, percentual. | | `penalty` | Valor (R$, com `type_penalty` `fix`) ou percentual de multa, de 0 a 100%. | | `type_tax` | Use `fix` para juros fixos; caso contrário, percentual. | | `tax` | Valor (R$, com `type_tax` `fix`) ou percentual de juros **ao mês**, de 0 a 30% ao mês. | ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object properties: accounts: type: array description: Contas próprias elegíveis; o serviço confere existência e escopo. items: type: string format: uuid minItems: 1 type_penalty: description: Somente fix seleciona valor fixo; demais valores seguem ramo percentual. Tipo numérico não implica rejeição automática. anyOf: - type: string - type: number penalty: type: number description: Valor (R$, com type_penalty fix) ou percentual de multa, de 0 a 100%. example: 2 type_tax: description: Somente fix seleciona valor fixo; demais valores seguem ramo percentual. Tipo numérico não implica rejeição automática. anyOf: - type: string - type: number tax: type: number description: Valor (R$, com type_tax fix) ou percentual de juros ao mês, de 0 a 30% ao mês. example: 1 required: - accounts example: accounts: - 00000000-0000-4000-8000-000000000001 responses: '201': description: Boleto emitido com sucesso. content: application/json: example: id: 62b02ed9-4824-5249-8df5-c4d013141459 amount: 150 due_date: '2026-12-01T03:00:00.000000Z' order: 62b02ed9-4824-5249-8df5-c4d013141459 number: '76480256' provider_receivable_id: null digitable: 03399.15472 89300.007641 80256.901010 1 16470000015000 pix_copy_paste: null interest: 0 mulct: 0 discount: null link: https://empresa-exemplo.invalid/boletos/66712718a5f62af57fe4df08a00e43a807b41dec status: pendent replaced_by_id: null issuance_state: null issuance_error: null payment_link_id: null provider: pjbank deleted_at: null created_at: '2026-11-01T13:35:09.000000Z' updated_at: '2026-11-01T13:35:13.000000Z' link_info: null format: boleto_pix update_sync_status: null pix_qr_code: null pix_query_status: null schema: $ref: '#/components/schemas/PublicContractBankSlipRaw' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A emissão considera a existência de boleto ativo e o resultado informado pelo emissor. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /accounts-receivable/{account_receivable}/bank-slip/data: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - BankSlip summary: Dados da conta para emissão de boleto operationId: showBankSlipAccountData description: 'Retorna os dados da conta a receber para pré-visualização da emissão de boleto. **Permissão exigida:** `accounts.view`. Além dos dados da conta, a resposta inclui: - `client`: dados fiscais e de contato do cliente; `null` quando não há entidade geradora. - `taxes`: tributos da categoria; `null` quando não há categoria ou entidade. - `active_rps_amount`: valor líquido da NFS-e ativa vinculada; zero quando ausente. Não é necessário ter um boleto emitido para consultar estes dados. ' security: - accessKey: [] apiKey: [] responses: '200': description: Dados da conta a receber para emissão de boleto. content: application/json: example: id: 17e0a497-e2bd-58c3-b9bd-80c43ec10433 cashbox_id: 472d8f8b-4180-54ea-a638-003b2b0c42f5 category_id: 1fb280f5-a0b3-557f-b236-e633b5d26c7f recurrence_id: null account_standard_launch_id: 33fdfc9c-be16-580b-af23-6b5e1a5943f8 serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1884' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 3650abcd-0b52-54f1-8f3a-143cd539a09e payment_method: bank_slip workflow_id: null flag: 0 created_at: '2026-11-01T13:35:07.000000Z' updated_at: '2026-11-01T13:35:07.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null client: id: 3650abcd-0b52-54f1-8f3a-143cd539a09e name: Registro de exemplo cpf: '00000000000' cnpj: null type: PF international: false phone: null email: id: ff3cfbc8-32c8-570f-a398-fb1e81bad3a9 email: contato-b6ae0115@example.invalid description: Descrição ilustrativa email_type_id: 64f2cdac-0aee-5f96-8789-089dce2d27c8 deleted_at: null created_at: '2026-11-01T13:35:06.000000Z' updated_at: '2026-11-01T13:35:06.000000Z' pivot: client_id: 3650abcd-0b52-54f1-8f3a-143cd539a09e email_id: ff3cfbc8-32c8-570f-a398-fb1e81bad3a9 email_type: null address: id: 10810def-1315-5407-99ce-39e042dc79ec city_id: '2308' state_id: '11' country: null i_state: null i_city: null type: none zipcode: '30130005' address: Avenida Afonso Pena number: '1500' neighborhood: Centro complement: null description: null pivot: client_id: 3650abcd-0b52-54f1-8f3a-143cd539a09e address_id: 10810def-1315-5407-99ce-39e042dc79ec city: id: '2308' state_id: '11' title: Belo Horizonte iso: 3106200 iso_ddd: 31 status: 2 slug: belo-horizonte population: 2513451 lat: '-19.93752429' long: '-43.92645317' income_per_capita: '1766.47' deleted_at: null created_at: null updated_at: null state: id: '11' title: Minas Gerais letter: MG iso: 31 slug: minas-gerais population: 20997560 created_at: null updated_at: null deleted_at: null taxes: [] active_rps_amount: 0 schema: $ref: '#/components/schemas/PublicContractBankSlipAccountData' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-receivable/{account_receivable}/cancellations: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb post: tags: - AccountsReceivable summary: Cancelar conta a receber operationId: cancelAccountReceivable description: 'Cancela uma conta a receber, alterando seu status para `canceled`. **Permissões exigidas:** `accounts.view` + `accounts.update`. Sem `status` no corpo, cancelar uma conta `pending` retorna **200**. Repetir a chamada em uma conta já cancelada também retorna **200**. Com `status` no corpo, somente contas `pending` e `overdue` podem ser canceladas; contas pagas, parciais ou já canceladas retornam **400**. ' security: - accessKey: [] apiKey: [] requestBody: required: false content: application/json: schema: type: object properties: status: type: string description: 'Opcional. Se presente e a conta não estiver em `pending`, retorna 400. ' example: status: pending responses: 200: description: Conta cancelada com sucesso (ou re-cancelamento idempotente sem `status` no body). content: application/json: example: id: 15987bfe-4ba6-59f5-b303-341635f49a48 cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '150.00' balance_paid: '0.00' status: canceled reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1878' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:57.000000Z' updated_at: '2026-11-01T13:32:53.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: [] overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 20355a58-9a53-551c-beb2-3f4e4a606399 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1496.51' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:50.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba name: Registro de exemplo type: receivable requires_cnpj: false code: '37720' created_at: '2026-11-01T13:30:44.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /accounts-receivable/{account_receivable}/fiscal-invoice-eligibility: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c5d1016-cddb-428a-83c5-2278b93e1674 get: tags: - FiscalRps summary: Verificar pré-requisitos fiscais da conta a receber operationId: checkFiscalRps description: 'Retorna a configuração fiscal da conta a receber: tipo de operação, tributação ISSQN, sistema NFS-e, localização da empresa e dados do tomador. `tributacao_issqn` traz o que a emissão usa da tributação do ISSQN e do comércio exterior: os valores resolvidos pela cadeia (nota > recorrência > categoria > empresa) e o nível de origem de cada um em `origem`; `incidencia`, o local de incidência do ISSQN pelo código nacional do serviço (`EP`, `LP`, `ET`, `sem_incidencia` ou `incerta`); `local_do_tomador` (`brasil`, `exterior` ou `nao_informado`); do cadastro do cliente, o país do endereço, o vínculo e a moeda usual; e os dados de comércio exterior da recorrência, quando a conta tem uma. **Permissões exigidas:** `accounts.view` + `fiscal_rps.view`. Mantenha o endereço e a configuração fiscal da empresa preenchidos para utilizar os recursos de NFS-e. ' security: - accessKey: [] apiKey: [] responses: '200': description: Dados de configuração fiscal da conta a receber. content: application/json: example: id: 85039773-075c-5c56-989d-6ba9e193595a cashbox_id: 82cacccc-d8e5-5238-a312-2eb8a9a111f7 category_id: fd59cd5d-2295-5903-a221-943794927803 recurrence_id: null account_standard_launch_id: af2224bf-5860-5241-a0a5-50e2cc593efb serviceable_type: null serviceable_id: null unit_price: '10.00' balance: '10.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1808' installment: null installments: null due_date: '2026-12-01T03:00:00.000000Z' original_due_date: '2026-12-01T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: b0460cb8-add0-59bb-a368-0726c0e19f73 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:06:24.000000Z' updated_at: '2026-11-01T13:06:24.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null operation_nature: '1' issqn_tributation: none configured: true nfse_system: national classificacao_ibscbs: ibscbs_cindop: null ibscbs_cst: null ibscbs_cclasstrib: null ibscbs_ccredpres: null origem: [] state: Minas Gerais city: Belo Horizonte client: id: b0460cb8-add0-59bb-a368-0726c0e19f73 name: Registro de exemplo cpf: '00000000000' cnpj: null type: PF international: false phone: id: cdf9d149-462b-5e6e-915e-ff6067fc0730 phone: '3100000000' description: Descrição ilustrativa phone_type_id: c2c6b2cb-a4d5-55cd-9327-5480bcfbc799 wpp: false deleted_at: null created_at: '2026-11-01T13:06:24.000000Z' updated_at: '2026-11-01T13:06:24.000000Z' pivot: client_id: b0460cb8-add0-59bb-a368-0726c0e19f73 phone_id: cdf9d149-462b-5e6e-915e-ff6067fc0730 type: null email: id: 1ee8a02c-e7b8-5cfe-b7ef-7c59da6201ce email: contato-b6ae0115@example.invalid description: Descrição ilustrativa email_type_id: 64f2cdac-0aee-5f96-8789-089dce2d27c8 deleted_at: null created_at: '2026-11-01T13:06:24.000000Z' updated_at: '2026-11-01T13:06:24.000000Z' pivot: client_id: b0460cb8-add0-59bb-a368-0726c0e19f73 email_id: 1ee8a02c-e7b8-5cfe-b7ef-7c59da6201ce email_type: null address: id: c7491304-d91f-5654-8996-d44081940d39 city_id: '2308' state_id: '11' country: null i_state: null i_city: null type: none zipcode: '30130000' address: Rua Exemplo number: '100' neighborhood: Centro complement: null description: null pivot: client_id: b0460cb8-add0-59bb-a368-0726c0e19f73 address_id: c7491304-d91f-5654-8996-d44081940d39 city: id: '2308' state_id: '11' title: Belo Horizonte iso: 3106200 iso_ddd: 31 status: 2 slug: belo-horizonte population: 2513451 lat: '-19.93752429' long: '-43.92645317' income_per_capita: '1766.47' deleted_at: null created_at: null updated_at: null state: id: '11' title: Minas Gerais letter: MG iso: 31 slug: minas-gerais population: 20997560 created_at: null updated_at: null deleted_at: null taxes: [] nbs: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: true opcoes: [] motivo: 'Não há correlação municipal cadastrada para a categoria "AUD-oficial1 Categoria receita mvxufxus" no município 3106200. O município exige o código de tributação municipal (cTribMun) e não há linha para o código (sem código): informe o par (cTribNac, cTribMun) na configuração fiscal da categoria.' tributacao_issqn: trib_issqn: null tp_imunidade: null comex_md_prestacao: null comex_mec_af_prestador: null comex_mec_af_tomador: null comex_mov_temp_bens: null comex_mdic: null origem: [] incidencia: incerta local_do_tomador: brasil cliente: country: null comex_vinculo: null comex_moeda: null recorrencia: null schema: $ref: '#/components/schemas/PublicContractFiscalInvoiceEligibility' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' /accounts-receivable/{account_receivable}/fiscal-invoice-batches: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c5d1016-cddb-428a-83c5-2278b93e1674 get: tags: - FiscalRps summary: Listar lotes de RPS da conta a receber operationId: listFiscalRpsLote description: 'Retorna um array com todos os lotes de NFS-e (fiscal_rps_lotes) vinculados à conta a receber informada. Array vazio quando nenhum lote existe. **Permissões exigidas:** `accounts.view` + `fiscal_rps.view` ' security: - accessKey: [] apiKey: [] responses: '200': description: Array de lotes de RPS (pode ser vazio). content: application/json: example: - id: 4db0ee5b-d8ba-5543-909d-928165fcec6b number: '26112088000' protocol: null year: '2026' content: null alerts: null status: P forced: 0 error: null rps: - id: 4a5eeea9-86ba-5b16-a2b7-4f91cf217f1f number: null receipt: '26112089000' year: '2026' verification: null alerts: null content: null status: P operation_nature: null emission: null error: null erro: null parsed_alerts: false erro: null schema: type: array items: $ref: '#/components/schemas/PublicContractFiscalBatch' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' post: tags: - FiscalRps summary: Emitir NFS-e para a conta a receber operationId: storeFiscalRps description: 'Solicita a emissão de Nota Fiscal de Serviço Eletrônica (NFS-e) do padrão nacional e retorna **200** com o lote de RPS criado. O envio ao sistema nacional da NFS-e ocorre de forma assíncrona. **Permissões exigidas:** `accounts.view` + `fiscal_rps.emit`. A empresa deve ter endereço e configuração fiscal completos e **certificado digital configurado** no emissor (a filial informada ou a matriz). O `value` deve ser maior que zero e **não pode superar o valor da conta** (emissão parcial, menor que a conta, é permitida). Dados inválidos, valor fora dessa faixa ou emissor sem certificado retornam **422**. Se já existir um lote com status `Attached`, uma nova emissão retorna **400**. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object description: Dados de emissão. As configurações fiscais enviadas valem somente para esta nota. required: - tax - city_iso - issqn - cst - use_issqn - issqn_tributation - value - with_merge - retentions properties: comercio_exterior: type: object nullable: true additionalProperties: false description: 'Dados de comércio exterior desta nota (grupo comExt da DPS). Todos opcionais: o que a nota exige é conferido na emissão, que recusa antes do envio com o código oficial (por exemplo, E0330, E0590 ou E0591). Os padrões (modo de prestação, mecanismos, movimentação e MDIC) ficam em fiscal_config.' properties: pais_resultado: description: 'País onde o resultado do serviço se verifica (cPaisResult): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ.' type: string pattern: ^[A-Z]{2}$ nullable: true pais_prestacao: description: 'País da prestação do serviço no exterior (cPaisPrestacao): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ; para prestação no Brasil, omita.' type: string pattern: ^[A-Z]{2}$ nullable: true moeda: description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' type: string pattern: ^[0-9]{3}$ nullable: true valor: description: 'Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros e 2 decimais, sem zero à esquerda. Acima de 9999999999999.99, envie como texto. O produto não converte câmbio: value continua em reais.' anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true vinculo: description: 'Vínculo entre a sua empresa e o cliente (vincPrest): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. O comex_vinculo do cadastro do cliente, quando existe, prevalece.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true n_di: description: Número da declaração de importação (nDI), até 12 caracteres. Exigido com comex_mov_temp_bens 2; proibido com 1. type: string maxLength: 12 nullable: true n_re: description: Número do registro de exportação (nRE), até 12 caracteres. Exigido com comex_mov_temp_bens 3; proibido com 1. type: string maxLength: 12 nullable: true tax: type: string format: uuid description: Identificador de código tributário municipal ou nacional, consultável em /tax-code. nullable: false nbs: type: string format: uuid nullable: true description: Identificador NBS, consultável em /nbs. city_iso: type: string description: Código do município, consultável em /cities. example: '3106200' issqn: type: number minimum: 0 description: Alíquota ISSQN. example: 0 cst: type: integer minimum: 0 maximum: 9 description: Situação tributária do campo legado da emissão; fiscal_config.cst admite a configuração por nota com dois dígitos. example: 0 nullable: false use_issqn: description: Indica se o cálculo fiscal deve considerar o ISSQN informado. type: boolean example: false issqn_tributation: description: 'Campo legado da tributação do ISSQN. `none` segue a configuração (recorrência, categoria e empresa); os demais valem para esta nota e sobrepõem a categoria e a empresa. Prefira fiscal_config.trib_issqn; os dois com valores diferentes retornam 422. A escolha é fiscal: confirme com o contador. Opções: `none`, `taxable_operation`, `service_export`, `non_incident`, `immunity`.' type: string enum: - none - taxable_operation - service_export - non_incident - immunity example: none value: type: number exclusiveMinimum: 0 description: Valor do serviço em reais. Maior que zero e no máximo o valor da conta. example: 100.0 with_merge: type: boolean description: Solicita agrupamento conforme as regras de emissão. example: false retentions: type: integer enum: - 0 - 1 description: 'Aplicação de retenções: 0 desabilita e 1 habilita.' example: 0 competence: type: string format: date description: Data da competência. Recomenda-se informá-la explicitamente; quando omitida, é usada a data atual. example: '2026-10-04' subsidiary: type: string format: uuid nullable: true description: Filial emissora da própria empresa. nif: description: Número de identificação fiscal no país da pessoa domiciliada no exterior. type: string nullable: true require_nif: description: Classificação da exigência de identificação fiscal estrangeira utilizada na emissão. type: integer minimum: 0 maximum: 3 pis: description: Retenção de PIS aplicada ao serviço; consulte o tipo numérico e a configuração fiscal da emissão. type: number cofins: description: Retenção de COFINS aplicada ao serviço; consulte a configuração fiscal da emissão. type: number ir: description: Retenção de Imposto de Renda aplicada ao serviço. type: number csll: description: Retenção de CSLL aplicada ao serviço. type: number inss: description: Retenção previdenciária de INSS aplicada ao serviço. type: number others: description: Outras retenções tributárias aplicadas ao serviço. type: number substitution: type: object description: Substituição de nota anterior da própria empresa. Exige também permissão de cancelamento fiscal. required: - replaces_id - reason_code properties: replaces_id: description: UUID do documento fiscal substituído pela nova emissão. type: string format: uuid reason_code: description: 'Código do motivo de cancelamento ou substituição no catálogo aceito pelo emissor. Opções: `01`, `02`, `03`, `04`, `05`, `99`.' type: string enum: - '01' - '02' - '03' - '04' - '05' - '99' reason: type: string minLength: 15 maxLength: 255 nullable: true description: Obrigatória quando reason_code é 99. fiscal_config: type: object nullable: true description: Configuração desta emissão, com precedência sobre recorrência, categoria e empresa. Valores nulos herdam a configuração anterior. properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true example: tax: 9c5d1016-cddb-428a-83c5-2278b93e1674 city_iso: '1100015' issqn: 0 cst: 7 use_issqn: false issqn_tributation: none value: 100.0 with_merge: false retentions: 0 competence: '2024-06-24' responses: '200': description: Lote de RPS criado com sucesso. content: application/json: example: number: '26112088000' year: 2026 id: 4db0ee5b-d8ba-5543-909d-928165fcec6b schema: $ref: '#/components/schemas/PublicContractFiscalBatchRaw' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Uma conta com nota fiscal válida não aceita uma emissão duplicada. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-receivable/{account_receivable}/fiscal-invoice-batches/{fiscal_rps_lote_id}/{rps_id}/pdf: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c5d1016-cddb-428a-83c5-2278b93e1674 - name: fiscal_rps_lote_id in: path required: true description: Identificador do lote de RPS. schema: type: string format: uuid example: 9c5d0209-5e8c-41fa-9a02-505b4ba950a2 - name: rps_id in: path required: true description: Identificador do RPS. schema: type: string format: uuid example: 9c5d0209-62b9-41ee-a65c-46616c55df28 get: tags: - FiscalRps summary: Download da NF-e em PDF operationId: downloadNfe description: 'Faz o download do PDF da NFS-e. **Permissões exigidas:** `accounts.view` + `fiscal_rps.print`. A nota deve ter os dados fiscais disponíveis para geração do documento. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do PDF da NF-e. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' /accounts-receivable/{account_receivable}/fiscal-invoice-batches/{fiscal_rps_lote_id}/{rps_id}/xml: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c5d1016-cddb-428a-83c5-2278b93e1674 - name: fiscal_rps_lote_id in: path required: true description: Identificador do lote de RPS. schema: type: string format: uuid example: 9c5d0209-5e8c-41fa-9a02-505b4ba950a2 - name: rps_id in: path required: true description: Identificador do RPS. schema: type: string format: uuid example: 9c5d0209-62b9-41ee-a65c-46616c55df28 get: tags: - FiscalRps summary: Download do XML da NFS-e operationId: downloadXml description: 'Faz o download do XML do lote de NFS-e, com tipo de conteúdo `application/xml`. **Permissões exigidas:** `accounts.view` + `fiscal_rps.print`. O lote e o RPS informados devem existir e pertencer à conta indicada. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo XML da NFS-e. content: application/xml: schema: type: string example: test '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' /accounts-receivable/{account_receivable}/payments: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - AccountsReceivable summary: Listar pagamentos da conta operationId: showAccountReceivablePayments description: description na baixa altera o histórico da conta a receber. Ausência preserva a descrição da conta; null explícito limpa a descrição. O pagamento não possui descrição própria prometida por esta operação. security: - accessKey: [] apiKey: [] responses: '200': description: Array de pagamentos (pode ser vazio). content: application/json: example: - id: 5bc5f842-cb51-5de3-abd2-8aeda5e3d824 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 50 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:32:08.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' cnpj: null cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1050.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false schema: type: array items: $ref: '#/components/schemas/PublicContractPayment' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - AccountsReceivable summary: Registrar pagamento operationId: storeAccountReceivablePayment description: 'Registra um pagamento para a conta a receber. **Permissões exigidas:** `accounts.view` + `payments.create`. `value_paid` é o total recebido e **já inclui** os acréscimos: para quitar uma conta de 100,00 com juros de 5,00 e multa de 2,50, envie `value_paid: 107.50`, `interest: 5.00` e `penalty: 2.50`. O efetivo abatido da conta é `value_paid` menos os acréscimos, mais `discount_granted` (o desconto concedido quita junto: conta de 100,00 com juros de 5,00, multa de 2,00 e desconto concedido de 3,00 fica quitada com `value_paid: 104.00`), mais `fed_retention`, `iss_retention` e `gateway_fee`. O desconto obtido (`discount_obtained`) só existe em conta a pagar: enviar um valor maior que zero é recusado com **422**. Contas totalmente pagas, contas canceladas e pagamentos cuja soma exceda `unit_price` retornam **400**. `category_id` é obrigatório quando o usuário tem `categories.view`. `date` não pode ser futura e os campos de dinheiro aceitam no máximo 2 casas decimais (**422**). Cada retenção (`fed_retention`, `iss_retention`) e a soma delas não podem passar de `value_paid` (**422**). Os campos de acréscimo e desconto não aceitam valores negativos. Envie o cabeçalho `Idempotency-Key` (até 200 caracteres) para repetir a chamada com segurança: duas chamadas com a mesma chave geram uma única baixa e a segunda devolve a conta no estado atual. A mesma chave com outro conteúdo retorna **409** (`code: idempotency_key_reused`); gere uma chave nova para uma operação nova. Sem o cabeçalho, cada chamada é uma baixa nova. A resposta traz a conta já com `status`, `balance` e `balance_paid` depois da baixa. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - date - payment_method - value_paid description: Dados para registrar um pagamento. `account_standard_launch_id` é opcional, aceita somente conta contábil do tipo `receivable` e, quando omitido, preserva a conta contábil atual. properties: date: type: string description: Data do pagamento (string — validado como `string`, não como `date`). example: '2026-08-01' payment_method: type: string description: Método de pagamento (enum PaymentMethod). example: pix value_paid: type: number minimum: 0.01 description: Valor pago. Deve ser maior que 0 (min:0.01). example: 50.0 account_standard_launch_id: type: string format: uuid nullable: true description: Conta contábil do tipo `receivable`; opcional. Ausente preserva a atual. penalty: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 interest: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 charges: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 expedient: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 iof: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 insurance: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 agreement: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 discount_granted: description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. type: number nullable: true minimum: 0 fed_retention: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 iss_retention: type: number nullable: true description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. minimum: 0 gateway_fee: type: number nullable: true minimum: 0 description: Valor monetário não negativo, com no máximo duas casas decimais; null é aceito quando o campo é opcional. description: description: description na baixa altera o histórico da conta a receber. Ausência preserva a descrição da conta; null explícito limpa a descrição. O pagamento não possui descrição própria prometida por esta operação. type: string nullable: true maxLength: 500 observation: description: Observações complementares para acompanhamento interno do registro. type: string nullable: true maxLength: 500 cashbox_id: type: string format: uuid nullable: true description: UUID da caixa de destino do pagamento (opcional, `exists` valida se fornecido). category_id: type: string format: uuid nullable: true description: 'UUID da categoria. Obrigatório se o token tiver permissão `categories.view`. Validado com `exists` em `categories` (whereNull deleted_at) se fornecido. ' example: date: '2026-08-01' payment_method: pix value_paid: 50.0 penalty: null interest: null charges: null description: Histórico atualizado da conta cashbox_id: null category_id: null responses: '200': description: 'Pagamento registrado. Retorna os dados atualizados da conta (não apenas o pagamento). ' content: application/json: example: id: ab7424f8-eb69-5c59-a1b7-cbd7af81defd cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '100.00' balance_paid: '50.00' status: partial reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1812' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:48.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: - id: 5bc5f842-cb51-5de3-abd2-8aeda5e3d824 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 50 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:32:08.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' cnpj: null cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1050.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 20355a58-9a53-551c-beb2-3f4e4a606399 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1050.00' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:08.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba name: Registro de exemplo type: receivable requires_cnpj: false code: '37720' created_at: '2026-11-01T13:30:44.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Contas já pagas, valores superiores ao saldo e contas arquivadas podem impedir a baixa manual; o recebimento do provedor preserva seu tratamento específico. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A chave de idempotência foi reutilizada com outro conteúdo. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-receivable/{account_receivable}/payments/{payment}: parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb - name: payment in: path required: true description: UUID do pagamento. schema: type: string format: uuid example: 9c541dc4-ffff-4eaf-a643-aadd48c0a2fb put: tags: - AccountsReceivable summary: Editar pagamento operationId: updateAccountReceivablePayment description: 'Atualiza um pagamento da conta a receber. **Permissões exigidas:** `accounts.view` + `payments.update`. O pagamento deve pertencer à conta indicada na URL. Dados inválidos retornam **422**, com os erros de validação no corpo. A baixa de uma transferência entre caixas não pode ser editada (**400**: "A baixa de uma transferência entre caixas não pode ser editada. Exclua a transferência e registre de novo."). Enviar `cashbox_id` nulo é recusado (**422**: "Para tirar a baixa do caixa, estorne a baixa."); omitir o campo preserva o caixa atual. Informar `gateway_fee` maior que zero gera, e este endpoint ajusta, a despesa paga "Tarifas financeiras" sem movimentar caixa. Omitir `gateway_fee` preserva a tarifa atual; enviar `null` ou `0` limpa a tarifa e remove a despesa derivada. A tarifa efetiva, inclusive a preservada por omissão, deve ser menor ou igual ao novo `value_paid` (valor líquido recebido). Se exceder, retorna **422** em `errors.gateway_fee`, sem alterar conta, baixa, caixa ou despesa derivada. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: example: date: '2026-10-01' payment_method: pix value_paid: 50 schema: type: object properties: payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none description: Meio de pagamento conforme PaymentMethod; a opção credit não torna card_id editável. date: type: string format: date description: Data civil da baixa, não futura. value_paid: type: number minimum: 0.01 multipleOf: 0.01 description: Valor pago em reais, mínimo 0,01 e até duas casas decimais (decimal:0,2). Required e não nulo. Sujeito ao teto de pagamento/recebimento do serviço. penalty: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Multa em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. interest: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Juros em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. charges: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Encargos em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. expedient: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Despesa de expediente em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. iof: type: number nullable: true minimum: 0 multipleOf: 0.01 description: IOF em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. insurance: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Seguro em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. agreement: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Convênio em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. discount_granted: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Desconto concedido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. discount_obtained: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Desconto obtido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Neste tipo de conta só ausência, null ou zero são aceitos; valor positivo é recusado por DescontoDoTipoDeConta. maximum: 0 fed_retention: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Retenção federal em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Não pode exceder value_paid; a soma fed_retention + iss_retention também não pode exceder value_paid (validação cruzada do request, 422). iss_retention: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Retenção de ISS em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Não pode exceder value_paid; a soma fed_retention + iss_retention também não pode exceder value_paid (validação cruzada do request, 422). description: type: string nullable: true maxLength: 500 description: Descrição DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. observation: type: string nullable: true maxLength: 191 description: Observação DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. cashbox_id: type: string nullable: false description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true description: Categoria DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_RECEIVABLE/RECEIVABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. account_standard_launch_id: type: string nullable: true description: Lançamento padrão DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_RECEIVABLE/RECEIVABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. invoice_password: type: string nullable: true maxLength: 128 pattern: ^[^\p{C}]*$ description: Senha do PDF da nota fiscal, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. receipt_password: type: string nullable: true maxLength: 128 pattern: ^[^\p{C}]*$ description: Senha do PDF da comprovante, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. gateway_fee: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Tarifa de gateway em reais; até duas casas decimais, não maior que value_paid. Ausência preserva por Optional; null ou zero limpa a tarifa e remove a despesa derivada. A tarifa efetiva preservada também deve caber no novo value_paid (422 em gateway_fee). Valor positivo sincroniza a despesa paga de tarifa, sem movimentar caixa; integra o teto do serviço. required: - date - payment_method - value_paid description: Editar baixa existente vinculada à conta da URL, no próprio tenant. Campos opcionais não se tornam obrigatórios por aparecerem em exemplos. As guardas de conciliação/movimento e teto de recebimento continuam vigentes. Campos não validados, como card_id, identifier/cnpj, document_number e IDs de anexos, não passam a ser editáveis por existirem no DTO. x-source-validation: dinheiro: decimal:0,2; min:0.01 para value_paid, min:0 para ajustes; limites cruzados descritos nos campos não são máximos constantes. ausencia: Somente cashbox_id, category_id, account_standard_launch_id, description, observation, gateway_fee preservam via Optional; ajustes monetários comuns têm default null. anexos: Arquivos reais pertencem ao multipart; texto/base64/IDs no JSON não substituem file(). x-docs-example-note: 'Exemplo restrito aos três campos declarados e required do schema JSON atual: data civil não futura, enum pix e valor numérico positivo com até duas casas decimais. Substitua {account_receivable} e {payment} por IDs existentes do próprio tenant, com a baixa pertencente à conta; nenhum recurso foi provisionado. Ajuste valor/data às guardas reais, inclusive teto de recebimento, tarifa preservada e conciliação. cashbox_id e category_id foram omitidos do exemplo porque não constam deste schema JSON; o request/serviço atual possui suporte a eles, sem alteração dessa regra. description, quando enviada no fluxo real, edita a CONTA, não a baixa: ausência preserva, texto informado atualiza, null explícito limpa; observation segue a mesma semântica. Ambos ficam omitidos neste corpo por não constarem do schema JSON atual. document_number não é aceito por este UpdatePaymentRequest e não é exemplo de campo editável aqui.' multipart/form-data: schema: type: object properties: payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none description: Meio de pagamento conforme PaymentMethod; a opção credit não torna card_id editável. date: type: string format: date description: Data civil da baixa, não futura. value_paid: type: number minimum: 0.01 multipleOf: 0.01 description: Valor pago em reais, mínimo 0,01 e até duas casas decimais (decimal:0,2). Required e não nulo. Sujeito ao teto de pagamento/recebimento do serviço. penalty: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Multa em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. interest: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Juros em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. charges: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Encargos em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. expedient: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Despesa de expediente em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. iof: type: number nullable: true minimum: 0 multipleOf: 0.01 description: IOF em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. insurance: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Seguro em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. agreement: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Convênio em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. discount_granted: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Desconto concedido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. discount_obtained: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Desconto obtido em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Neste tipo de conta só ausência, null ou zero são aceitos; valor positivo é recusado por DescontoDoTipoDeConta. maximum: 0 fed_retention: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Retenção federal em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Não pode exceder value_paid; a soma fed_retention + iss_retention também não pode exceder value_paid (validação cruzada do request, 422). iss_retention: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Retenção de ISS em reais, mínimo zero e até duas casas decimais. Ausência e null resultam em null no DTO e na atualização da baixa; este campo não usa Optional e não promete preservar o valor anterior. Não pode exceder value_paid; a soma fed_retention + iss_retention também não pode exceder value_paid (validação cruzada do request, 422). description: type: string nullable: true maxLength: 500 description: Descrição DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. observation: type: string nullable: true maxLength: 191 description: Observação DA CONTA, não da baixa. Ausência preserva por Optional; texto informado atualiza; null explícito limpa. String vazia é convertida para null pelo middleware. cashbox_id: type: string nullable: false description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true description: Categoria DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_RECEIVABLE/RECEIVABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. account_standard_launch_id: type: string nullable: true description: Lançamento padrão DA CONTA. ID existente no catálogo do próprio tenant, não excluído e do tipo ACCOUNT_RECEIVABLE/RECEIVABLE correspondente ao campo. Ausência preserva por Optional; ID informado atualiza; null explícito limpa. Não é coluna editável da baixa. invoice_password: type: string nullable: true maxLength: 128 pattern: ^[^\p{C}]*$ description: Senha do PDF da nota fiscal, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. receipt_password: type: string nullable: true maxLength: 128 pattern: ^[^\p{C}]*$ description: Senha do PDF da comprovante, sem caracteres Unicode da categoria C. Opcional; DTO usa string vazia por omissão, não Optional. Sem arquivo/páginas novos o serviço preserva o anexo atual; senha não é ID nem remoção de anexo. gateway_fee: type: number nullable: true minimum: 0 multipleOf: 0.01 description: Tarifa de gateway em reais; até duas casas decimais, não maior que value_paid. Ausência preserva por Optional; null ou zero limpa a tarifa e remove a despesa derivada. A tarifa efetiva preservada também deve caber no novo value_paid (422 em gateway_fee). Valor positivo sincroniza a despesa paga de tarifa, sem movimentar caixa; integra o teto do serviço. attachmentFileInvoice: type: string format: binary description: Arquivo da nota fiscal. Um arquivo real PDF/JPG/JPEG/PNG, nome e extensão validados (Rule::filename/fileExtension), até 102400 KiB (100 MiB). Ausência preserva o anexo existente; campo vazio não pede remoção. Envie por POST multipart com _method=PUT. nullable: true attachmentFileInvoiceImages: type: array maxItems: 20 items: type: string format: binary description: 'Página real JPG/JPEG/PNG: required, image (conteúdo decodificável), mimes:jpg,jpeg,png, até 102400 KiB.' description: 'Até 20 páginas da nota fiscal, na ordem de captura; convertidas em um PDF. Ausência ou lista vazia preserva o anexo. Não envie junto com attachmentFileInvoice: withValidator recusa arquivo e páginas simultâneos (422). Um campo de arquivo único com array também é recusado. A fonte é file(), nunca texto JSON ou base64.' attachmentFileReceipt: type: string format: binary description: Arquivo da comprovante. Um arquivo real PDF/JPG/JPEG/PNG, nome e extensão validados (Rule::filename/fileExtension), até 102400 KiB (100 MiB). Ausência preserva o anexo existente; campo vazio não pede remoção. Envie por POST multipart com _method=PUT. nullable: true attachmentFileReceiptImages: type: array maxItems: 20 items: type: string format: binary description: 'Página real JPG/JPEG/PNG: required, image (conteúdo decodificável), mimes:jpg,jpeg,png, até 102400 KiB.' description: 'Até 20 páginas da comprovante, na ordem de captura; convertidas em um PDF. Ausência ou lista vazia preserva o anexo. Não envie junto com attachmentFileReceipt: withValidator recusa arquivo e páginas simultâneos (422). Um campo de arquivo único com array também é recusado. A fonte é file(), nunca texto JSON ou base64.' _method: type: string enum: - PUT description: 'Override HTTP do transporte: enviar POST multipart na mesma URL com _method=PUT; Laravel captura como PUT antes do roteamento. Não é campo de negócio nem parte de validated().' required: - date - payment_method - value_paid - _method description: 'Editar baixa existente vinculada à conta da URL, no próprio tenant. Campos opcionais não se tornam obrigatórios por aparecerem em exemplos. As guardas de conciliação/movimento e teto de recebimento continuam vigentes. Campos não validados, como card_id, identifier/cnpj, document_number e IDs de anexos, não passam a ser editáveis por existirem no DTO. Transporte de arquivos: POST multipart/form-data com _method=PUT; não pressupõe parser de multipart em PUT direto.' x-source-validation: dinheiro: decimal:0,2; min:0.01 para value_paid, min:0 para ajustes; limites cruzados descritos nos campos não são máximos constantes. ausencia: Somente cashbox_id, category_id, account_standard_launch_id, description, observation, gateway_fee preservam via Optional; ajustes monetários comuns têm default null. anexos: Arquivos reais pertencem ao multipart; texto/base64/IDs no JSON não substituem file(). description: Edição da baixa com JSON para dados ou POST multipart com _method=PUT para arquivos reais. Mesmas regras de negócio nos dois formatos; JSON não envia binários. O pagamento deve pertencer à conta do tenant autenticado. responses: '200': description: Pagamento atualizado. content: application/json: example: id: ab7424f8-eb69-5c59-a1b7-cbd7af81defd cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 category_id: 20355a58-9a53-551c-beb2-3f4e4a606399 recurrence_id: null account_standard_launch_id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba serviceable_type: null serviceable_id: null unit_price: '150.00' balance: '55.00' balance_paid: '95.00' status: partial reconciled: false description: Descrição ilustrativa observation: Descrição ilustrativa document_number: '1812' installment: null installments: null due_date: '2028-07-10T03:00:00.000000Z' original_due_date: '2028-07-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 7bc125d9-8163-53ff-a5a7-0f07faf6c601 payment_method: pix workflow_id: null flag: 0 created_at: '2026-11-01T13:30:48.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' type: normal retentions: null charge_group_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null movimento_amarrado: null payments: - id: 5bc5f842-cb51-5de3-abd2-8aeda5e3d824 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 75 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:32:08.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' cnpj: null cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1496.51' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false - id: 5e101534-68a1-5c11-bd8d-6fc1ce35d1a0 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 10 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:32:10.000000Z' updated_at: '2026-11-01T13:32:10.000000Z' cnpj: null cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1496.51' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false - id: 6f4d1fbf-910b-52bd-a909-7e34ebbec90c user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 10 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: pix created_at: '2026-11-01T13:32:11.000000Z' updated_at: '2026-11-01T13:32:11.000000Z' cnpj: null cashbox_id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 card_id: null gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1496.51' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null reconciled: false overpaid_amount: '0.00' invoice: null workflow: null generated_for_entity_type: client generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000' created_by_name: Registro de exemplo recurrence: null category: id: 20355a58-9a53-551c-beb2-3f4e4a606399 name: Registro de exemplo nbs_id: null active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true card: null cashbox: id: ed6005cd-214e-57ed-88d4-5f6ce48d29f8 name: Registro de exemplo amount: '1496.51' default: false active: true editable: true bank_id: null created_at: '2026-11-01T13:30:44.000000Z' updated_at: '2026-11-01T13:32:38.000000Z' start_amount: '1000.00' institution_id: null institution_name: null institution_logo_url: null reconciliation_mode: legacy bank: null standard_launch: id: 35d6a344-3e94-5465-a4ac-a5b455cd89ba name: Registro de exemplo type: receivable requires_cnpj: false code: '37720' created_at: '2026-11-01T13:30:44.000000Z' bank_skip: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null schema: $ref: '#/components/schemas/PublicContractAccountReceivable' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A baixa de uma transferência entre caixas não pode ser editada diretamente. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-receivable/${ACCOUNT_RECEIVABLE_ID}/payments/${PAYMENT_ID}\" \\\n\ \ --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header\ \ 'Accept: application/json' \\\n --form-string \"date=${CAMPO_DATE}\" \\\n --form-string \"payment_method=${CAMPO_PAYMENT_METHOD}\"\ \ \\\n --form-string \"value_paid=${CAMPO_VALUE_PAID}\" \\\n --form-string \"_method=PUT\" \\\n --form\ \ \"attachmentFileInvoice=@${ARQUIVO_ATTACHMENTFILEINVOICE}\" \\\n --form \"attachmentFileInvoiceImages[0]=@${ARQUIVO_ATTACHMENTFILEINVOICEIMAGES_0_}\"\ \ \\\n --form \"attachmentFileReceipt=@${ARQUIVO_ATTACHMENTFILERECEIPT}\" \\\n --form \"attachmentFileReceiptImages[0]=@${ARQUIVO_ATTACHMENTFILERECEIPTIMAGES_0_}\"" delete: tags: - AccountsReceivable summary: Excluir pagamento operationId: deleteAccountReceivablePayment description: 'Exclui um pagamento da conta a receber, revertendo o saldo, e retorna **204**, sem corpo. Estorna junto a despesa de tarifa gerada pelo recebimento. A baixa de uma transferência entre caixas não pode ser estornada por aqui (**400**): exclua a transferência. **Permissões exigidas:** `accounts.view` + `payments.delete`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir pagamento. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A baixa de uma transferência entre caixas deve ser estornada pela exclusão da transferência. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /administrative-documents: get: tags: - AdministrativeDocuments summary: Listar documentos administrativos operationId: listAdministrativeDocuments description: 'Retorna uma lista paginada de documentos administrativos do tenant. Filtros de vínculo e vigência: `documentable_type`, `documentable_id`, `created_from`, `created_to` e `vigencia`. Valor inválido em qualquer um deles responde **422** nomeando o campo. `search` também alcança o nome do dono do documento. **Ordenação:** `sort_column` aceita `name`, `description`, `active`, `created_at`, `updated_at`. Colunas fora da lista retornam **422** no campo `sort_column`. Use `sort_direction=asc` ou `desc`; quando omitido ou inválido, o sentido é `asc`. Permissões exigidas na chave de acesso: `admin_documents.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false description: Número da página. schema: type: integer default: 1 - name: active in: query required: false description: Filtra por documento ativo (`1`) ou inativo (`0`). Ausente = todos. schema: type: boolean - name: search in: query required: false description: Busca por trecho do nome do documento OU do nome do dono (cliente, fornecedor, funcionário, estagiário). schema: type: string - name: documentable_type in: query required: false description: Tipo do dono. Aceita uma chave, lista separada por vírgula (`client,provider`) ou array (`documentable_type[]=client`). schema: type: string enum: - client - provider - employee - intern - name: documentable_id in: query required: false description: 'UUID do dono: devolve só os documentos vinculados a ele.' schema: type: string format: uuid - name: created_from in: query required: false description: Data inicial (inclusiva) de criação do documento, sobre `created_at`. schema: type: string format: date - name: created_to in: query required: false description: Data final (inclusiva) de criação do documento, sobre `created_at`. schema: type: string format: date - name: vigencia in: query required: false description: 'Recorte por vigência, sobre `expires_at`: `vigentes` (com validade e `expires_at >= hoje`), `expirados` (`expires_at < hoje`), `sem_validade` (`expires_at` nulo — documento que não expira) e `todos` (padrão, sem filtro). Os três primeiros particionam a tabela. ' schema: type: string enum: - vigentes - expirados - sem_validade - todos default: todos - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - name - description - active - expires_at - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de documentos administrativos. content: application/json: example: data: - id: 24965f6b-b0de-5bf7-9511-461ce81d51a9 name: Registro de exemplo description: Descrição ilustrativa active: true documentable_type: client documentable_id: 37dd2222-8cfd-542a-a70b-6aa419da823f documentable: id: 37dd2222-8cfd-542a-a70b-6aa419da823f nome: Registro de exemplo expires_at: null expirado: false created_at: '2026-11-01T04:58:21.000000Z' attachments: - id: 2244f51b-a14d-5bca-bce2-3c5caaf5e28d name: Registro de exemplo ext: pdf mime: application/pdf document_id: 24965f6b-b0de-5bf7-9511-461ce81d51a9 created_at: '2026-11-01T04:58:22.000000Z' - id: 77e45144-0014-5514-ac9d-b8f2df143a58 name: Registro de exemplo description: Descrição ilustrativa active: true documentable_type: client documentable_id: 3b0af6fd-59c7-5218-a5c7-925a4f7c2555 documentable: id: 3b0af6fd-59c7-5218-a5c7-925a4f7c2555 nome: Registro de exemplo expires_at: '2026-10-22' expirado: true created_at: '2026-11-01T04:58:22.000000Z' attachments: - id: 12ebe82b-283c-5f44-bf3a-9399295c6a37 name: Registro de exemplo ext: pdf mime: application/pdf document_id: 77e45144-0014-5514-ac9d-b8f2df143a58 created_at: '2026-11-01T04:58:22.000000Z' - id: 070725e1-c3c6-51c1-8edf-847bc6a99164 name: Registro de exemplo description: Descrição ilustrativa active: true documentable_type: provider documentable_id: d363bdff-d417-5b28-8e93-bf69bbb8efde documentable: id: d363bdff-d417-5b28-8e93-bf69bbb8efde nome: Registro de exemplo expires_at: '2027-11-01' expirado: false created_at: '2026-11-01T04:58:22.000000Z' attachments: - id: 45dbc4c0-2f9a-51c5-a00d-937222701026 name: Registro de exemplo ext: pdf mime: application/pdf document_id: 070725e1-c3c6-51c1-8edf-847bc6a99164 created_at: '2026-11-01T04:58:23.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/administrative-documents?page=1 last: https://empresa-exemplo.invalid/public-api/v1/administrative-documents?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/administrative-documents?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/administrative-documents per_page: 10 to: 3 total: 3 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractAdministrativeDocument' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/administrative-documents\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"name=${CAMPO_NAME}\" \\\n --form-string \"description=${CAMPO_DESCRIPTION}\" \\\n --form \"attachments[0]=@${ARQUIVO_ATTACHMENTS_0_}\"\ \ \\\n --form-string \"documentable_type=${CAMPO_DOCUMENTABLE_TYPE}\" \\\n --form-string \"documentable_id=${CAMPO_DOCUMENTABLE_ID}\"" tags: - AdministrativeDocuments summary: Criar documento administrativo operationId: createAdministrativeDocument description: 'Cria um novo documento administrativo com um ou mais arquivos anexados. Use `multipart/form-data` pois o campo `attachments` aceita arquivos binários. **Permissões necessárias:** `admin_documents.view` + `admin_documents.create` Retorna **HTTP 201** em caso de sucesso. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - name - description - attachments - documentable_type - documentable_id properties: name: type: string maxLength: 100 description: Nome do documento. Obrigatório. example: Contrato Social description: type: string maxLength: 500 description: Descrição do documento. Obrigatória. example: Documento de constituição da empresa. documentable_type: type: string enum: - client - provider - employee - intern - partner description: Tipo do dono do documento. Obrigatório. example: client documentable_id: type: string format: uuid description: UUID do dono. Obrigatório e tem de existir na tabela do tipo informado (id de fornecedor com `documentable_type=client` é 422). example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb expires_at: type: string format: date nullable: true description: Validade do documento (`Y-m-d`). Nulo ou ausente = não expira. example: '2027-12-31' attachments: type: array minItems: 1 description: De 1 a 10 PDFs, até 100 MB por arquivo. Os PDFs são mesclados em um único anexo; não aceita DOCX/XLSX/PNG/TXT. items: type: string format: binary maxItems: 10 responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: Contrato Social description: Documento de constituição da empresa. active: true documentable_type: client documentable_id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb documentable: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb nome: Cliente Exemplo expires_at: '2027-12-31' expirado: false created_at: '2026-06-01T10:00:00.000000Z' attachments: - id: b2c3d4e5-f6a7-8901-bcde-f12345678901 name: contrato_social ext: pdf mime: application/pdf document_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 created_at: '2026-06-01T10:00:00.000000Z' schema: $ref: '#/components/schemas/PublicContractAdministrativeDocument' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /administrative-documents/{administrative_document}: parameters: - name: administrative_document in: path required: true description: UUID do documento administrativo. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 get: tags: - AdministrativeDocuments summary: Obter documento administrativo operationId: showAdministrativeDocument description: 'Retorna os detalhes de um documento administrativo, incluindo a lista de anexos. **Permissões necessárias:** `admin_documents.view` ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do documento administrativo. content: application/json: example: id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: Contrato Social description: Documento de constituição da empresa. active: true documentable_type: client documentable_id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb documentable: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb nome: Cliente Exemplo expires_at: '2027-12-31' expirado: false created_at: '2026-06-01T10:00:00.000000Z' attachments: - id: b2c3d4e5-f6a7-8901-bcde-f12345678901 name: contrato_social ext: pdf mime: application/pdf document_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 created_at: '2026-06-01T10:00:00.000000Z' schema: $ref: '#/components/schemas/PublicContractAdministrativeDocument' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - AdministrativeDocuments summary: Editar documento administrativo operationId: updateAdministrativeDocument description: 'Atualiza o nome e a descrição de um documento administrativo existente. A regra `unique` no campo `name` ignora o próprio registro (ignore self), mas rejeita com 422 se o nome já pertencer a outro documento. **Permissões necessárias:** `admin_documents.view` + `admin_documents.update` ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - name - description - documentable_type - documentable_id properties: name: type: string maxLength: 100 description: Nome do documento. Obrigatório. Único entre documentos do tenant (ignora o próprio). example: Contrato Social Atualizado description: type: string maxLength: 500 description: Descrição do documento. Obrigatória. example: Descrição atualizada do documento. documentable_type: type: string enum: - client - provider - employee - intern description: Tipo do dono. Obrigatório também na edição — documento antigo sem vínculo só é editável recebendo um dono. example: client documentable_id: type: string format: uuid description: UUID do dono. Obrigatório e tem de existir na tabela do tipo informado. example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb expires_at: type: string format: date nullable: true description: Validade (`Y-m-d`). Nulo ou ausente = não expira (o PUT substitui o valor anterior). example: '2027-12-31' example: name: Contrato Social Atualizado description: Descrição atualizada do documento. documentable_type: client documentable_id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb expires_at: '2027-12-31' responses: 200: description: Documento atualizado. content: application/json: example: id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: Contrato Social Atualizado description: Descrição atualizada do documento. active: true documentable_type: client documentable_id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb documentable: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb nome: Cliente Exemplo expires_at: '2027-12-31' expirado: false created_at: '2026-06-01T10:00:00.000000Z' attachments: - id: b2c3d4e5-f6a7-8901-bcde-f12345678901 name: contrato_social ext: pdf mime: application/pdf document_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 created_at: '2026-06-01T10:00:00.000000Z' schema: $ref: '#/components/schemas/PublicContractAdministrativeDocument' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - AdministrativeDocuments summary: Excluir documento administrativo operationId: deleteAdministrativeDocument description: 'Exclui um documento administrativo. Retorna **204**, sem corpo, quando encontrado. **Permissões exigidas:** `admin_documents.view` + `admin_documents.delete`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir documento administrativo. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/NotFound' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /administrative-documents/{administrative_document}/attachment: parameters: - name: administrative_document in: path required: true description: UUID do documento administrativo ao qual o(s) arquivo(s) serão adicionados. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/administrative-documents/${ADMINISTRATIVE_DOCUMENT_ID}/attachment\" \\\n\ \ --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header\ \ 'Accept: application/json' \\\n --form \"attachments[0]=@${ARQUIVO_ATTACHMENTS_0_}\"" tags: - AdministrativeDocuments summary: Adicionar anexo(s) a um documento operationId: storeAdministrativeDocumentAttachment description: Envia PDF somente quando o documento ainda não possui anexo. Documento com anexo é recusado com 409 conflict, preservando o anexo anterior; esta operação não faz append ilimitado. security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - attachments properties: attachments: type: array minItems: 1 description: 'Um ou mais arquivos. Obrigatório no POST (required|array|min:1). Formatos aceitos: .ppt, .pptx, .doc, .docx, .pdf, .xls, .xlsx.' items: type: string format: binary responses: 200: description: Anexo(s) adicionado(s) com sucesso. content: application/json: example: id: 3fe23177-a07d-5fcf-a559-0d4a62cb71fa name: Registro de exemplo description: Descrição ilustrativa active: true documentable_type: client documentable_id: 799fba3a-e8f3-5085-a1bc-ad5f97ba4498 documentable: id: 799fba3a-e8f3-5085-a1bc-ad5f97ba4498 nome: Registro de exemplo expires_at: '2027-12-31' expirado: false created_at: '2026-11-01T13:49:02.000000Z' attachments: - id: a7ed3d58-7d9d-579a-bd6a-2aa5229935c3 name: Registro de exemplo ext: pdf mime: application/pdf document_id: 3fe23177-a07d-5fcf-a559-0d4a62cb71fa created_at: '2026-11-01T13:49:22.000000Z' schema: $ref: '#/components/schemas/PublicContractAdministrativeDocument' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /administrative-documents/{administrative_document}/attachment/{administrative_attachment}: parameters: - name: administrative_document in: path required: true description: UUID do documento administrativo. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 - name: administrative_attachment in: path required: true description: UUID do anexo a ser excluído. schema: type: string format: uuid example: b2c3d4e5-f6a7-8901-bcde-f12345678901 delete: tags: - AdministrativeDocuments summary: Excluir anexo de documento administrativo operationId: deleteAdministrativeDocumentAttachment description: 'Exclui um anexo de um documento administrativo. **Permissão exigida:** `admin_documents.view`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir anexo de documento administrativo. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/NotFound' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /administrative-documents/{administrative_document}/attachments/{administrative_attachment}/file: parameters: - name: administrative_document in: path required: true description: UUID do documento administrativo. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 - name: administrative_attachment in: path required: true description: UUID do anexo a ser baixado. schema: type: string format: uuid example: b2c3d4e5-f6a7-8901-bcde-f12345678901 get: tags: - AdministrativeDocuments summary: Baixar anexo de documento administrativo operationId: downloadAdministrativeDocumentAttachment description: 'Faz o download do arquivo de um anexo de documento administrativo. **Permissão exigida:** `admin_documents.view`. O documento e o anexo devem existir, e o arquivo deve estar disponível. Identificadores inexistentes retornam **404**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do arquivo (StreamedResponse). content: application/octet-stream: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /administrative-documents/{administrative_document}/status-transitions: parameters: - name: administrative_document in: path required: true description: UUID do documento administrativo. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 post: tags: - AdministrativeDocuments summary: Alternar status do documento (ativo/inativo) operationId: toggleAdministrativeDocumentStatus description: 'Inverte o campo `active` do documento (ativa se inativo, inativa se ativo). **Permissões necessárias:** `admin_documents.view` + `admin_documents.update` ' security: - accessKey: [] apiKey: [] responses: 200: description: Status do documento alterado. Retorna o documento com o novo valor de `active`. content: application/json: example: id: 35b4b51d-2b2d-5142-b5b8-2f35c9886bc3 name: Registro de exemplo description: Descrição ilustrativa active: false documentable_type: client documentable_id: 1a2c785a-eaab-5f12-8c45-ebd76af02a60 documentable: id: 1a2c785a-eaab-5f12-8c45-ebd76af02a60 nome: Registro de exemplo expires_at: null expirado: false created_at: '2026-11-01T13:48:08.000000Z' attachments: - id: 8d652757-b59a-582e-bcfa-7a71a890510b name: Registro de exemplo ext: pdf mime: application/pdf document_id: 35b4b51d-2b2d-5142-b5b8-2f35c9886bc3 created_at: '2026-11-01T13:48:08.000000Z' schema: $ref: '#/components/schemas/PublicContractAdministrativeDocument' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /auth/sessions: post: tags: - Autenticação summary: Gerar chave de API (X-Public-API-Key) operationId: authLogin description: 'Autentica um usuário ativo vinculado à chave de acesso. Envie X-Public-Access-Key; a chave X-Public-API-Key ainda não é necessária. Sem segundo fator, retorna 201 com api_key e validade. Com segundo fator configurado, retorna 202 com challenge_id, method e expires_at, sem api_key. Para concluir, repita este POST com email, password, challenge_id e o código de seis caracteres. O desafio pertence ao mesmo usuário, empresa e chave de acesso. O método otp usa o aplicativo autenticador. email_sms usa o envio já configurado para o usuário. Desafios expirados exigem novo login. Apenas a resposta 201 libera X-Public-API-Key para chamadas autenticadas. Senha, e-mail e códigos não são devolvidos na resposta. Respeite Retry-After em respostas 429.' security: - accessKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthRequest' example: email: usuario@empresa.com password: sua-senha responses: '201': description: Chave de API gerada com sucesso. content: application/json: schema: $ref: '#/components/schemas/PublicContractPublicApiSession' example: id: 9c541d40-2854-466e-bdd7-15db6b227119 user_id: 9c080b7f-43a4-4aa0-a389-69ec0c91375f api_key: CHAVE_FICTICIA_SEM_VALIDADE_NAO_UTILIZAR expires_in: 86399 expires_at: '2026-06-22T02:33:39.000000Z' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/ValidationError' '202': description: Segundo fator necessário; nenhuma chave de API é fornecida nesta etapa. content: application/json: schema: type: object properties: two_factor_required: type: boolean enum: - true description: Indica verificação em duas etapas pendente. challenge_id: type: string description: UUID do desafio de autenticação. format: uuid method: type: string description: Método de segundo fator selecionado. expires_at: type: string description: Expiração do desafio. format: date-time required: - two_factor_required - challenge_id - method - expires_at description: Desafio de segundo fator retornado por APIKeyService::auth; não contém credencial ativa. example: two_factor_required: true challenge_id: 10000000-0000-4000-8000-000000000001 method: otp expires_at: '2026-10-04T16:10:00Z' '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Usuário, senha, vínculo e desafio de segundo fator são verificados conforme o fluxo de autenticação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Tempo mínimo de espera em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '402': $ref: '#/components/responses/PaymentRequired' /auth/session: delete: tags: - Autenticação summary: Encerrar chave de API operationId: authLogout description: 'Encerra a chave de API enviada em X-Public-API-Key. A chave deixa de valer imediatamente; as demais chaves do mesmo usuário continuam válidas até expirar. Envie X-Public-Access-Key e X-Public-API-Key. Sem X-Public-API-Key (chave de acesso sem login), não há o que encerrar e a resposta é 422.' security: - accessKey: [] apiKey: [] responses: '204': description: Chave de API encerrada. '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' /cards: get: tags: - Cards summary: Listar cartões de crédito operationId: listCards description: 'Retorna uma lista paginada de cartões de crédito do tenant. Permissão exigida: `cards.view`. ### Filtros disponíveis (query string) | Parâmetro | Tipo | Comportamento | |-----------|--------|-----------------------------------------------------------| | `search` | string | Busca por nome do cartão (busca parcial, case-insensitive). | | `page` | integer| Número da página (padrão: 1). | **Ordenação:** `sort_column` aceita `name`, `due_day`, `closing_day`, `active`, `provider_id`, `created_at`, `updated_at`. Colunas fora da lista retornam **422** no campo `sort_column`. Use `sort_direction=asc` ou `desc`; quando omitido ou inválido, o sentido é `asc`. ' security: - accessKey: [] apiKey: [] parameters: - name: search in: query required: false description: Filtro por nome do cartão. schema: type: string - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - name - due_day - closing_day - active - provider_id - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: '200': description: Lista paginada de cartões. content: application/json: example: data: - id: 9c59f325-7b89-4481-bab8-b7fbba510586 name: Cartão Exemplo origin: manual last_four: null network: null due_day: 12 closing_day: 10 active: true provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:53.000000Z' total_invoice: null links: first: https://minha-empresa.api.maisgestao.com.br/public-api/v1/cards?page=1 last: https://minha-empresa.api.maisgestao.com.br/public-api/v1/cards?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: https://minha-empresa.api.maisgestao.com.br/public-api/v1/cards per_page: 15 to: 1 total: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://minha-empresa.api.maisgestao.com.br/public-api/v1/cards?page=1 label: '1' page: 1 active: true - url: null label: Próxima » page: null active: false schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCardPublic' description: Registros da página atual, serializados pelo Resource da listagem. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links da paginação pública. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação pública. required: - data - links - meta description: Coleção paginada de Resources Laravel; sem remover links/meta do paginator. '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Cards summary: Criar cartão de crédito operationId: createCard description: 'Cria um cartão de crédito e retorna **201**. **Permissões exigidas:** `cards.view` + `cards.create`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CardStoreRequest' example: name: Cartão Corporativo due_day: 15 closing_day: 10 provider_id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 responses: '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/ValidationError' '201': description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/Card' example: id: 9c59f2ee-5e53-4caf-bf77-b85af7db2fe5 name: Cartão Corporativo origin: manual last_four: null network: null due_day: 15 closing_day: 10 active: null provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:17.000000Z' total_invoice: null '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cards/{card}: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 get: tags: - Cards summary: Obter cartão de crédito operationId: showCard description: 'Retorna os detalhes de um cartão de crédito. Permissão exigida: `cards.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do cartão. content: application/json: schema: $ref: '#/components/schemas/Card' example: id: 9c59f325-7b89-4481-bab8-b7fbba510586 name: Cartão Exemplo origin: manual last_four: null network: null due_day: 12 closing_day: 10 active: true provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:53.000000Z' total_invoice: 0 '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Cards summary: Atualizar cartão de crédito operationId: updateCard description: 'Atualiza os dados de um cartão de crédito. Envie somente os campos que deseja alterar. **Permissões exigidas:** `cards.view` + `cards.update`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CardUpdateRequest' example: name: Cartão Atualizado due_day: 10 closing_day: 5 provider_id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 responses: '200': description: Cartão atualizado. content: application/json: schema: $ref: '#/components/schemas/Card' example: id: 9c59f2ee-5e53-4caf-bf77-b85af7db2fe5 name: Cartão Atualizado origin: manual last_four: null network: null due_day: 10 closing_day: 5 active: false provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:17.000000Z' total_invoice: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - Cards summary: Excluir cartão de crédito operationId: deleteCard description: 'Exclui um cartão de crédito. **Permissões exigidas:** `cards.view` + `cards.delete`. Repetir a chamada após a exclusão retorna **404**. Um cartão com fatura em aberto não pode ser excluído: a resposta é **422** com a mensagem "Não é possível excluir um cartão com faturas em aberto. Quite ou cancele as faturas antes." ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir cartão de crédito. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cards/{card}/activation: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 post: tags: - Cards summary: Ativar cartão de crédito operationId: activateCard description: 'Marca o cartão como ativo (`active = true`). Permissões exigidas: `cards.view` + `cards.update`. A operação é **idempotente**: chamar em um cartão já ativo retorna 200 e mantém `active = true`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Cartão ativado (ou já estava ativo). content: application/json: schema: $ref: '#/components/schemas/Card' example: id: 9c59f2ee-5e53-4caf-bf77-b85af7db2fe5 name: Cartão Exemplo origin: manual last_four: null network: null due_day: 12 closing_day: 10 active: true provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:17.000000Z' total_invoice: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /cards/{card}/bills: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f98a-052e-4689-9c68-c162432eb1cb get: tags: - CardBills summary: Listar faturas do cartão operationId: listCardBills description: 'Retorna as faturas do cartão como um array JSON, sem paginação. Cada item contém `id`, `due`, `close`, `card_recon`, `account_bill`, `accounts_advance` e `payments`. Cada fatura inclui também card_id, summary, revision, origin, capabilities e sync. As capacidades dependem das permissões da credencial e do estado financeiro atual. Permissões exigidas na chave de acesso: `cards.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Array de faturas do cartão (resposta não paginada). content: application/json: example: - card_id: 9c59f98a-052e-4689-9c68-c162432eb1cb summary: composition_total: '0.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: true can_reconcile: false can_move: true can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 9c59f98a-052e-4689-9c68-c162432eb1cb due: '2024-06-12T03:00:00.000000Z' close: '2024-06-10T03:00:00.000000Z' card_recon: null account_bill: null accounts_advance: [] payments: [] - card_id: 9c59f98a-052e-4689-9c68-c162432eb1cb summary: composition_total: '1000.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: true can_reconcile: false can_move: true can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 9c59f98a-159e-4ca5-94f3-950da8d595cc due: '2025-12-12T03:00:00.000000Z' close: '2025-12-10T03:00:00.000000Z' card_recon: null account_bill: id: 9c59fc8e-0d07-431b-92e8-e17028c2bf09 description: Fatura de cartão de crédito (Ref. 12/2025) unit_price: '1000.00' balance_paid: '0.00' balance: '1000.00' due_date: '2025-12-12T03:00:00.000000Z' type: credit_bill status: pending accounts_advance: [] payments: - id: 9c59f4d3-ff83-4e00-9f5b-d73e9f6771b6 date: '2024-06-22T03:00:00.000000Z' description: null value_paid: 1000 type: normal schema: type: array items: $ref: '#/components/schemas/PublicContractCardBill' description: Faturas do cartão retornadas como coleção não paginada. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /cards/{card}/bills/stats: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f98a-052e-4689-9c68-c162432eb1cb get: tags: - CardBills summary: Estatísticas de faturas por ano operationId: cardBillsStats description: 'Retorna as estatísticas anuais das faturas do cartão. - `bills`: array de faturas com `id`, `close_date`, `due_date`, `total` (string numérica), `paid` e `conciliated` (booleanos). - `currentYear`, `maxYear` e `minYear`: anos representados como inteiros. Um valor não numérico em `year` retorna **200** com `bills: []`. Permissões exigidas na chave de acesso: `cards.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Estatísticas anuais das faturas. content: application/json: example: bills: - id: 465092ca-b930-53b8-870d-80df1d10e266 close_date: '2026-11-18' due_date: '2026-11-25' total: '0.00' paid: false conciliated: false reference_source: null origin: manual composition_status: open revision: 1 currentYear: 2026 maxYear: 2026 minYear: 2026 schema: type: object properties: bills: type: array items: $ref: '#/components/schemas/PublicContractCardBillStatsItem' description: Array de faturas resumidas para o ano filtrado. currentYear: type: integer description: Ano atual do contexto. maxYear: type: integer description: Ano máximo com dados. minYear: type: integer description: Ano mínimo com dados. required: - bills - currentYear - maxYear - minYear '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - name: year in: query required: false description: Ano utilizado na consulta das faturas; ausente usa o ano atual. A implementação converte o valor informado para inteiro. schema: type: string /cards/{card}/bills/{bill}: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f98a-052e-4689-9c68-c162432eb1cb - name: bill in: path required: true description: UUID da fatura do cartão. schema: type: string format: uuid example: 9c59f98a-0602-4f15-b482-002e60c3c467 get: tags: - CardBills summary: Obter fatura do cartão operationId: showCardBill description: 'Retorna os detalhes da fatura. accounts_advance representa contas a pagar vinculadas pelo mecanismo legado de adiantamento. payments representa os pagamentos da fatura, incluindo adiantamentos atuais kind=advance. Essas coleções têm identidades e projeções distintas: accounts_advance não é uma lista de pagamentos atuais. A API pública atual não expõe rota de estorno dos pagamentos atuais kind=advance. DELETE /cards/{card}/bills/{cardBill}/accounts/{account} é somente para vínculo legado de accounts_advance: account identifica uma conta a pagar, não um pagamento. Sem vínculo legado dessa conta com a fatura, a recusa é 422 errors.account, sem estorno. Não envie o ID de um pagamento atual nessa rota esperando estorná-lo. Permissões exigidas na chave de acesso: `cards.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes da fatura. content: application/json: example: card_id: 9c59f98a-052e-4689-9c68-c162432eb1cb summary: composition_total: '0.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: true can_reconcile: false can_move: true can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 9c59f98a-052e-4689-9c68-c162432eb1cb due: '2024-06-12T03:00:00.000000Z' close: '2024-06-10T03:00:00.000000Z' card_recon: null account_bill: null accounts_advance: [] payments: [] schema: $ref: '#/components/schemas/PublicContractCardBill' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - CardBills summary: Mover pagamento entre faturas operationId: moveCardBillPayment description: 'Move um pagamento da fatura indicada em `{bill}` para outra fatura. Retorna **200** com os dados da fatura de origem após a movimentação. O pagamento deve ter valor positivo, e sua retirada não pode tornar o total da fatura de origem negativo. Exige cards.view e cards.update. Informe expected_revision e target_expected_revision com as versões atuais das faturas de origem e destino; divergência de versão retorna 409 sem efetuar a movimentação. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CardBillMoveRequest' example: payment_id: 9c59f4d3-ff83-4e00-9f5b-d73e9f6771b6 to_card_bill_id: 9c59f98a-0602-4f15-b482-002e60c3bbb1 expected_revision: 1 target_expected_revision: 1 responses: '200': description: Pagamento movido com sucesso. A resposta contém a fatura de origem atualizada. content: application/json: example: card_id: 9c59f98a-052e-4689-9c68-c162432eb1cb summary: composition_total: '0.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: true can_reconcile: false can_move: true can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 9c59f98a-052e-4689-9c68-c162432eb1cb due: '2024-06-12T03:00:00.000000Z' close: '2024-06-10T03:00:00.000000Z' card_recon: null account_bill: null accounts_advance: [] payments: [] schema: $ref: '#/components/schemas/PublicContractCardBill' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cards/{card}/history: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 get: tags: - Cards summary: Histórico do cartão operationId: cardHistory description: 'Retorna o histórico de compras do cartão, por meio das contas a pagar associadas. Permissão exigida: cards.view. Um adiantamento atual é registrado como pagamento kind=advance da fatura; ele não cria nova conta card_invoice_advance nem é prometido como compra neste histórico. A API pública atual não expõe rota de estorno dos pagamentos atuais kind=advance. DELETE /cards/{card}/bills/{cardBill}/accounts/{account} é somente para vínculo legado de accounts_advance: account identifica uma conta a pagar, não um pagamento. Sem vínculo legado dessa conta com a fatura, a recusa é 422 errors.account, sem estorno. Não envie o ID de um pagamento atual nessa rota esperando estorná-lo.' security: - accessKey: [] apiKey: [] responses: '200': description: Histórico do cartão (array de contas a pagar). content: application/json: example: - id: 256c34fb-4498-531e-8091-362c6f4c3a5f cashbox_id: null category_id: b8d4f37a-17bd-5425-94b8-8cca4b7f3532 recurrence_id: null account_standard_launch_id: 282295e1-64d0-5ac6-97b6-8645fce2b4ef unit_price: '150.00' balance: '0.00' balance_paid: '150.00' payment_method: credit status: paid reconciled: false description: Descrição ilustrativa observation: null document_number: '2126' installment: null installments: null due_date: '2026-10-31T03:00:00.000000Z' original_due_date: '2026-10-31T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 created_at: '2026-11-01T13:37:11.000000Z' updated_at: '2026-11-01T13:37:11.000000Z' type: normal card_id: ccc32320-c51f-5333-874b-171fbb12945e cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: - id: 2e6bcf43-0fd7-52ed-bc4a-1e18b046f0a1 user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 150 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-10-31T03:00:00.000000Z' payment_method: credit created_at: '2026-11-01T13:37:11.000000Z' updated_at: '2026-11-01T13:37:11.000000Z' cnpj: null cashbox_id: null card_id: ccc32320-c51f-5333-874b-171fbb12945e gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: id: ccc32320-c51f-5333-874b-171fbb12945e name: Registro de exemplo due_day: 25 closing_day: 18 active: true created_at: '2026-11-01T13:37:10.000000Z' provider_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 origin: manual last_four: null network: null cashbox: null reconciled: false receipt: null invoice: null category: id: b8d4f37a-17bd-5425-94b8-8cca4b7f3532 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: id: ccc32320-c51f-5333-874b-171fbb12945e name: Registro de exemplo due_day: 25 closing_day: 18 active: true created_at: '2026-11-01T13:37:10.000000Z' provider_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 origin: manual last_four: null network: null cashbox: null standard_launch: id: 282295e1-64d0-5ac6-97b6-8645fce2b4ef name: Registro de exemplo type: payable requires_cnpj: false code: '52133' created_at: '2026-11-01T13:37:10.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: null document_adherence: status: missing score: null range: null color: outline critical_count: 0 summary: Nenhum documento anexado para conferir. analyzed_at: '2026-11-01T10:37:13-03:00' error_code: null revision: 2 analyzed_revision: 2 algorithm_version: 2026.09.18-1 flags: [] documents: [] evidence: account: amount: '150.00' due_date: '2026-10-31' creditor_document_masked: 91.210.***/****-** payments: - payment_id: 2e6bcf43-0fd7-52ed-bc4a-1e18b046f0a1 date: '2026-10-31' effective_value: '150.00' - id: 82975953-cd36-5bbf-b472-22dc3809fc01 cashbox_id: null category_id: b8d4f37a-17bd-5425-94b8-8cca4b7f3532 recurrence_id: null account_standard_launch_id: 282295e1-64d0-5ac6-97b6-8645fce2b4ef unit_price: '150.00' balance: '0.00' balance_paid: '150.00' payment_method: credit status: paid reconciled: false description: Descrição ilustrativa observation: null document_number: '2127' installment: null installments: null due_date: '2026-09-22T03:00:00.000000Z' original_due_date: '2026-09-22T03:00:00.000000Z' generated_for_entity: provider generated_for_entity_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 created_at: '2026-11-01T13:37:13.000000Z' updated_at: '2026-11-01T13:37:14.000000Z' type: normal card_id: ccc32320-c51f-5333-874b-171fbb12945e cnpj: null invoice_attachment_id: null receipt_attachment_id: null created_by: 3aab0847-2703-54e0-a723-ce227c4440d3 origin: manual cost_center_id: null archived_at: null card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: - id: 50f01c26-cb85-5e8e-90b1-f256d495cf2c user_id: 3aab0847-2703-54e0-a723-ce227c4440d3 value_paid: 150 penalty: null interest: null charges: null expedient: null iof: null insurance: null agreement: null discount_granted: null discount_obtained: null date: '2026-09-22T03:00:00.000000Z' payment_method: credit created_at: '2026-11-01T13:37:14.000000Z' updated_at: '2026-11-01T13:37:14.000000Z' cnpj: null cashbox_id: null card_id: ccc32320-c51f-5333-874b-171fbb12945e gateway_fee: null invoice_attachment_id: null receipt_attachment_id: null fed_retention: null iss_retention: null user: name: Registro de exemplo attachment: null attachment_invoice: null card: id: ccc32320-c51f-5333-874b-171fbb12945e name: Registro de exemplo due_day: 25 closing_day: 18 active: true created_at: '2026-11-01T13:37:10.000000Z' provider_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 origin: manual last_four: null network: null cashbox: null reconciled: false receipt: null invoice: null category: id: b8d4f37a-17bd-5425-94b8-8cca4b7f3532 name: Registro de exemplo nbs_id: null active: true type: account_payable default: false fiscal_config: null nfse_enabled: false card: id: ccc32320-c51f-5333-874b-171fbb12945e name: Registro de exemplo due_day: 25 closing_day: 18 active: true created_at: '2026-11-01T13:37:10.000000Z' provider_id: 4a699c28-57c3-5264-beb6-7bd5063f7f39 origin: manual last_four: null network: null cashbox: null standard_launch: id: 282295e1-64d0-5ac6-97b6-8645fce2b4ef name: Registro de exemplo type: payable requires_cnpj: false code: '52133' created_at: '2026-11-01T13:37:10.000000Z' generated_for_entity_type: provider generated_for_entity_name: Registro de exemplo generated_for_entity_document: '00000000000000' created_by_name: Registro de exemplo recurrence: null document_adherence: status: missing score: null range: null color: outline critical_count: 0 summary: Nenhum documento anexado para conferir. analyzed_at: '2026-11-01T10:37:16-03:00' error_code: null revision: 2 analyzed_revision: 2 algorithm_version: 2026.09.18-1 flags: [] documents: [] evidence: account: amount: '150.00' due_date: '2026-09-22' creditor_document_masked: 91.210.***/****-** payments: - payment_id: 50f01c26-cb85-5e8e-90b1-f256d495cf2c date: '2026-09-22' effective_value: '150.00' schema: type: array items: $ref: '#/components/schemas/PublicContractAccountPayable' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /cards/{card}/inactive: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 post: tags: - Cards summary: Inativar cartão de crédito operationId: inactivateCard description: 'Marca o cartão como inativo (`active = false`). Permissões exigidas: `cards.view` + `cards.update`. A operação é **idempotente**: chamar em um cartão já inativo retorna 200 e mantém `active = false`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Cartão inativado (ou já estava inativo). content: application/json: schema: $ref: '#/components/schemas/Card' example: id: 9c59f2ee-5e53-4caf-bf77-b85af7db2fe5 name: Cartão Exemplo origin: manual last_four: null network: null due_day: 12 closing_day: 10 active: false provider: id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: Fornecedor Exemplo Ltda cpf_cnpj: '11222333000181' active: true created_at: '2024-06-23T00:10:17.000000Z' total_invoice: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /cards/{card}/invoice: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/cards/${CARD_ID}/invoice\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"date=${CAMPO_DATE}\" \\\n --form-string \"payment_method=${CAMPO_PAYMENT_METHOD}\" \\\n --form-string\ \ \"cashbox_id=${CAMPO_CASHBOX_ID}\" \\\n --form-string \"card_bill_id=${CAMPO_CARD_BILL_ID}\" \\\n \ \ --form-string \"value=${CAMPO_VALUE}\" \\\n --form \"receipt=@${ARQUIVO_RECEIPT}\" \\\n --form-string\ \ \"expected_revision=${CAMPO_EXPECTED_REVISION}\"" tags: - Cards summary: Antecipar pagamento de fatura (invoice advance) operationId: invoiceAdvance description: 'Registra um adiantamento de pagamento de fatura por `multipart/form-data`. **Permissões exigidas:** `cards.view` + `cards.update`. Envie o arquivo `receipt` (PDF, JPG, JPEG ou PNG), `expected_revision` da fatura consultada e o cabeçalho `Idempotency-Key` estável para esta tentativa. Comprovante e revisão são obrigatórios para concluir a operação, inclusive neste alias legado. O adiantamento pode ser registrado mesmo quando o total da fatura ainda é desconhecido. Quando o saldo é conhecido e o valor excede esse saldo, envie `confirm_credit=true` somente após confirmar o crédito excedente. Sem essa confirmação, a operação retorna **422**. O cartão, a fatura vinculada e o caixa ativo devem pertencer à empresa. `value` deve ser no mínimo `0.01`; os meios `credit` e `none` não são aceitos para pagar a própria fatura. Dados inválidos, comprovante/revisão ausentes ou chave de idempotência inválida retornam **422**. Uma repetição com a mesma chave e os mesmos dados (incluindo arquivo, revisão e confirmação de crédito) não duplica o pagamento. Chave reutilizada com dados diferentes ou revisão desatualizada retorna **409**. O sucesso retorna **204**, sem corpo.' security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/InvoiceAdvanceRequest' responses: '204': description: Adiantamento registrado ou repetição idêntica reconhecida. Sem corpo. '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O registro do pagamento verifica a revisão atual da fatura e a reutilização da chave com outro conteúdo. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A validação considera revisão da fatura, comprovante, meio de pagamento e confirmação de crédito excedente. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - name: Idempotency-Key in: header required: true description: Chave não vazia, estável por tentativa. O reenvio deve preservar os mesmos dados e comprovante. schema: type: string minLength: 1 maxLength: 200 example: advance-fatura-2026-10-04-001 /cards/{card}/bills/{cardBill}/accounts/{account}: parameters: - name: card in: path required: true description: UUID do cartão de crédito. schema: type: string format: uuid example: 9c59f325-7b89-4481-bab8-b7fbba510586 - name: cardBill in: path required: true description: UUID da fatura do cartão. schema: type: string format: uuid example: 9c59f98a-159e-4ca5-94f3-950da8d595cc - name: account in: path required: true description: UUID da conta a pagar (AccountPayable) gerada pelo adiantamento. schema: type: string format: uuid example: 9c5a088e-d3b1-4bb9-9576-fd4abec01be3 delete: tags: - Cards summary: Estornar adiantamento de fatura operationId: deleteInvoiceAdvance description: 'Exclui somente adiantamento legado vinculado à fatura por uma conta a pagar. Exige cards.view e cards.delete. O parâmetro account é ID de conta a pagar, não PaymentID. Uma conta existente sem o vínculo legado accounts_advance retorna 422 errors.account, sem estorno; identificadores de recurso inexistentes seguem 404. A API pública atual não expõe rota de estorno dos pagamentos atuais kind=advance. DELETE /cards/{card}/bills/{cardBill}/accounts/{account} é somente para vínculo legado de accounts_advance: account identifica uma conta a pagar, não um pagamento. Sem vínculo legado dessa conta com a fatura, a recusa é 422 errors.account, sem estorno. Não envie o ID de um pagamento atual nessa rota esperando estorná-lo.' security: - accessKey: [] apiKey: [] responses: 204: description: Estornar adiantamento de fatura. Sem corpo de resposta. 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cashboxes: get: tags: - Cashboxes summary: Listar caixas operationId: listCashboxes description: "Retorna os caixas com paginação (`data`, `links`, `meta`). \n\n**Ordenação:** `sort_column`\ \ aceita `name`, `amount`, `start_amount`, `default`, `active`, `editable`, `created_at`, `updated_at`.\ \ Colunas fora da lista retornam **422** no campo `sort_column`. Use `sort_direction=asc` ou `desc`; quando\ \ omitido ou inválido, o sentido é `asc`.\n\n\nNo extrato (`/cashboxes/{cashbox}/history`), as colunas aceitas\ \ são `action`, `description`, `transfer_date`, `created_at` e `updated_at`; a ordem padrão é `transfer_date\ \ desc`. O filtro `type` aceita `in`, `out` ou `transfer`; outros valores retornam **422**.\n\nPermissões\ \ exigidas na chave de acesso: `cashboxes.view`. Quando o vínculo de uma permissão exige login, envie também\ \ X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão." security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - name - amount - start_amount - default - active - editable - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de caixas. content: application/json: example: data: - id: 2a6e6200-bc9d-5347-b3a4-448110edd48d name: Registro de exemplo start_amount: '1000.00' amount: '1000.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T00:08:35.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 40f9ecd9-c70e-566b-8398-c2c327a5440a name: Registro de exemplo start_amount: '1000.00' amount: '500.00' default: false active: false editable: true bank_id: d9753835-1756-5370-ae79-00dab7861b33 bank: id: d9753835-1756-5370-ae79-00dab7861b33 compe_code: '318' ispb: '61186680' name: Registro de exemplo logo_url: https://empresa-exemplo.invalid/tenancy/assets/images/banks/318.svg institution_id: null institution: null created_at: '2026-11-01T04:20:55.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 38567846-e9fb-5ad3-bd63-99c10412b0c3 name: Registro de exemplo start_amount: '1000.00' amount: '500.00' default: false active: false editable: true bank_id: d9753835-1756-5370-ae79-00dab7861b33 bank: id: d9753835-1756-5370-ae79-00dab7861b33 compe_code: '318' ispb: '61186680' name: Registro de exemplo logo_url: https://empresa-exemplo.invalid/tenancy/assets/images/banks/318.svg institution_id: null institution: null created_at: '2026-11-01T10:03:55.000000Z' updated_at: '2026-11-01T10:07:38.000000Z' - id: 089ad5a8-a884-54e2-8bb9-45188697d907 name: Registro de exemplo start_amount: '10000.00' amount: '10000.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T04:21:22.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 63dba4d5-351d-5ec2-a711-2ca6a673e7dc name: Registro de exemplo start_amount: '10000.00' amount: '10000.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T10:04:21.000000Z' updated_at: '2026-11-01T10:07:32.000000Z' - id: 75b82fad-52a6-5101-9fed-ee239bda09db name: Registro de exemplo start_amount: '1000.00' amount: '1000.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T04:21:26.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 316e0521-8b4b-5485-8be1-e375899100c5 name: Registro de exemplo start_amount: '1000.00' amount: '1000.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T10:04:24.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 59fe04f6-05f6-501e-9c1e-1921054647e6 name: Registro de exemplo start_amount: '1000.00' amount: '3247.13' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T04:20:54.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' - id: 8613006f-351d-59bd-b0f5-6c7557313d5e name: Registro de exemplo start_amount: '1000.00' amount: '3247.13' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T10:03:52.000000Z' updated_at: '2026-11-01T10:07:39.000000Z' - id: c5a27473-b225-5888-84ed-a1e0a71f3b20 name: Registro de exemplo start_amount: '-50.00' amount: '-50.00' default: false active: false editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-11-01T04:21:24.000000Z' updated_at: '2026-11-01T10:07:28.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=1 last: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=40 prev: null next: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=2 meta: current_page: 1 from: 1 last_page: 40 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=1 label: '1' page: 1 active: true - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=2 label: '2' page: 2 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=3 label: '3' page: 3 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=4 label: '4' page: 4 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=5 label: '5' page: 5 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=6 label: '6' page: 6 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=7 label: '7' page: 7 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=8 label: '8' page: 8 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=9 label: '9' page: 9 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=10 label: '10' page: 10 active: false - url: null label: '...' active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=39 label: '39' page: 39 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=40 label: '40' page: 40 active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes?page=2 label: Próximo » page: 2 active: false path: https://empresa-exemplo.invalid/public-api/v1/cashboxes per_page: 10 to: 10 total: 392 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCashbox' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Cashboxes summary: Criar caixa operationId: createCashbox description: 'Cria um novo caixa para o tenant. Requer permissão: **cashboxes.create**. Retorna **HTTP 201** em caso de sucesso. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CashboxStoreRequest' example: name: Caixa Operacional amount: 10000.0 default: false active: true responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c59d0e8-235b-4140-8d3d-867602e9b890 name: V0q4e7Qo CqbxN89Q start_amount: '10000.00' amount: '10000.00' default: false active: true editable: true created_at: '2024-06-22T22:35:08.000000Z' updated_at: '2024-06-22T22:35:08.000000Z' bank_id: null bank: null institution_id: null institution: null '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cashboxes/{cashbox}: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c get: tags: - Cashboxes summary: Obter caixa operationId: showCashbox description: 'Retorna os detalhes de um caixa específico. Permissões exigidas na chave de acesso: `cashboxes.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do caixa. content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c name: Inter1 start_amount: '10000.00' amount: '9900.00' default: false active: false editable: true created_at: '2024-05-16T11:22:33.000000Z' updated_at: '2024-06-23T00:07:50.000000Z' bank_id: null bank: null institution_id: null institution: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /cashboxes/{cashbox}/activation: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c post: tags: - Cashboxes summary: Ativar caixa operationId: setCashboxActive description: 'Marca o caixa como ativo (`active = true`). A operação é idempotente: chamar em um caixa já ativo retorna 200 sem erro. Nenhum corpo de requisição é necessário. Requer permissão: **cashboxes.update**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Caixa ativado (`active = true`). content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c59f221-7755-4e53-9588-7a75a6516385 name: MOK1GEjy 6yWNCP1Y start_amount: '10000.00' amount: '10000.00' default: false active: true editable: true created_at: '2024-06-23T00:08:03.000000Z' updated_at: '2024-06-23T00:08:12.000000Z' bank_id: null bank: null institution_id: null institution: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /cashboxes/{cashbox}/default: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c post: tags: - Cashboxes summary: Definir caixa como padrão operationId: setCashboxDefault description: 'Marca o caixa como caixa padrão do tenant. Um caixa inativo não pode ser o padrão (**400**: "Um caixa inativo não pode ser o padrão. Ative o caixa antes."). Nenhum corpo de requisição é necessário. Requer permissão: **cashboxes.update**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Caixa agora definido como padrão (`default = true`). content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c59f058-7963-4c53-8b53-57fa3e1c9c59 name: H7Xx9rvd DwB4A3S1 start_amount: '10000.00' amount: '9999.00' default: true active: true editable: true created_at: '2024-06-23T00:03:03.000000Z' updated_at: '2024-06-23T00:07:50.000000Z' bank_id: null bank: null institution_id: null institution: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Um caixa inativo não pode ser definido como padrão. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /cashboxes/{cashbox}/history: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: ae0f8e19-5ca3-4055-ba94-47cd24229086 get: tags: - Cashboxes summary: Histórico do caixa operationId: cashboxHistory description: 'Retorna o histórico de movimentações do caixa (paginado). Cada item em `data` representa um evento registrado na tabela `cashbox_logs`. Os campos de `meta` serializam como strings (e.g. `"current_page": "1"`). Permissões exigidas na chave de acesso: `cashboxes.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - action - description - transfer_date - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string - name: type in: query required: false description: Tipo de movimentação. schema: type: string enum: - in - out - transfer - name: description in: query required: false description: Trecho da descrição da movimentação. schema: type: string - name: date_from in: query required: false description: Data inicial do período. schema: type: string format: date - name: date_to in: query required: false description: Data final do período. schema: type: string format: date responses: '200': description: Histórico paginado de movimentações do caixa. content: application/json: example: data: - id: 5c2258c0-f040-5c17-82db-f5c6f6a89b91 action: account_receivable_payment_added description: Descrição ilustrativa payload: account: id: 03f6a76a-5561-5502-a5cc-ecb5662877da balance: '150.00' old_balance: '0.00' document_number: '1970' cashbox: balance: '1150.00' old_balance: '1000.00' payment: id: 27bcb750-481a-5c4a-9f5d-da3aebee6a45 value: '150.00' date: '2026-10-31T00:00:00-03:00' date: '2026-10-31T00:00:00-03:00' receipt_attachment: null transfer_date: '2026-10-31T03:00:00.000000Z' balance_before: '1000.00' balance_after: '1150.00' balance_status: complete account_exists: true created_at: '2026-11-01T13:41:13.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/cashboxes/a1774d75-6cb9-5fda-beff-9d9bb01b6e95/history?page=1 last: https://empresa-exemplo.invalid/public-api/v1/cashboxes/a1774d75-6cb9-5fda-beff-9d9bb01b6e95/history?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/cashboxes/a1774d75-6cb9-5fda-beff-9d9bb01b6e95/history?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/cashboxes/a1774d75-6cb9-5fda-beff-9d9bb01b6e95/history per_page: 100 to: 1 total: 1 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCashboxHistoryLog' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /cashboxes/{cashbox}/history/{history}: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: ae0f8e19-5ca3-4055-ba94-47cd24229086 - name: history in: path required: true description: UUID do log de transferência a ser revertido. schema: type: string format: uuid example: 9c31bbbb-f053-4c0d-99bc-f7037550d61b delete: tags: - Cashboxes summary: Reverter transferência (excluir histórico) operationId: deleteCashboxHistory description: 'Reverte uma transferência entre caixas e retorna **204**, sem corpo. **Permissão exigida:** `cashboxes.update`. A movimentação deve pertencer ao caixa indicado na URL; caso contrário, retorna **404**. Transferências que não permitem reversão retornam **400**. ' security: - accessKey: [] apiKey: [] responses: '204': description: Reverter transferência (excluir histórico). Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': $ref: '#/components/responses/BadRequest' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /cashboxes/{cashbox}/inactive: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c post: tags: - Cashboxes summary: Desativar caixa operationId: setCashboxInactive description: 'Marca o caixa como inativo (`active = false`). Nenhum corpo de requisição é necessário. Requer permissão: **cashboxes.update**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Caixa desativado (`active = false`). content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c59f221-7755-4e53-9588-7a75a6516385 name: MOK1GEjy 6yWNCP1Y start_amount: '10000.00' amount: '10000.00' default: false active: false editable: true created_at: '2024-06-23T00:08:03.000000Z' updated_at: '2024-06-23T00:08:06.000000Z' bank_id: null bank: null institution_id: null institution: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /cashboxes/{cashbox}/name: parameters: - name: cashbox in: path required: true description: UUID do caixa. schema: type: string format: uuid example: 9c0e71f5-40a7-426e-b3a2-33ed51a23d6c post: tags: - Cashboxes summary: Renomear caixa operationId: setCashboxName description: 'Atualiza o nome de um caixa. **Permissão exigida:** `cashboxes.update`. O nome deve ser único. Um nome já cadastrado retorna **422**. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - name properties: name: type: string description: Novo nome único para o caixa. example: Caixa Principal Renomeado example: name: Caixa Principal Renomeado responses: '200': description: Caixa com o nome atualizado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 9c59d0e8-235b-4140-8d3d-867602e9b890 name: NSqfS8V2 G0AaRFh9 start_amount: '10000.00' amount: '10000.00' default: false active: true editable: true created_at: '2024-06-22T22:35:08.000000Z' updated_at: '2024-06-22T22:35:31.000000Z' bank_id: null bank: null institution_id: null institution: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' /cashboxes/{cashbox}/transfer: parameters: - name: cashbox in: path required: true description: UUID do caixa de origem. schema: type: string format: uuid example: ae0f8e19-5ca3-4055-ba94-47cd24229086 post: tags: - Cashboxes summary: Transferir saldo entre caixas operationId: transferCashbox description: 'Transfere um valor do caixa indicado na URL para `cashbox_id` informado no corpo. **Permissão exigida:** `cashboxes.update`. Envie `Idempotency-Key` com um valor único por transferência. Repetir a chamada com a mesma chave retorna o mesmo resultado sem movimentar o saldo novamente. Sem esse cabeçalho, uma transferência idêntica (origem, destino, valor e data), dentro da janela de deduplicação, retorna **409**. Para realizar outra transferência com os mesmos dados, use uma chave nova. `amount` aceita no máximo 2 casas decimais (**422**: "O valor deve ter no máximo 2 casas decimais."). Não há verificação de saldo: a transferência é aceita mesmo acima do saldo, e o caixa de origem pode ficar negativo. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CashboxTransferRequest' example: cashbox_id: 9c3ff8ac-e390-4558-aa7c-e202028f6e79 amount: 500.0 date: '2024-06-23' responses: '200': description: Transferência realizada com sucesso. content: application/json: example: message: Operação realizada com sucesso. schema: $ref: '#/components/schemas/PublicContractMessage' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': $ref: '#/components/responses/BadRequest' '409': $ref: '#/components/responses/Conflict' /clients: get: tags: - Clientes summary: Listar clientes operationId: listClients description: 'Retorna uma lista paginada de clientes do tenant. A busca por search inclui o código do cliente, nome, nome fantasia e documento, combinada com os demais filtros. Permissões exigidas na chave de acesso: `clients.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' parameters: - name: search in: query required: false description: Busca parcial por código do cliente, nome, nome fantasia ou documento. schema: type: string - name: page in: query required: false description: Número da página. schema: type: integer default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 responses: 200: description: Lista de clientes. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractClient' description: Registros da página atual, serializados pelo Resource da listagem. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links da paginação pública. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação pública. required: - data - links - meta description: Coleção paginada de Resources Laravel; sem remover links/meta do paginator. example: data: - id: 7462521f-38fe-5d2d-8cc6-334bc37c8aab type: PF name: Registro de exemplo code: 0066598016 fantasy_name: AUD-oficial1 Fantasia izfhcbxbjz cpf: '00000000000' cnpj: null ie: null im: null billing_day: '31' client_since: '2026-01-15' description: Descrição ilustrativa active: true international: false nif: null nao_nif: null emails: - id: 75fd8dba-ec1c-52bf-a6b0-a7a5f678303b email: contato-f9430c32@example.invalid description: Descrição ilustrativa type: id: dd0e31d9-51f3-5295-bf85-514c35b0c548 name: Registro de exemplo description: Descrição ilustrativa phones: - id: c8d2064f-decd-53bf-b8b4-c8f9941350bc phone_type: Cobrança phone_type_id: c20b149b-ae44-5eee-bb23-7f56b461b9cf phone: '3100000000' wpp: false description: Descrição ilustrativa bank_accounts: [] addresses: [] contacts: - id: 1fd97c5a-81c2-5fe7-ad87-1ddd13537409 reference_type: App\Models\Clients\Client reference_id: 7462521f-38fe-5d2d-8cc6-334bc37c8aab name: Registro de exemplo email: contato-81c832a6@example.invalid office: null phone: null description: null documents: [] created_at: '2026-11-01T13:13:20.000000Z' updated_at: '2026-11-01T13:13:20.000000Z' comex_vinculo: null comex_moeda: null links: first: https://empresa-exemplo.invalid/public-api/v1/clients?page=1 last: https://empresa-exemplo.invalid/public-api/v1/clients?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/clients?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/clients per_page: 10 to: 1 total: 1 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' '500': description: Ocorreu uma falha no processamento; detalhes internos são ocultados. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem500' post: tags: - Clientes summary: Criar cliente operationId: createClient description: 'Cria um novo cliente (PF ou PJ). Aceita `application/json` ou `multipart/form-data` (quando há anexos de documento; os campos aninhados — `emails`, `phones`, `addresses`, `contacts`, `documentFilesMap` — são enviados como strings JSON no multipart). Retorna **HTTP 201** em caso de sucesso. Permissões exigidas na chave de acesso: `clients.view` e `clients.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' requestBody: required: true content: application/json: schema: description: Dados cadastrais para criar ou atualizar um cliente; campos fiscais dependem do tipo de pessoa e domicílio. type: object required: - type properties: type: type: string enum: - PF - PJ description: Tipo do cliente (Pessoa Física ou Jurídica). name: type: string maxLength: 80 description: Obrigatório na criação. Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. billing_day: type: integer minimum: 1 maximum: 31 nullable: true description: Opcional. Quando informado, deve ser um dia entre 1 e 31. code: type: string maxLength: 255 nullable: true description: Código do cliente, digitado e opcional. Preserva zeros à esquerda; não exige unicidade. example: '0010' client_since: type: string format: date nullable: true description: Data em que passou a ser cliente active: description: Indica se o registro está ativo para uso pela empresa. type: boolean international: description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: boolean nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' comex_vinculo: description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. Vale para cliente no Brasil ou no exterior e prevalece sobre o da nota e o da recorrência.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true comex_moeda: description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão pela tela; não vai na nota.' type: string pattern: ^[0-9]{3}$ nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true cpf: type: string description: 11 dígitos. Obrigatório quando `type=PF` e não internacional. nullable: true cnpj: type: string description: 14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e não internacional. nullable: true emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: description: Endereço de e-mail e sua classificação no catálogo de tipos de contato. type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: description: Número de telefone e sua classificação no catálogo de tipos de contato. type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: description: Pessoas de contato vinculadas ao cadastro. type: array items: type: object description: Nome obrigatório; informe e-mail ou telefone, ou ambos. Cargo é opcional e pode ser null. required: - name anyOf: - required: - email properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: false - required: - phone properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 1 maxLength: 200 office: description: Informações do escritório contábil vinculado ao cadastro. type: string nullable: true maxLength: 100 email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email nullable: true maxLength: 60 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true minLength: 10 maxLength: 13 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: description: Não enviar contas na criação. Cadastre depois por PUT /clients/{client}; array não vazio é recusado (prohibited). type: array items: description: Dados de conta bancária vinculada à pessoa ou empresa cadastrada. type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxItems: 0 nullable: true example: type: PF name: John Doe fantasy_name: null cpf: '00000000000' billing_day: 10 active: true international: false description: Cliente exemplo emails: - email: john@doe.com description: E-mail principal email_type_id: a5d65bcd-b4f7-4e8c-a156-f31644748343 phones: - phone: '11999999999' description: Telefone principal phone_type_id: 684b638a-ab19-4864-8a61-8533c98480ea addresses: - state_id: 10000000-0000-4000-8000-000000000016 city_id: 10000000-0000-4000-8000-000000000030 address: Rua Exemplo number: '100' neighborhood: Centro zipcode: '30110000' complement: Casa description: Endereço principal contacts: [] multipart/form-data: schema: description: Dados cadastrais para criar ou atualizar um cliente; campos fiscais dependem do tipo de pessoa e domicílio. type: object required: - type properties: type: type: string enum: - PF - PJ description: Tipo do cliente (Pessoa Física ou Jurídica). name: type: string maxLength: 80 description: Obrigatório na criação. Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. billing_day: type: integer minimum: 1 maximum: 31 nullable: true description: Opcional. Quando informado, deve ser um dia entre 1 e 31. code: type: string maxLength: 255 nullable: true description: Código do cliente, digitado e opcional. Preserva zeros à esquerda; não exige unicidade. example: '0010' client_since: type: string format: date nullable: true description: Data em que passou a ser cliente active: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se o registro está ativo para uso pela empresa. type: integer enum: - 0 - 1 international: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: integer enum: - 0 - 1 nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' comex_vinculo: description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. Vale para cliente no Brasil ou no exterior e prevalece sobre o da nota e o da recorrência.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true comex_moeda: description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão pela tela; não vai na nota.' type: string pattern: ^[0-9]{3}$ nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true cpf: type: string description: 11 dígitos. Obrigatório quando `type=PF` e não internacional. nullable: true cnpj: type: string description: 14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e não internacional. nullable: true emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: description: Endereço de e-mail e sua classificação no catálogo de tipos de contato. type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: description: Número de telefone e sua classificação no catálogo de tipos de contato. type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: type: string description: Texto JSON válido, decodificado antes da validação. Pessoas de contato vinculadas ao cadastro. x-docs-decoded-schema: description: Pessoas de contato vinculadas ao cadastro. type: array items: type: object description: Nome obrigatório; informe e-mail ou telefone, ou ambos. Cargo é opcional e pode ser null. required: - name anyOf: - required: - email properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: false - required: - phone properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 1 maxLength: 200 office: description: Informações do escritório contábil vinculado ao cadastro. type: string nullable: true maxLength: 100 email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email nullable: true maxLength: 60 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true minLength: 10 maxLength: 13 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: description: Não enviar contas na criação. Cadastre depois por PUT /clients/{client}; array não vazio é recusado (prohibited). type: array items: description: Dados de conta bancária vinculada à pessoa ou empresa cadastrada. type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxItems: 0 nullable: true documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: contacts: contentType: text/plain emails: contentType: text/plain phones: contentType: text/plain addresses: contentType: text/plain documentFilesMap: contentType: text/plain responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/PublicContractClient' example: id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 type: PF name: Registro de exemplo code: null fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null billing_day: '10' client_since: null description: Descrição ilustrativa active: true international: false nif: null nao_nif: null emails: - id: 80a1ce21-0d16-5e66-b286-eb0762d708dc email: contato-b6ae0115@example.invalid description: Descrição ilustrativa type: id: 64f2cdac-0aee-5f96-8789-089dce2d27c8 name: Registro de exemplo description: Descrição ilustrativa phones: [] bank_accounts: [] addresses: [] contacts: [] documents: [] created_at: '2026-11-01T13:06:19.000000Z' updated_at: '2026-11-01T13:06:19.000000Z' comex_vinculo: null comex_moeda: null '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/clients\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header\ \ \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string \"type=${CAMPO_TYPE}\"\ \ \\\n --form-string \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" /clients/{client}: parameters: - $ref: '#/components/parameters/ClientId' get: tags: - Clientes summary: Obter cliente operationId: showClient description: 'Retorna os detalhes de um cliente, incluindo e-mails, telefones, endereços, contatos e documentos. Permissões exigidas na chave de acesso: `clients.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: '200': description: Detalhes do cliente. content: application/json: schema: $ref: '#/components/schemas/PublicContractClient' example: id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 type: PF name: Registro de exemplo code: null fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null billing_day: '10' client_since: null description: Descrição ilustrativa active: true international: false nif: null nao_nif: null emails: - id: 80a1ce21-0d16-5e66-b286-eb0762d708dc email: contato-b6ae0115@example.invalid description: Descrição ilustrativa type: id: 64f2cdac-0aee-5f96-8789-089dce2d27c8 name: Registro de exemplo description: Descrição ilustrativa phones: [] bank_accounts: [] addresses: [] contacts: [] documents: [] created_at: '2026-11-01T13:06:19.000000Z' updated_at: '2026-11-01T13:06:19.000000Z' comex_vinculo: null comex_moeda: null '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Clientes summary: Editar cliente operationId: updateClient description: 'Atualiza os dados de um cliente existente. Os campos seguem as mesmas regras de criação, mas nenhum é obrigatório por padrão (exceto `type`). Permissões exigidas na chave de acesso: `clients.view` e `clients.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' requestBody: required: true content: application/json: schema: description: Dados cadastrais para criar ou atualizar um cliente; campos fiscais dependem do tipo de pessoa e domicílio. type: object required: - type properties: type: type: string enum: - PF - PJ description: Tipo do cliente (Pessoa Física ou Jurídica). name: type: string maxLength: 80 description: Obrigatório na criação. Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. billing_day: type: integer minimum: 1 maximum: 31 nullable: true description: Opcional. Quando informado, deve ser um dia entre 1 e 31. code: type: string maxLength: 255 nullable: true description: Código do cliente, digitado e opcional. Preserva zeros à esquerda; não exige unicidade. example: '0010' client_since: type: string format: date nullable: true description: Data em que passou a ser cliente active: description: Indica se o registro está ativo para uso pela empresa. type: boolean international: description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: boolean nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' comex_vinculo: description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. Vale para cliente no Brasil ou no exterior e prevalece sobre o da nota e o da recorrência.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true comex_moeda: description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão pela tela; não vai na nota.' type: string pattern: ^[0-9]{3}$ nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true cpf: type: string description: 11 dígitos. Obrigatório quando `type=PF` e não internacional. nullable: true cnpj: type: string description: 14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e não internacional. nullable: true emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: $ref: '#/components/schemas/EmailInput' phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: $ref: '#/components/schemas/PhoneInput' addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: description: Pessoas de contato vinculadas ao cadastro. type: array items: $ref: '#/components/schemas/ContactInput' bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array items: $ref: '#/components/schemas/BankAccountInput' example: type: PF name: John Doe (atualizado) billing_day: 15 description: Descrição atualizada responses: '200': description: Cliente atualizado. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawClient' example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb type: PF name: John Doe (atualizado) fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null billing_day: '15' description: Descrição atualizada active: true international: false deleted_at: null created_at: '2026-06-20T02:35:06.000000Z' updated_at: '2026-06-20T02:42:30.000000Z' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - Clientes summary: Excluir cliente operationId: deleteClient description: 'Exclui cadastro inativo e elegível, sem contas abertas. Cadastro ativo é recusado com 422 em active; inative antes de excluir. Sucesso público: 204 sem corpo. Permissões exigidas na chave de acesso: `clients.view` e `clients.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: '204': description: Excluir cliente. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /clients/{client}/documents/attachment: parameters: - $ref: '#/components/parameters/ClientId' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/clients/${CLIENT_ID}/documents/attachment\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"attachment=@${ARQUIVO_ATTACHMENT}\" \\\n --form-string \"document_id=${CAMPO_DOCUMENT_ID}\"" tags: - Clientes summary: Anexar documento ao cliente operationId: uploadClientDocument description: 'Envia um arquivo **PDF** para um perfil de documento do cliente. Use `multipart/form-data`. Permissões exigidas na chave de acesso: `clients.view` e `documents.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' requestBody: required: true content: multipart/form-data: schema: type: object required: - attachment - document_id properties: attachment: type: string format: binary description: Arquivo a ser enviado (apenas PDF). document_id: type: string description: ID do vínculo cliente-documento (client_has_documents) pertencente ao cliente da rota; não é o ID do perfil documental. example: b560292c-1908-4500-ba80-ec7798f11d5a responses: 200: description: Documento anexado com sucesso. content: application/json: schema: $ref: '#/components/schemas/PublicContractPersonDocument' example: id: 9c5422a0-ad44-4670-9dc4-46be00252759 document_profile_id: 9ac70ec3-b4b3-491d-8bca-b9e36843aa29 document_profile_name: Documento de identificação document_profile_description: null attachment: name: test_doc type: document size: 2117814 mime: application/pdf ext: pdf url: https://minha-empresa.api.maisgestao.com.br/.../test_doc created_at: '2026-06-20T02:50:26.000000Z' original_name: test_doc.pdf required: false 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /clients/{client}/documents/required: parameters: - $ref: '#/components/parameters/ClientId' get: tags: - Clientes summary: Documentos obrigatórios do cliente operationId: requiredClientDocuments description: 'Lista os perfis de documento exigidos para este cliente. Permissões exigidas na chave de acesso: `clients.view` e `documents.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: '200': description: Lista de documentos obrigatórios (pode ser vazia). content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRequiredProfile' description: Perfis documentais obrigatórios do cadastro. example: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - name: type in: query required: false schema: type: string enum: - PF - PJ - Any - I nullable: false default: Any description: 'Filtro opcional de DocumentProfileType: PF, PJ, Any ou I. Ausência mantém a seleção de perfis Any; valor inválido é 422 errors.type antes da consulta. Um resultado vazio não valida tipo fora do enum.' /clients/{client}/documents/{document}: parameters: - $ref: '#/components/parameters/ClientId' - $ref: '#/components/parameters/DocumentId' delete: tags: - Clientes summary: Excluir documento do cliente operationId: deleteClientDocument description: 'Exclui um documento anexado ao cliente. Permissões exigidas na chave de acesso: `clients.view` e `documents.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: '204': description: Excluir documento do cliente. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /clients/{client}/documents/{document}/file: parameters: - $ref: '#/components/parameters/ClientId' - $ref: '#/components/parameters/DocumentId' get: tags: - Clientes summary: Baixar documento do cliente operationId: downloadClientDocument description: 'Faz o download do arquivo de um documento anexado ao cliente. Permissões exigidas na chave de acesso: `clients.view` e `documents.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: '200': description: Conteúdo binário do arquivo. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /clients/{client}/status: parameters: - $ref: '#/components/parameters/ClientId' put: tags: - Clientes summary: Alternar status do cliente (ativo/inativo) operationId: toggleClientStatus description: 'Inverte o status `active` do cliente (ativa se inativo, inativa se ativo). Permissões exigidas na chave de acesso: `clients.view` e `clients.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' responses: 200: description: Status alterado. content: application/json: example: [] schema: type: array maxItems: 0 description: 'Lista vazia: a confirmação não traz corpo de objeto. O sucesso é indicado pelo status HTTP 200.' items: {} 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /data-migration/imports: get: tags: - DataMigration summary: Listar importações operationId: listDataMigrationImports description: 'Lista as importações de dados com paginação. **Permissão exigida:** `data_migration.view`. **Ordenação:** `sort_column` aceita `type`, `action`, `status`, `original_file_name`, `created_at`, `updated_at`. Colunas fora da lista retornam **422** no campo `sort_column`. Use `sort_direction=asc` ou `desc`; quando omitido ou inválido, o sentido é `asc`. A ordenação principal é `created_at desc`; `sort_column` define o critério secundário. Para ordenar pelo nome do arquivo, use `original_file_name`. ' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - type - action - status - original_file_name - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de importações. content: application/json: example: data: - id: fbf4bff6-faf6-5264-a971-ec72ea81aa6c type: clients action: verify status: completed original_file_name: AUD-oficial1-modelo.xlsx file_path: f5252260-c759-5f84-b790-be62b3b69d7e/data-migration/import/f97e198c-ffe9-5634-b013-090cd99c4de0.xlsx headings: - Nome - CPF / CNPJ - Nome fantasia - Inscrição Estadual - Inscrição Municipal - Descrição - Status - Telefones - E-mails - Nome do contato - Tipo de contato - E-mail do contato - Telefone do contato - Domiciliado no exterior - NIF - CEP - Cidade - Endereço - Número - Bairro - Complemento - Código do cliente view_headings: - Nome - CPF / CNPJ has_errors: false has_nulls: true invalid_file: false accepted_rows: 2 suggested_rows: 0 ignored_rows: 0 rejected_rows: 0 total_rows: 2 warnings: [] progress: 100 error_message: null created_at: '2026-11-01T14:07:54.000000Z' updated_at: '2026-11-01T14:07:58.000000Z' - id: b67df3ac-7b32-50aa-9152-b26a0d53f164 type: clients action: verify status: completed original_file_name: AUD-oficial1-clientes.csv file_path: f5252260-c759-5f84-b790-be62b3b69d7e/data-migration/import/bf3c9263-9778-57b2-b71d-6c2a676f1c08.csv headings: - Nome - CPF / CNPJ - Nome fantasia - Inscrição Estadual - Inscrição Municipal - Descrição - Status - Telefones - E-mails - Nome do contato - Tipo de contato - E-mail do contato - Telefone do contato - Domiciliado no exterior - NIF - CEP - Cidade - Endereço - Número - Bairro - Complemento - Código do cliente view_headings: - Nome - CPF / CNPJ has_errors: true has_nulls: true invalid_file: false accepted_rows: 1 suggested_rows: 0 ignored_rows: 0 rejected_rows: 1 total_rows: 2 warnings: [] progress: 100 error_message: null created_at: '2026-11-01T14:07:52.000000Z' updated_at: '2026-11-01T14:07:56.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports?page=1 last: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports per_page: 25 to: 2 total: 2 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDataImport' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/data-migration/imports\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"type=${CAMPO_TYPE}\" \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - DataMigration summary: Criar importação (upload de arquivo) operationId: createDataMigrationImport description: 'Faz o upload de uma planilha (xlsx, xls ou csv) para iniciar uma importação de dados no tenant. Após o upload, um job de processamento (`DataImportFileHandler`) é despachado para verificar o arquivo (fase `verify`). Use `multipart/form-data` para enviar o arquivo. Retorna **HTTP 201** em caso de sucesso. Permissões exigidas na chave de acesso: `data_migration.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - type - file properties: type: type: string description: 'Tipo da importação. Valores aceitos (enum `ImportType`): `account_payables`, `account_receivables`, `cashboxes`, `categories`, `clients`, `cost_centers`, `employees`, `interns`, `partners`, `providers`, `standard_launches`. ' enum: - account_payables - account_receivables - cashboxes - categories - clients - cost_centers - employees - interns - partners - providers - standard_launches example: clients file: type: string format: binary description: Planilha a importar (xlsx, xls ou csv). responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb type: clients action: verify status: queued original_file_name: clientes.xlsx file_path: meu-tenant/data-migration/import/9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb.xlsx headings: [] view_headings: [] has_errors: false has_nulls: false invalid_file: false progress: 100 created_at: '2026-06-21T10:00:00.000000Z' updated_at: '2026-06-21T10:00:00.000000Z' schema: $ref: '#/components/schemas/PublicContractRawDataImport' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /data-migration/imports/{dataImport}: parameters: - name: dataImport in: path required: true description: UUID da importação. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - DataMigration summary: Obter importação operationId: showDataMigrationImport description: 'Retorna os detalhes de uma importação específica do tenant, incluindo campos de progresso derivados do campo `data` (headings, has_errors, has_nulls, invalid_file, progress). Quando `data` é `null` (importação recém-criada ou ainda em fila), os campos de progresso retornam com valores padrão (`[]`, `false`, `100`). Permissões exigidas na chave de acesso: `data_migration.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes da importação. content: application/json: example: id: b67df3ac-7b32-50aa-9152-b26a0d53f164 type: clients action: verify status: completed original_file_name: AUD-oficial1-clientes.csv file_path: f5252260-c759-5f84-b790-be62b3b69d7e/data-migration/import/bf3c9263-9778-57b2-b71d-6c2a676f1c08.csv headings: - Nome - CPF / CNPJ - Nome fantasia - Inscrição Estadual - Inscrição Municipal - Descrição - Status - Telefones - E-mails - Nome do contato - Tipo de contato - E-mail do contato - Telefone do contato - Domiciliado no exterior - NIF - CEP - Cidade - Endereço - Número - Bairro - Complemento - Código do cliente view_headings: - Nome - CPF / CNPJ has_errors: true has_nulls: true invalid_file: false accepted_rows: 1 suggested_rows: 0 ignored_rows: 0 rejected_rows: 1 total_rows: 2 warnings: [] progress: 100 error_message: null created_at: '2026-11-01T14:07:52.000000Z' updated_at: '2026-11-01T14:07:56.000000Z' schema: $ref: '#/components/schemas/PublicContractDataImport' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' delete: tags: - DataMigration summary: Excluir importação operationId: deleteDataMigrationImport description: 'Exclui uma importação e retorna **200** com uma mensagem de confirmação (esta rota não devolve 204). Se o identificador não existir ou a exclusão não for concluída, a resposta é **404**. Nesse último caso o corpo pode ser uma lista de textos (`["Not Found"]`) em vez do objeto com `message`. **Permissão exigida:** `data_migration.delete`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Importação excluída. content: application/json: schema: type: object required: - message properties: message: description: Mensagem legível que explica o resultado da operação. type: string example: message: Registro excluído com sucesso. '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /data-migration/imports/{dataImport}/data: parameters: - name: dataImport in: path required: true description: UUID da importação. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - DataMigration summary: Linhas de dados da importação operationId: getDataMigrationImportData description: 'Retorna as linhas verificadas da planilha em uma coleção paginada. Enquanto os dados não estiverem disponíveis, retorna uma coleção vazia. Identificadores inexistentes ou de outra empresa retornam **404**. Permissões exigidas na chave de acesso: `data_migration.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer description: Itens por página. Sem teto universal presumido. - name: search in: query required: false description: Busca no conteúdo das linhas ou mensagens de erro da importação. schema: type: string responses: '200': description: Linhas da planilha, com paginação. content: application/json: example: data: - row: 3 data: Nome: Registro de exemplo CPF / CNPJ: abc Nome fantasia: AUD-oficial1 importado-2 Inscrição Estadual: '' Inscrição Municipal: '' Descrição: '' Status: '' Telefones: '' E-mails: contato-7b77a683@example.invalid Nome do contato: '' Tipo de contato: '' E-mail do contato: '' Telefone do contato: '' Domiciliado no exterior: '' NIF: '' CEP: '' Cidade: '' Endereço: '' Número: '' Bairro: '' Complemento: '' Código do cliente: '' errors: - attribute: CPF / CNPJ errors: - Documento inválido. Informe um CPF (11 dígitos) ou um CNPJ (14 caracteres) válido. ignored_reason: null installment_preview: null entity_suggestion: null - row: 2 data: Nome: Registro de exemplo CPF / CNPJ: '69076295778' Nome fantasia: AUD-oficial1 importado-1 Inscrição Estadual: '' Inscrição Municipal: '' Descrição: '' Status: '' Telefones: '' E-mails: contato-59edfc33@example.invalid Nome do contato: '' Tipo de contato: '' E-mail do contato: '' Telefone do contato: '' Domiciliado no exterior: '' NIF: '' CEP: '' Cidade: '' Endereço: '' Número: '' Bairro: '' Complemento: '' Código do cliente: '' errors: [] ignored_reason: null installment_preview: null entity_suggestion: null links: first: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/data?page=1 last: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/data?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/data?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/data per_page: 50 to: 2 total: 2 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDataImportRow' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /data-migration/imports/{dataImport}/errors: parameters: - name: dataImport in: path required: true description: UUID da importação. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - DataMigration summary: Erros da importação operationId: getDataMigrationImportErrors description: 'Retorna os erros encontrados na verificação da planilha em uma coleção paginada. Quando não há erros disponíveis, retorna uma coleção vazia. Permissões exigidas na chave de acesso: `data_migration.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer description: Itens por página. Sem teto universal presumido. - name: search in: query required: false description: Busca no conteúdo das linhas ou mensagens de erro da importação. schema: type: string responses: '200': description: Erros de verificação da planilha, com paginação. content: application/json: example: data: - Linha: 3 Atributo: CPF / CNPJ Erros: - Documento inválido. Informe um CPF (11 dígitos) ou um CNPJ (14 caracteres) válido. Dados: Nome: Registro de exemplo CPF / CNPJ: abc Nome fantasia: AUD-oficial1 importado-2 Inscrição Estadual: '' Inscrição Municipal: '' Descrição: '' Status: '' Telefones: '' E-mails: contato-7b77a683@example.invalid Nome do contato: '' Tipo de contato: '' E-mail do contato: '' Telefone do contato: '' Domiciliado no exterior: '' NIF: '' CEP: '' Cidade: '' Endereço: '' Número: '' Bairro: '' Complemento: '' Código do cliente: '' links: first: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/errors?page=1 last: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/errors?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/errors?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/data-migration/imports/b67df3ac-7b32-50aa-9152-b26a0d53f164/errors per_page: 50 to: 1 total: 1 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDataImportError' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /data-migration/imports/{dataImport}/executions: parameters: - name: dataImport in: path required: true description: UUID da importação. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb post: tags: - DataMigration summary: Executar importação (import run) operationId: runDataMigrationImport description: 'Inicia a importação de dados de forma assíncrona, alterando `action` para `import` e `status` para `queued`. **Permissão exigida:** `data_migration.create`. A verificação deve estar concluída: `action=verify` e `status=completed` ou `error`. Caso contrário, retorna **422**. Não é necessário enviar corpo na requisição. ' security: - accessKey: [] apiKey: [] responses: 204: description: Importação iniciada com sucesso. Sem conteúdo. 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /document-batches: get: tags: - DocumentLote summary: Listar lotes de documentos operationId: listDocumentLote description: "Lista os lotes de documentos com paginação. A geração dos documentos ocorre de forma assíncrona.\ \ \n\n**Ordenação:** `sort_column` aceita `from`, `to`, `started_at`, `finished_at`, `progress`, `type`,\ \ `status`, `created_at`, `updated_at`. Colunas fora da lista retornam **422** no campo `sort_column`. Use\ \ `sort_direction=asc` ou `desc`; quando omitido ou inválido, o sentido é `asc`.\n\n\nSem `sort_column`,\ \ a ordem é `created_at desc`.\n\nPermissões exigidas na chave de acesso: `accounting_documents.view`. Quando\ \ o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo\ \ da chave, não é uma propriedade fixa da permissão." security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false description: Número da página. schema: type: integer default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - from - to - started_at - finished_at - progress - type - status - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de lotes de documentos. content: application/json: example: data: - id: 820e8d89-2d44-591c-9a19-80fd4eca28ba from: '2026-10-18T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: account_payable started_at: '2026-10-18T05:23:07.000000Z' finished_at: null status: failed progress: 1 created_at: '2026-10-18T05:21:58.000000Z' expires_at: null expired: false links: first: https://empresa-exemplo.invalid/public-api/v1/document-batches?page=1 last: https://empresa-exemplo.invalid/public-api/v1/document-batches?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/document-batches?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/document-batches per_page: 10 to: 1 total: 1 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDocumentBatch' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - DocumentLote summary: Solicitar geração de lote de documentos operationId: storeDocumentLote description: 'Cria um lote de documentos e retorna **201**. A geração ocorre de forma assíncrona, com status inicial `pending` e progresso zero. Consulte `GET /document-batches/{id}` para acompanhar a geração. Um intervalo `from`/`to` sem contas a pagar com pagamentos registrados retorna **400**. Permissões exigidas na chave de acesso: `accounting_documents.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - from - to - type description: Payload para criação de um lote de documentos. properties: from: type: string format: date description: Prefira data ISO AAAA-MM-DD para evitar ambiguidade. O DTO usa Carbon::parse; datas com / não são promessa de interpretação PT-BR. example: '2026-05-01' to: type: string format: date description: Prefira data ISO AAAA-MM-DD para evitar ambiguidade. O DTO usa Carbon::parse; datas com / não são promessa de interpretação PT-BR. example: '2026-05-31' type: type: string enum: - account_payable - account_receivable - complete description: Valores efetivos do StoreRequest e do dispatcher. account_payable_with_brand existe no enum do domínio, mas não é aceito por este request. example: account_payable example: from: '2026-10-01' to: '2026-10-31' type: account_payable responses: 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: ea006282-9add-545a-b9c8-b439cf4eeea4 from: '2026-01-10T03:00:00.000000Z' to: '2026-12-16T03:00:00.000000Z' type: account_payable started_at: null finished_at: null status: pending progress: 0 created_at: '2026-11-01T13:49:35.000000Z' expires_at: null expired: false schema: $ref: '#/components/schemas/PublicContractDocumentBatch' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /document-batches/{document_lote}: parameters: - name: document_lote in: path required: true description: UUID do lote de documentos. schema: type: string format: uuid example: a1b2c3d4-0000-0000-0000-000000000001 get: tags: - DocumentLote summary: Obter lote de documentos operationId: showDocumentLote description: 'Retorna os dados, o status e o progresso do lote. Permissões exigidas na chave de acesso: `accounting_documents.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do lote de documentos. content: application/json: schema: $ref: '#/components/schemas/PublicContractDocumentBatch' example: id: 9c56b502-4f74-4050-b228-434df519e97f from: '2024-05-01T03:00:00.000000Z' to: '2024-07-16T03:00:00.000000Z' type: account_payable started_at: null finished_at: null status: pending progress: 0 created_at: '2024-06-21T09:29:39.000000Z' expires_at: null expired: false '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' delete: tags: - DocumentLote summary: Excluir lote de documentos operationId: destroyDocumentLote description: 'Exclui um lote de documentos. Lotes com status `pending` ou `cancelled` podem ser excluídos; lotes em processamento (`processing` ou `merging`) retornam **400**. Permissões exigidas na chave de acesso: `accounting_documents.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir lote de documentos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O lote em processamento não pode ser excluído. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /document-batches/{document_lote}/cancellations: parameters: - name: document_lote in: path required: true description: UUID do lote de documentos. schema: type: string format: uuid example: a1b2c3d4-0000-0000-0000-000000000001 post: tags: - DocumentLote summary: Cancelar lote de documentos operationId: cancelDocumentLote description: 'Cancela um lote pendente, alterando seu status para `cancelled`. Lotes com status `completed` ou `failed` retornam **400**. Não é necessário enviar corpo na requisição. Permissões exigidas na chave de acesso: `accounting_documents.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: 204: description: Cancelar lote de documentos. Sem corpo de resposta. 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O lote concluído ou com falha não pode ser cancelado. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /document-batches/{document_lote}/file: parameters: - name: document_lote in: path required: true description: UUID do lote de documentos. schema: type: string format: uuid example: a1b2c3d4-0000-0000-0000-000000000001 get: tags: - DocumentLote summary: Baixar PDF do lote de documentos operationId: streamDocumentLote description: 'Faz o download do PDF do lote. Aguarde o status `completed` e a disponibilização do arquivo antes de solicitar o download. Permissões exigidas na chave de acesso: `accounting_documents.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do PDF gerado. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '410': description: O recurso não está mais disponível. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O lote precisa ter arquivo disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem410' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': $ref: '#/components/responses/BadRequest' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /employees: get: tags: - Employees summary: Listar funcionários operationId: listEmployees description: 'Retorna uma lista paginada de funcionários. Use `status=true` para listar ativos e `status=false` para inativos. Se `status` for omitido, são listados ativos e inativos. Permissões exigidas na chave de acesso: `employees.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: status in: query required: false description: Filtra funcionários ativos (`true`) ou inativos (`false`). schema: type: boolean - name: search in: query required: false description: Busca por nome ou CPF (LIKE parcial). schema: type: string - name: page in: query required: false description: Número da página. schema: type: integer default: 1 - name: per_page in: query required: false description: Itens por página. schema: type: integer responses: 200: description: Lista paginada de funcionários. content: application/json: example: data: - id: f833fb48-d175-5c1e-9bdf-1b4e5e71791d user_id: null employee_workspace_id: null employee_graduation_level_id: null name: Registro de exemplo description: Descrição ilustrativa course: null type: PF marital_status: null gender: null cpf: '00000000000' payment_day: null childs: null birth_date: null pis_pasep: null social_registration: null sector: TI occupation: Analista Sr work_schedule: null employee_code: null salary: 3000 payment_type: monthly hire_date: null probation_contract: false probation_observation: null probation_duration: null prorrogation_probation_contract: false prorrogation_probation_observation: null prorrogation_probation_duration: null term_date: null has_childs: 0 active: false created_at: '2026-10-18T00:15:30.000000Z' updated_at: '2026-10-18T00:16:42.000000Z' emails: - id: d599c99d-1200-510a-8989-89aef2cd4760 email_type: Corporativo email_type_id: 55382798-7f2e-505c-83aa-5ba5207abb4a email: contato-242ef4e5@example.invalid type: id: 55382798-7f2e-505c-83aa-5ba5207abb4a name: Registro de exemplo description: Descrição ilustrativa description: null phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: null workspace: null documents: - id: f12b53fc-8468-58bd-81e8-e58d3d27ebf8 document_profile_id: 655275ec-d17a-5f06-8978-d2b296edc7d4 document_profile_name: AUD4-10180154 Perfil 6558 document_profile_description: null attachment: null original_name: '' required: true - id: b856b564-2e45-569a-9f4f-54c49da7ad49 document_profile_id: c5a7f0d2-6961-5bb5-ba63-7ef72213dcbb document_profile_name: AUD4-10180201 Perfil 8cmu document_profile_description: null attachment: null original_name: '' required: true - id: ea66a5f7-f126-55a8-af3c-60cd41d42077 document_profile_id: 328f299c-34a6-5e30-b74e-f00021036beb document_profile_name: AUD4-10180208 Perfil a3yp document_profile_description: null attachment: null original_name: '' required: true - id: 098d81c5-dd7f-5245-95a8-5fd54f83d7b0 document_profile_id: 9e33618a-47a9-5b42-96a3-70333a4fb5d7 document_profile_name: AUD4-10180318 Perfil mw5w document_profile_description: null attachment: null original_name: '' required: true - id: 43882c3d-d289-596f-b662-f0ca0ac7a0b5 document_profile_id: cefce142-73d7-57e3-b74d-08ba54c51113 document_profile_name: AUD4-10200033 Perfil goks document_profile_description: null attachment: null original_name: '' required: true - id: ec5a22a7-1201-541f-922c-2a92beda86dd document_profile_id: 15d570b9-e1a0-56ed-a880-ccf23f5dd74f document_profile_name: AUD4-10200116 Perfil ugcl document_profile_description: null attachment: null original_name: '' required: true - id: 1c103c04-3307-5aaf-bf9b-c70c7ae55349 document_profile_id: 036aa35a-8ccf-5717-a834-5e92888ace9b document_profile_name: AUD4-10200127 Perfil mlb8 document_profile_description: null attachment: null original_name: '' required: true - id: 32967cf4-308d-5886-9c3b-152fc1efbaf5 document_profile_id: a438c950-6855-5806-804b-18dba7b5b02e document_profile_name: AUD4-10200129 Perfil lkiv document_profile_description: null attachment: null original_name: '' required: true - id: b1e9f768-8942-5cd0-9b6e-1d69dd9b5973 document_profile_id: 2d7bc49d-b164-568b-a96b-4fa329d23be0 document_profile_name: AUD4-10200149 Perfil telo document_profile_description: null attachment: null original_name: '' required: true - id: 046b2b71-4464-568b-b78b-8c00c2c53bbf user_id: null employee_workspace_id: 341f9399-92ae-5fb5-b8bc-cfe088e055a5 employee_graduation_level_id: 7009973c-2d74-5915-99c6-0ea452950776 name: Registro de exemplo description: null course: null type: PF marital_status: single gender: male cpf: '00000000000' payment_day: '5' childs: null birth_date: null pis_pasep: null social_registration: null sector: null occupation: Analista work_schedule: null employee_code: null salary: 1234.56 payment_type: monthly hire_date: '2024-01-15' probation_contract: false probation_observation: null probation_duration: null prorrogation_probation_contract: false prorrogation_probation_observation: null prorrogation_probation_duration: null term_date: null has_childs: 0 active: false created_at: '2026-10-18T05:10:37.000000Z' updated_at: '2026-10-18T05:15:53.000000Z' emails: - id: 41b98729-c8c5-5c11-abd2-0615e69f48a7 email_type: AUD4 put 7uhu email_type_id: edbc9afb-c3e6-535a-9e12-eab5a767aca7 email: contato-526b74c7@example.invalid type: id: edbc9afb-c3e6-535a-9e12-eab5a767aca7 name: Registro de exemplo description: Descrição ilustrativa description: null phones: - id: 023e1334-8d50-55e0-83b5-72f983210b08 phone_type: AUD4-10180130 Tipo tel put e90qx phone_type_id: c47ce686-33b0-5820-8929-6f1d99786d38 phone: '3100000000' wpp: false description: null bankAccounts: - bank_name: Banco AUD4 account: 12345-6 agency: '0001' description: null pix: pix-func benefits: - name: Registro de exemplo type: monthly value: '200.50' addresses: - id: 5c24e788-a4aa-5201-b250-fa8939db9fd7 type: none address: Avenida Afonso Pena city_id: '2308' city: Belo Horizonte state_id: '11' state: Minas Gerais stateLetter: MG country: null country_name: '' number: '1000' neighborhood: Centro complement: Sala 1 description: Descrição ilustrativa zipcode: '30130009' graduation: Pós-graduação - Doutorado workspace: Escritório documents: - id: 3afe9043-b895-5ac3-8685-3c52a5bc507b document_profile_id: 328f299c-34a6-5e30-b74e-f00021036beb document_profile_name: AUD4-10180208 Perfil a3yp document_profile_description: null attachment: null original_name: '' required: true - id: dae84870-87b0-5617-a507-3760d4d6492b document_profile_id: 9e33618a-47a9-5b42-96a3-70333a4fb5d7 document_profile_name: AUD4-10180318 Perfil mw5w document_profile_description: null attachment: null original_name: '' required: true - id: 81eabc92-df9a-5ee9-bdae-8962c18ecc94 document_profile_id: cefce142-73d7-57e3-b74d-08ba54c51113 document_profile_name: AUD4-10200033 Perfil goks document_profile_description: null attachment: null original_name: '' required: true - id: 59657119-efe9-5d04-ad76-eaca32ed3e7f document_profile_id: 15d570b9-e1a0-56ed-a880-ccf23f5dd74f document_profile_name: AUD4-10200116 Perfil ugcl document_profile_description: null attachment: null original_name: '' required: true - id: b36716de-0a4c-5de1-ac25-224b356480e1 document_profile_id: 036aa35a-8ccf-5717-a834-5e92888ace9b document_profile_name: AUD4-10200127 Perfil mlb8 document_profile_description: null attachment: null original_name: '' required: true - id: df81d180-4a14-51bd-83e9-f1f46f33a12b document_profile_id: a438c950-6855-5806-804b-18dba7b5b02e document_profile_name: AUD4-10200129 Perfil lkiv document_profile_description: null attachment: null original_name: '' required: true - id: a68b3ef0-c6c9-5442-b45a-f4bedd8eef80 document_profile_id: 2d7bc49d-b164-568b-a96b-4fa329d23be0 document_profile_name: AUD4-10200149 Perfil telo document_profile_description: null attachment: null original_name: '' required: true links: first: https://empresa-exemplo.invalid/public-api/v1/employees?page=1 last: https://empresa-exemplo.invalid/public-api/v1/employees?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/employees?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/employees per_page: 10 to: 2 total: 2 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractEmployee' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Employees summary: Criar funcionário operationId: createEmployee description: 'Cria um funcionário e retorna **201**. Aceita `application/json` ou `multipart/form-data`. No multipart, envie os campos aninhados (`emails`, `phones`, `addresses`, `benefits`, `bankAccounts`, `hours`, `documentFilesMap`) como strings JSON. `payment_day`, `marital_status` e `gender` são obrigatórios. `salary` deve ser no mínimo `0.01`. Cada `emails.*.email` aceita até 60 caracteres e `bankAccounts.*.bank_name`, até 50. Valores inválidos retornam **422**. Permissões exigidas na chave de acesso: `employees.view` e `employees.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: description: Dados para criar um funcionário. A matrícula eSocial é opcional; envie o valor aparado conforme o formato indicado. allOf: - type: object description: 'Dados para criar ou atualizar um funcionário. O CPF deve ser único, desconsiderando o próprio funcionário na atualização. Campos aninhados (`emails`, `phones`, `addresses`, `benefits`, `bankAccounts`, `hours`, `documentFilesMap`) podem ser arrays em `application/json` ou strings JSON em `multipart/form-data`. `payment_day`, `marital_status` e `gender` são obrigatórios; omiti-los retorna **422**. ' required: - employee_workspace_id - employee_graduation_level_id - name - occupation - cpf - salary - payment_type - hire_date - payment_day - marital_status - gender properties: employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' payment_type: type: string description: 'Enum (PaymentType): monthly | weekly | biweekly | daily | hourly' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. active: oneOf: - type: boolean - type: integer enum: - 0 - 1 description: Estado ativo do funcionário. Aceita booleanos JSON true/false ou inteiro 0/1. A validação e o serviço preservam as mesmas regras de ativação. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: boolean nullable: true childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true marital_status: type: string description: Estado civil. Obrigatório; omiti-lo retorna 422. gender: type: string description: Gênero. Obrigatório; omiti-lo retorna 422. birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: Dados do contrato de experiência do funcionário. type: boolean nullable: true probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: Dados da prorrogação do contrato de experiência. type: boolean nullable: true prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: description: Associação entre os perfis documentais e os campos usados no envio dos arquivos. type: array nullable: true items: type: object required: - document_profile_id - file_post_name properties: document_profile_id: description: UUID do perfil que define os documentos exigidos para este cadastro. type: string format: uuid file_post_name: description: Nome do campo utilizado no envio do arquivo documental. type: string emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float hours: description: Carga horária informada no vínculo de trabalho ou estágio. type: array nullable: true items: type: object required: - day - workload - start_work - end_work properties: day: type: string description: 'Enum (DaysOnWeekType): monday | tuesday | wednesday | thursday | friday | saturday | sunday' workload: type: string description: Formato H:i:s (ex. 08:00:00). start_work: type: string description: Formato H:i:s. start_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se return_lunch estiver preenchido. return_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se start_lunch estiver preenchido. end_work: type: string description: Formato H:i:s. - type: object properties: social_registration: type: string nullable: true maxLength: 30 pattern: ^[A-Za-z0-9-]*$ description: 'Matrícula eSocial opcional. Após aparar espaços nas extremidades, use até 30 caracteres: letras ASCII, números e hífen. Vazio ou null significa sem matrícula.' properties: gender: type: string enum: - male - female description: 'Valores aceitos: `male`, `female`.' payment_type: type: string enum: - monthly - hourly description: 'Valores aceitos: `monthly`, `hourly`.' marital_status: type: string enum: - divorced - single - married - others description: 'Valores aceitos: `divorced`, `single`, `married`, `others`.' hours: items: type: object properties: start_lunch: type: string nullable: true description: Opcional no formato H:i:s. A regra atual não cria obrigação recíproca por item. return_lunch: type: string nullable: true description: Opcional no formato H:i:s. A regra atual não cria obrigação recíproca por item. description: Carga horária informada no vínculo de trabalho ou estágio. active: oneOf: - type: boolean - type: integer enum: - 0 - 1 description: Estado ativo do funcionário. Aceita booleanos JSON true/false ou inteiro 0/1. A validação e o serviço preservam as mesmas regras de ativação. example: employee_workspace_id: b2c3d4e5-f6a7-8901-bcde-f12345678901 employee_graduation_level_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: João Silva occupation: Analista de Sistemas cpf: '12345678901' salary: 5000.0 payment_type: monthly hire_date: '2024-01-15' active: 1 payment_day: 5 marital_status: single gender: male emails: - email: joao@empresa.com email_type_id: a5d65bcd-b4f7-4e8c-a156-f31644748343 phones: - phone: '11999999999' phone_type_id: 684b638a-ab19-4864-8a61-8533c98480ea addresses: - state_id: 10000000-0000-4000-8000-000000000016 city_id: 10000000-0000-4000-8000-000000000030 address: Rua das Flores number: '100' neighborhood: Centro zipcode: '30110000' bankAccounts: [] benefits: [] hours: [] multipart/form-data: schema: description: Dados para criar um funcionário. A matrícula eSocial é opcional; envie o valor aparado conforme o formato indicado. allOf: - type: object description: 'Dados para criar ou atualizar um funcionário. O CPF deve ser único, desconsiderando o próprio funcionário na atualização. Campos aninhados (`emails`, `phones`, `addresses`, `benefits`, `bankAccounts`, `hours`, `documentFilesMap`) podem ser arrays em `application/json` ou strings JSON em `multipart/form-data`. `payment_day`, `marital_status` e `gender` são obrigatórios; omiti-los retorna **422**. ' required: - employee_workspace_id - employee_graduation_level_id - name - occupation - cpf - salary - payment_type - hire_date - payment_day - marital_status - gender properties: employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' payment_type: type: string description: 'Enum (PaymentType): monthly | weekly | biweekly | daily | hourly' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. active: type: integer enum: - 0 - 1 description: No multipart, envie 1 para ativo e 0 para inativo. As partes são textuais na transmissão; true/false em texto não são aceitos pela regra inteira. Booleanos JSON pertencem ao corpo application/json. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: integer nullable: true enum: - 0 - 1 childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true marital_status: type: string description: Estado civil. Obrigatório; omiti-lo retorna 422. gender: type: string description: Gênero. Obrigatório; omiti-lo retorna 422. birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados do contrato de experiência do funcionário. type: integer nullable: true enum: - 0 - 1 probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados da prorrogação do contrato de experiência. type: integer nullable: true enum: - 0 - 1 prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: description: Associação entre os perfis documentais e os campos usados no envio dos arquivos. type: array nullable: true items: type: object required: - document_profile_id - file_post_name properties: document_profile_id: description: UUID do perfil que define os documentos exigidos para este cadastro. type: string format: uuid file_post_name: description: Nome do campo utilizado no envio do arquivo documental. type: string emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. x-docs-decoded-schema: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: type: string description: Texto JSON válido, decodificado antes da validação. Benefícios vinculados ao funcionário ou estagiário. x-docs-decoded-schema: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float hours: type: string description: Texto JSON válido, decodificado antes da validação. Carga horária informada no vínculo de trabalho ou estágio. x-docs-decoded-schema: description: Carga horária informada no vínculo de trabalho ou estágio. type: array nullable: true items: type: object required: - day - workload - start_work - end_work properties: day: type: string description: 'Enum (DaysOnWeekType): monday | tuesday | wednesday | thursday | friday | saturday | sunday' workload: type: string description: Formato H:i:s (ex. 08:00:00). start_work: type: string description: Formato H:i:s. start_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se return_lunch estiver preenchido. return_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se start_lunch estiver preenchido. end_work: type: string description: Formato H:i:s. - type: object properties: social_registration: type: string nullable: true maxLength: 30 pattern: ^[A-Za-z0-9-]*$ description: 'Matrícula eSocial opcional. Após aparar espaços nas extremidades, use até 30 caracteres: letras ASCII, números e hífen. Vazio ou null significa sem matrícula.' properties: gender: type: string enum: - male - female description: 'Valores aceitos: `male`, `female`.' payment_type: type: string enum: - monthly - hourly description: 'Valores aceitos: `monthly`, `hourly`.' marital_status: type: string enum: - divorced - single - married - others description: 'Valores aceitos: `divorced`, `single`, `married`, `others`.' hours: type: string description: 'Texto JSON válido, decodificado antes da validação. ' x-docs-decoded-schema: items: type: object properties: start_lunch: type: string nullable: true description: Opcional no formato H:i:s. A regra atual não cria obrigação recíproca por item. return_lunch: type: string nullable: true description: Opcional no formato H:i:s. A regra atual não cria obrigação recíproca por item. active: type: integer enum: - 0 - 1 description: No multipart, envie 1 para ativo e 0 para inativo. As partes são textuais na transmissão; true/false em texto não são aceitos pela regra inteira. Booleanos JSON pertencem ao corpo application/json. employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: integer nullable: true enum: - 0 - 1 childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados do contrato de experiência do funcionário. type: integer nullable: true enum: - 0 - 1 probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados da prorrogação do contrato de experiência. type: integer nullable: true enum: - 0 - 1 prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. x-docs-decoded-schema: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: type: string description: Texto JSON válido, decodificado antes da validação. Benefícios vinculados ao funcionário ou estagiário. x-docs-decoded-schema: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float social_registration: type: string nullable: true maxLength: 30 pattern: ^[A-Za-z0-9-]*$ description: 'Matrícula eSocial opcional. Após aparar espaços nas extremidades, use até 30 caracteres: letras ASCII, números e hífen. Vazio ou null significa sem matrícula.' additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: emails: contentType: text/plain phones: contentType: text/plain addresses: contentType: text/plain benefits: contentType: text/plain bankAccounts: contentType: text/plain hours: contentType: text/plain documentFilesMap: contentType: text/plain responses: 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/PublicContractEmployee' example: id: 330e6f2c-d502-5370-800f-e7cb1ac2b2f7 user_id: null employee_workspace_id: 341f9399-92ae-5fb5-b8bc-cfe088e055a5 employee_graduation_level_id: 7009973c-2d74-5915-99c6-0ea452950776 name: Registro de exemplo description: null course: null type: PF marital_status: single gender: male cpf: '00000000000' payment_day: '5' childs: null birth_date: null pis_pasep: null social_registration: null sector: null occupation: Analista Financeiro work_schedule: null employee_code: null salary: 1500.5 payment_type: monthly hire_date: '2026-10-02' probation_contract: false probation_observation: null probation_duration: null prorrogation_probation_contract: false prorrogation_probation_observation: null prorrogation_probation_duration: null term_date: null has_childs: 0 active: true created_at: '2026-11-01T13:11:48.000000Z' updated_at: '2026-11-01T13:11:48.000000Z' emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Pós-graduação - Doutorado workspace: Escritório documents: [] 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/employees\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header\ \ \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string \"employee_workspace_id=${CAMPO_EMPLOYEE_WORKSPACE_ID}\"\ \ \\\n --form-string \"employee_graduation_level_id=${CAMPO_EMPLOYEE_GRADUATION_LEVEL_ID}\" \\\n --form-string\ \ \"name=${CAMPO_NAME}\" \\\n --form-string \"occupation=${CAMPO_OCCUPATION}\" \\\n --form-string \"\ cpf=${CAMPO_CPF}\" \\\n --form-string \"salary=${CAMPO_SALARY}\" \\\n --form-string \"payment_type=${CAMPO_PAYMENT_TYPE}\"\ \ \\\n --form-string \"hire_date=${CAMPO_HIRE_DATE}\" \\\n --form-string \"payment_day=${CAMPO_PAYMENT_DAY}\"\ \ \\\n --form-string \"marital_status=${CAMPO_MARITAL_STATUS}\" \\\n --form-string \"gender=${CAMPO_GENDER}\"\ \ \\\n --form-string \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" /employees/graduation-levels: get: tags: - Employees summary: Listar níveis de formação operationId: listEmployeeGraduationLevels description: 'Retorna os níveis de formação disponíveis para funcionários. **Permissão exigida:** `employees.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de níveis de formação. content: application/json: example: - id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: Ensino Médio - id: b2c3d4e5-f6a7-8901-bcde-f12345678901 name: Ensino Superior schema: type: array items: $ref: '#/components/schemas/PublicContractLookupName' '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /employees/workspaces: get: tags: - Employees summary: Listar locais de trabalho (workspaces) operationId: listEmployeeWorkspaces description: 'Retorna os locais de trabalho disponíveis para funcionários. **Permissão exigida:** `employees.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de workspaces. content: application/json: example: - id: b2c3d4e5-f6a7-8901-bcde-f12345678901 name: Sede Principal - id: c3d4e5f6-a7b8-9012-cdef-123456789012 name: Filial Centro schema: type: array items: $ref: '#/components/schemas/PublicContractLookupName' '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /employees/{employee}: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - Employees summary: Obter funcionário operationId: showEmployee description: 'Retorna os detalhes de um funcionário, incluindo e-mails, telefones, endereços, contas bancárias, benefícios e documentos. O campo `graduation` é o nome do nível de formação (string nullable). O campo `workspace` é o nome do local de trabalho (string nullable). `salary` é serializado como float (pode aparecer como número sem casas decimais). Permissões exigidas na chave de acesso: `employees.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do funcionário. content: application/json: schema: $ref: '#/components/schemas/PublicContractEmployee' example: id: 51f05983-64ee-5f25-9a4b-d7648e6937c6 user_id: null employee_workspace_id: 341f9399-92ae-5fb5-b8bc-cfe088e055a5 employee_graduation_level_id: 7009973c-2d74-5915-99c6-0ea452950776 name: Registro de exemplo description: null course: null type: PF marital_status: single gender: male cpf: '00000000000' payment_day: '5' childs: 2 birth_date: null pis_pasep: null social_registration: AUD-ESOC-220205 sector: null occupation: Analista Financeiro work_schedule: null employee_code: AUD-COD-220205 salary: 1500.5 payment_type: monthly hire_date: '2026-10-02' probation_contract: false probation_observation: null probation_duration: null prorrogation_probation_contract: false prorrogation_probation_observation: null prorrogation_probation_duration: null term_date: null has_childs: 1 active: true created_at: '2026-11-01T13:20:24.000000Z' updated_at: '2026-11-01T13:20:24.000000Z' emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Pós-graduação - Doutorado workspace: Escritório documents: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Employees summary: Editar funcionário operationId: updateEmployee description: 'Atualiza os dados de um funcionário. Aceita `application/json` ou `multipart/form-data`. O CPF deve ser único, desconsiderando o próprio funcionário. `payment_day`, `marital_status` e `gender` são obrigatórios. `salary` deve ser no mínimo `0.01`. Cada `emails.*.email` aceita até 60 caracteres e `bankAccounts.*.bank_name`, até 50. Valores inválidos retornam **422**. Permissões exigidas na chave de acesso: `employees.view` e `employees.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: description: Dados para atualizar um funcionário. A matrícula já gravada pode ser mantida; se for alterada, deve atender ao formato atual. allOf: - type: object description: 'Dados para criar ou atualizar um funcionário. O CPF deve ser único, desconsiderando o próprio funcionário na atualização. Campos aninhados (`emails`, `phones`, `addresses`, `benefits`, `bankAccounts`, `hours`, `documentFilesMap`) podem ser arrays em `application/json` ou strings JSON em `multipart/form-data`. `payment_day`, `marital_status` e `gender` são obrigatórios; omiti-los retorna **422**. ' required: - employee_workspace_id - employee_graduation_level_id - name - occupation - cpf - salary - payment_type - hire_date - payment_day - marital_status - gender properties: employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' payment_type: type: string description: 'Enum (PaymentType): monthly | weekly | biweekly | daily | hourly' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. active: oneOf: - type: boolean - type: integer enum: - 0 - 1 description: Estado ativo do funcionário. Aceita booleanos JSON true/false ou inteiro 0/1. A validação e o serviço preservam as mesmas regras de ativação. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: boolean nullable: true childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true marital_status: type: string description: Estado civil. Obrigatório; omiti-lo retorna 422. gender: type: string description: Gênero. Obrigatório; omiti-lo retorna 422. birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: Dados do contrato de experiência do funcionário. type: boolean nullable: true probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: Dados da prorrogação do contrato de experiência. type: boolean nullable: true prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: description: Associação entre os perfis documentais e os campos usados no envio dos arquivos. type: array nullable: true items: type: object required: - document_profile_id - file_post_name properties: document_profile_id: description: UUID do perfil que define os documentos exigidos para este cadastro. type: string format: uuid file_post_name: description: Nome do campo utilizado no envio do arquivo documental. type: string emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float hours: description: Carga horária informada no vínculo de trabalho ou estágio. type: array nullable: true items: type: object required: - day - workload - start_work - end_work properties: day: type: string description: 'Enum (DaysOnWeekType): monday | tuesday | wednesday | thursday | friday | saturday | sunday' workload: type: string description: Formato H:i:s (ex. 08:00:00). start_work: type: string description: Formato H:i:s. start_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se return_lunch estiver preenchido. return_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se start_lunch estiver preenchido. end_work: type: string description: Formato H:i:s. - type: object properties: social_registration: type: string nullable: true description: Matrícula eSocial opcional. A matrícula legada inalterada é aceita mesmo fora do formato atual; a comparação apara espaços nas extremidades dos dois valores. Se mudar, o valor aparado deve ter até 30 caracteres, apenas letras ASCII, números e hífen. Vazio ou null limpa a matrícula. properties: active: oneOf: - type: boolean - type: integer enum: - 0 - 1 description: Estado ativo do funcionário. Aceita booleanos JSON true/false ou inteiro 0/1. A validação e o serviço preservam as mesmas regras de ativação. example: employee_workspace_id: b2c3d4e5-f6a7-8901-bcde-f12345678901 employee_graduation_level_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 name: João Silva Atualizado occupation: Sênior Analista cpf: '12345678901' salary: 6500.0 payment_type: monthly hire_date: '2023-01-01' payment_day: 10 marital_status: married gender: male multipart/form-data: schema: description: Dados para atualizar um funcionário. A matrícula já gravada pode ser mantida; se for alterada, deve atender ao formato atual. allOf: - type: object description: 'Dados para criar ou atualizar um funcionário. O CPF deve ser único, desconsiderando o próprio funcionário na atualização. Campos aninhados (`emails`, `phones`, `addresses`, `benefits`, `bankAccounts`, `hours`, `documentFilesMap`) podem ser arrays em `application/json` ou strings JSON em `multipart/form-data`. `payment_day`, `marital_status` e `gender` são obrigatórios; omiti-los retorna **422**. ' required: - employee_workspace_id - employee_graduation_level_id - name - occupation - cpf - salary - payment_type - hire_date - payment_day - marital_status - gender properties: employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' payment_type: type: string description: 'Enum (PaymentType): monthly | weekly | biweekly | daily | hourly' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. active: type: integer enum: - 0 - 1 description: No multipart, envie 1 para ativo e 0 para inativo. As partes são textuais na transmissão; true/false em texto não são aceitos pela regra inteira. Booleanos JSON pertencem ao corpo application/json. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: integer nullable: true enum: - 0 - 1 childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true marital_status: type: string description: Estado civil. Obrigatório; omiti-lo retorna 422. gender: type: string description: Gênero. Obrigatório; omiti-lo retorna 422. birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados do contrato de experiência do funcionário. type: integer nullable: true enum: - 0 - 1 probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados da prorrogação do contrato de experiência. type: integer nullable: true enum: - 0 - 1 prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: description: Associação entre os perfis documentais e os campos usados no envio dos arquivos. type: array nullable: true items: type: object required: - document_profile_id - file_post_name properties: document_profile_id: description: UUID do perfil que define os documentos exigidos para este cadastro. type: string format: uuid file_post_name: description: Nome do campo utilizado no envio do arquivo documental. type: string emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. x-docs-decoded-schema: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: type: string description: Texto JSON válido, decodificado antes da validação. Benefícios vinculados ao funcionário ou estagiário. x-docs-decoded-schema: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float hours: type: string description: Texto JSON válido, decodificado antes da validação. Carga horária informada no vínculo de trabalho ou estágio. x-docs-decoded-schema: description: Carga horária informada no vínculo de trabalho ou estágio. type: array nullable: true items: type: object required: - day - workload - start_work - end_work properties: day: type: string description: 'Enum (DaysOnWeekType): monday | tuesday | wednesday | thursday | friday | saturday | sunday' workload: type: string description: Formato H:i:s (ex. 08:00:00). start_work: type: string description: Formato H:i:s. start_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se return_lunch estiver preenchido. return_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se start_lunch estiver preenchido. end_work: type: string description: Formato H:i:s. - type: object properties: social_registration: type: string nullable: true description: Matrícula eSocial opcional. A matrícula legada inalterada é aceita mesmo fora do formato atual; a comparação apara espaços nas extremidades dos dois valores. Se mudar, o valor aparado deve ter até 30 caracteres, apenas letras ASCII, números e hífen. Vazio ou null limpa a matrícula. properties: active: type: integer enum: - 0 - 1 description: No multipart, envie 1 para ativo e 0 para inativo. As partes são textuais na transmissão; true/false em texto não são aceitos pela regra inteira. Booleanos JSON pertencem ao corpo application/json. employee_workspace_id: type: string format: uuid description: ID do local de trabalho (deve existir em employee_workspaces). employee_graduation_level_id: type: string format: uuid description: ID do nível de formação (deve existir em employee_graduation_levels). user_id: type: string format: uuid nullable: true description: ID do usuário associado (nullable). name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. occupation: description: Ocupação ou profissão informada no cadastro da pessoa. type: string maxLength: 100 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string nullable: true maxLength: 128 cpf: type: string maxLength: 14 description: CPF único por tenant (registros excluídos ignorados). Até 14 chars (com formatação). salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' payment_type: type: string description: 'Enum (PaymentType): monthly | weekly | biweekly | daily | hourly' hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string format: date nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. payment_day: type: integer minimum: 1 maximum: 31 description: Dia do pagamento. Obrigatório; omiti-lo retorna 422. employee_code: type: string nullable: true maxLength: 20 description: Código único por tenant (registros excluídos ignorados). pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string nullable: true maxLength: 191 has_childs: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. type: integer nullable: true enum: - 0 - 1 childs: description: Quantidade de filhos informada no cadastro da pessoa. type: integer nullable: true marital_status: type: string description: Estado civil. Obrigatório; omiti-lo retorna 422. gender: type: string description: Gênero. Obrigatório; omiti-lo retorna 422. birth_date: type: string format: date nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. sector: description: Setor de trabalho ao qual a pessoa está vinculada. type: string nullable: true maxLength: 191 probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados do contrato de experiência do funcionário. type: integer nullable: true enum: - 0 - 1 probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. probation_observation: description: Observações sobre o período do contrato de experiência. type: string nullable: true prorrogation_probation_contract: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Dados da prorrogação do contrato de experiência. type: integer nullable: true enum: - 0 - 1 prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. prorrogation_probation_observation: description: Observações sobre a prorrogação do contrato de experiência. type: string nullable: true documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. minLength: 10 maxLength: 11 phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. x-docs-decoded-schema: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 benefits: type: string description: Texto JSON válido, decodificado antes da validação. Benefícios vinculados ao funcionário ou estagiário. x-docs-decoded-schema: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: 'Enum (BenefitType): monthly | one_time | ...' value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number format: float hours: type: string description: Texto JSON válido, decodificado antes da validação. Carga horária informada no vínculo de trabalho ou estágio. x-docs-decoded-schema: description: Carga horária informada no vínculo de trabalho ou estágio. type: array nullable: true items: type: object required: - day - workload - start_work - end_work properties: day: type: string description: 'Enum (DaysOnWeekType): monday | tuesday | wednesday | thursday | friday | saturday | sunday' workload: type: string description: Formato H:i:s (ex. 08:00:00). start_work: type: string description: Formato H:i:s. start_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se return_lunch estiver preenchido. return_lunch: type: string nullable: true description: Formato H:i:s. Obrigatório se start_lunch estiver preenchido. end_work: type: string description: Formato H:i:s. social_registration: type: string nullable: true description: Matrícula eSocial opcional. A matrícula legada inalterada é aceita mesmo fora do formato atual; a comparação apara espaços nas extremidades dos dois valores. Se mudar, o valor aparado deve ter até 30 caracteres, apenas letras ASCII, números e hífen. Vazio ou null limpa a matrícula. additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: emails: contentType: text/plain phones: contentType: text/plain addresses: contentType: text/plain benefits: contentType: text/plain bankAccounts: contentType: text/plain hours: contentType: text/plain documentFilesMap: contentType: text/plain responses: '200': description: Funcionário atualizado. content: application/json: schema: $ref: '#/components/schemas/PublicContractEmployee' example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb name: João Silva Atualizado occupation: Sênior Analista salary: 6500 payment_type: monthly active: true emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Ensino Médio workspace: Sede Principal documents: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request PUT \"$BASE_URL/employees/${EMPLOYEE_ID}\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"employee_workspace_id=${CAMPO_EMPLOYEE_WORKSPACE_ID}\" \\\n --form-string \"employee_graduation_level_id=${CAMPO_EMPLOYEE_GRADUATION_LEVEL_ID}\"\ \ \\\n --form-string \"name=${CAMPO_NAME}\" \\\n --form-string \"occupation=${CAMPO_OCCUPATION}\" \\\ \n --form-string \"cpf=${CAMPO_CPF}\" \\\n --form-string \"salary=${CAMPO_SALARY}\" \\\n --form-string\ \ \"payment_type=${CAMPO_PAYMENT_TYPE}\" \\\n --form-string \"hire_date=${CAMPO_HIRE_DATE}\" \\\n --form-string\ \ \"payment_day=${CAMPO_PAYMENT_DAY}\" \\\n --form-string \"marital_status=${CAMPO_MARITAL_STATUS}\"\ \ \\\n --form-string \"gender=${CAMPO_GENDER}\" \\\n --form-string \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\"\ \ \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" delete: tags: - Employees summary: Excluir funcionário operationId: deleteEmployee description: 'Exclui um funcionário. Retorna **HTTP 204** sem conteúdo. Permissões exigidas na chave de acesso: `employees.view` e `employees.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir funcionário. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /employees/{employee}/activation: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb put: tags: - Employees summary: Ativar / inativar funcionário operationId: toggleEmployeeActive description: 'Define o status `active` do funcionário. **Permissão exigida:** `employees.update`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - active properties: active: type: boolean description: Novo status do funcionário. example: active: true responses: 200: description: Status alterado. content: application/json: example: message: Operação realizada com sucesso. schema: $ref: '#/components/schemas/PublicContractMessage' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /employees/{employee}/documents: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - Employees summary: Listar documentos do funcionário operationId: listEmployeeDocuments description: 'Retorna os documentos vinculados ao funcionário. Requer `documents.view` (além de `employees.view` base). ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de documentos. content: application/json: example: - id: ce504afc-7070-57ec-a48c-9d75ea9ce645 document_profile_id: 0c740c35-989e-52b2-807a-1413f6dba139 document_profile_name: AUD-oficial1 Perfil employee document_profile_description: null attachment: null original_name: '' required: false schema: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - Employees summary: Adicionar novo documento ao funcionário operationId: addEmployeeDocument description: 'Vincula um documento ao funcionário. **Permissões exigidas:** `employees.view` + `documents.create`. ' security: - accessKey: [] apiKey: [] requestBody: required: true description: Vincula um ou mais perfis de documento ao cadastro. Envie apenas document_profile_id. Para anexar arquivo, utilize a operação de upload; attachment_id e original_name não são aceitos aqui. content: application/json: schema: oneOf: - type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. - type: array minItems: 1 items: type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. example: document_profile_id: 10000000-0000-4000-8000-000000000001 responses: '200': description: Documento vinculado. content: application/json: example: document_profile_id: 0c740c35-989e-52b2-807a-1413f6dba139 id: ce504afc-7070-57ec-a48c-9d75ea9ce645 schema: oneOf: - $ref: '#/components/schemas/PublicContractRawPersonDocument' - type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /employees/{employee}/documents/attachment: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/employees/${EMPLOYEE_ID}/documents/attachment\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"attachment=@${ARQUIVO_ATTACHMENT}\" \\\n --form-string \"document_id=${CAMPO_DOCUMENT_ID}\"" tags: - Employees summary: Anexar arquivo a documento do funcionário operationId: uploadEmployeeDocumentAttachment description: 'Envia um arquivo PDF para um documento do funcionário. Use `multipart/form-data`. **Permissões exigidas:** `employees.view` + `documents.update`. O documento deve existir e pertencer ao funcionário. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - attachment - document_id properties: attachment: type: string format: binary description: Arquivo PDF a ser enviado. document_id: type: string description: 'ID do documento (registro em `employee_has_documents`) ao qual o anexo pertence. ' example: b560292c-1908-4500-ba80-ec7798f11d5a responses: 200: description: Documento anexado com sucesso. content: application/json: example: id: 9c5422a0-ad44-4670-9dc4-46be00252759 document_profile_id: 9ac70ec3-b4b3-491d-8bca-b9e36843aa29 document_profile_name: Documento de identificação document_profile_description: null attachment: name: contrato_joao type: document size: 1048576 mime: application/pdf ext: pdf url: https://minha-empresa.api.maisgestao.com.br/.../contrato_joao.pdf created_at: '2026-06-21T10:00:00.000000Z' original_name: contrato_joao.pdf required: false schema: $ref: '#/components/schemas/PublicContractPersonDocument' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /employees/{employee}/documents/required: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - Employees summary: Documentos obrigatórios do funcionário operationId: requiredEmployeeDocuments description: 'Retorna os perfis de documentos obrigatórios para o funcionário. **Permissões exigidas:** `employees.view` + `documents.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de documentos obrigatórios. content: application/json: example: [] schema: type: array items: $ref: '#/components/schemas/PublicContractRequiredProfile' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - name: type in: query required: false schema: type: string enum: - PF - PJ - Any - I nullable: false default: Any description: 'Filtro opcional de DocumentProfileType: PF, PJ, Any ou I. Ausência mantém a seleção de perfis Any; valor inválido é 422 errors.type antes da consulta. Um resultado vazio não valida tipo fora do enum.' /employees/{employee}/documents/{document}: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb - name: document in: path required: true description: UUID do documento. schema: type: string format: uuid example: 9c5422a0-ad44-4670-9dc4-46be00252759 delete: tags: - Employees summary: Excluir documento do funcionário operationId: deleteEmployeeDocument description: 'Exclui um documento do funcionário. Retorna **HTTP 204** sem conteúdo. Requer `documents.delete` (além de `employees.view` base). ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir documento do funcionário. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /employees/{employee}/documents/{document}/file: parameters: - name: employee in: path required: true description: UUID do funcionário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb - name: document in: path required: true description: UUID do documento. schema: type: string format: uuid example: 9c5422a0-ad44-4670-9dc4-46be00252759 get: tags: - Employees summary: Baixar documento do funcionário operationId: downloadEmployeeDocument description: 'Faz o download do arquivo de um documento anexado ao funcionário. Sem permissão extra declarada além de `employees.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do arquivo. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /interns: get: tags: - Interns summary: Listar estagiários operationId: listInterns description: 'Lista os estagiários com paginação, incluindo `graduation` (nome da formação) e `workspace` (nome do local de trabalho). **Permissão exigida:** `interns.view`. Consulte os tipos dos campos de paginação nos exemplos de resposta. ' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. responses: 200: description: Lista paginada de estagiários. content: application/json: example: data: - id: eeaa8cd5-4e13-5f2a-a09b-79a0d01f09a6 intern_workspace_id: null intern_graduation_level_id: null name: Registro de exemplo description: null educational_institution: null marital_status: null gender: null course: Engenharia department: TI work_schedule: null internship_mode: null pis_pasep: null birth_date: null hire_date: null termination_date: null cpf: '00000000000' salary: 1200 period_of_course: null current_situation_course: studying payment_type: monthly payment_day: null active: true created_at: '2026-10-18T00:15:33.000000Z' updated_at: '2026-10-18T00:16:05.000000Z' emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: null workspace: null documents: - id: 14a6739e-b7b9-5309-bb28-cebbfd11a2da document_profile_id: 9bca094d-cda9-5630-a326-b7be00e10da4 document_profile_name: AUD4-10180154 Perfil vm9t document_profile_description: null attachment: null original_name: '' required: true - id: 2537d480-f94e-5d58-8771-0c76e7afc0d1 document_profile_id: 429b608e-08f9-571f-add5-226720db5225 document_profile_name: AUD4-10180201 Perfil qlpv document_profile_description: null attachment: null original_name: '' required: true - id: 86c1c415-fc8e-540b-b90a-0f0625b83225 document_profile_id: f14acad8-6a68-58ee-bcbb-192045c1af1b document_profile_name: AUD4-10180208 Perfil lpcj document_profile_description: null attachment: null original_name: '' required: true - id: 12027f7d-2e1a-51ad-a2e9-d7c73bd567ac document_profile_id: ea17e36b-8557-5b32-b9b0-5855495d274b document_profile_name: AUD4-10180318 Perfil gavh document_profile_description: null attachment: null original_name: '' required: true - id: 15dd78b1-aa5d-5c64-8bd8-185a7d96f84a document_profile_id: 5485ebf9-05d4-5533-b13f-4f791cc51997 document_profile_name: AUD4-10200033 Perfil widu document_profile_description: null attachment: null original_name: '' required: true - id: a400c86e-e38f-5f54-b152-5f1ac7bc7688 document_profile_id: c6deffdb-86e1-5fab-948d-0345c8f9fbe4 document_profile_name: AUD4-10200116 Perfil y3yr document_profile_description: null attachment: null original_name: '' required: true - id: 4891525e-c0ce-5842-9c4c-1c9f0702120e document_profile_id: 1f954699-1991-5a56-b651-e84343a68d3d document_profile_name: AUD4-10200127 Perfil yedn document_profile_description: null attachment: null original_name: '' required: true - id: 245ac355-e480-5a23-b2d3-92766f31311b document_profile_id: 51d04be8-2d8d-5b93-9509-89e78d438289 document_profile_name: AUD4-10200129 Perfil 5dsp document_profile_description: null attachment: null original_name: '' required: true - id: 6ce2f55c-db9b-52ef-bca2-80c943ca2d8e document_profile_id: 2d571d8d-ac05-5e65-8fe3-2903ef5cdac0 document_profile_name: AUD4-10200149 Perfil du2e document_profile_description: null attachment: null original_name: '' required: true - id: 18c8a7aa-f20a-5a1e-a31a-480750a68eb7 intern_workspace_id: 341f9399-92ae-5fb5-b8bc-cfe088e055a5 intern_graduation_level_id: 61428481-a96a-5af6-81a5-7b09b7a10adb name: Registro de exemplo description: null educational_institution: UFMG marital_status: married gender: male course: null department: Fin work_schedule: null internship_mode: null pis_pasep: null birth_date: '2000-01-15' hire_date: '2024-06-01' termination_date: null cpf: '00000000000' salary: 2000.75 period_of_course: null current_situation_course: concluded payment_type: monthly payment_day: '10' active: true created_at: '2026-10-18T04:57:32.000000Z' updated_at: '2026-10-18T04:57:36.000000Z' emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Ensino médio workspace: Escritório documents: - id: 932466e1-6fff-5023-afed-e3dd98559cb6 document_profile_id: 429b608e-08f9-571f-add5-226720db5225 document_profile_name: AUD4-10180201 Perfil qlpv document_profile_description: null attachment: null original_name: '' required: true - id: eab0bd9c-c0d1-541b-a5bc-ad69bb2a526b document_profile_id: f14acad8-6a68-58ee-bcbb-192045c1af1b document_profile_name: AUD4-10180208 Perfil lpcj document_profile_description: null attachment: null original_name: '' required: true - id: 66ac53f5-89a3-5cc8-84f9-7134e770f1fd document_profile_id: ea17e36b-8557-5b32-b9b0-5855495d274b document_profile_name: AUD4-10180318 Perfil gavh document_profile_description: null attachment: null original_name: '' required: true - id: 3820d1cb-c9dc-5a93-9dff-64ca9e20e916 document_profile_id: 5485ebf9-05d4-5533-b13f-4f791cc51997 document_profile_name: AUD4-10200033 Perfil widu document_profile_description: null attachment: null original_name: '' required: true - id: c3fe01c6-5130-58d1-93d1-00e8c1367306 document_profile_id: c6deffdb-86e1-5fab-948d-0345c8f9fbe4 document_profile_name: AUD4-10200116 Perfil y3yr document_profile_description: null attachment: null original_name: '' required: true - id: 0bff3b03-4e41-59b7-bbbf-1135b6065709 document_profile_id: 1f954699-1991-5a56-b651-e84343a68d3d document_profile_name: AUD4-10200127 Perfil yedn document_profile_description: null attachment: null original_name: '' required: true - id: 30dc72af-3031-5b78-b7ec-faa95384cda9 document_profile_id: 51d04be8-2d8d-5b93-9509-89e78d438289 document_profile_name: AUD4-10200129 Perfil 5dsp document_profile_description: null attachment: null original_name: '' required: true - id: 56b1a6a1-4e38-5006-b768-1ecf61c89430 document_profile_id: 2d571d8d-ac05-5e65-8fe3-2903ef5cdac0 document_profile_name: AUD4-10200149 Perfil du2e document_profile_description: null attachment: null original_name: '' required: true links: first: https://empresa-exemplo.invalid/public-api/v1/interns?page=1 last: https://empresa-exemplo.invalid/public-api/v1/interns?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/interns?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/interns per_page: 10 to: 2 total: 2 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractIntern' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Interns summary: Criar estagiário operationId: createIntern description: 'Cria um novo estagiário. Permissões exigidas: `interns.create` + `interns.view`. Aceita `application/json` ou `multipart/form-data` (quando há anexos de documento; campos aninhados como `emails`, `phones`, `addresses`, `bankAccounts`, `benefits`, `documentFilesMap` são enviados como strings JSON no multipart). ### Campos required no POST `name`, `department`, `birth_date`, `hire_date`, `gender`, `marital_status`, `intern_workspace_id`, `intern_graduation_level_id`, `educational_institution`, `payment_type`, `current_situation_course`, `payment_day`, `salary`. `period_of_course` é required quando `current_situation_course != concluded`. `active` não é um campo de criação. O estagiário é criado ativo; para alternar o status, use `PUT /interns/{intern}/activation`. Retorna **HTTP 201** em caso de sucesso. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: description: Dados pessoais, acadêmicos e do vínculo utilizados no cadastro do estagiário. type: object required: - name - department - birth_date - hire_date - gender - marital_status - intern_workspace_id - intern_graduation_level_id - educational_institution - payment_type - current_situation_course - payment_day - salary properties: name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. department: description: Departamento ao qual o funcionário ou estagiário está vinculado. type: string maxLength: 191 birth_date: type: string format: date description: Data de nascimento da pessoa, em AAAA-MM-DD. hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. termination_date: type: string format: date nullable: true description: Data de encerramento do vínculo de trabalho ou estágio, em AAAA-MM-DD. gender: description: 'Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. Opções: `male`, `female`.' type: string enum: - male - female marital_status: description: 'Valores aceitos: `divorced`, `single`, `married`, `others`.' type: string enum: - divorced - single - married - others intern_workspace_id: type: string format: uuid description: Identificador do local de estágio no catálogo de locais de trabalho da empresa. Identificação no formato UUID. intern_graduation_level_id: type: string format: uuid description: Identificador do nível de formação do estagiário no catálogo da empresa. Identificação no formato UUID. educational_institution: description: Instituição de ensino à qual o estudante está vinculado. type: string payment_type: description: 'Periodicidade ou critério do pagamento, conforme as opções do enum. Opções: `monthly`, `hourly`.' type: string enum: - monthly - hourly current_situation_course: description: 'Situação atual do curso do estudante. Opções: `concluded`, `studying`, `locked`.' type: string enum: - concluded - studying - locked period_of_course: type: number nullable: true description: Required quando current_situation_course != concluded. payment_day: description: Dia previsto para o pagamento segundo a periodicidade do vínculo. type: integer minimum: 1 maximum: 31 salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' cpf: type: string maxLength: 14 nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string maxLength: 191 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true course: description: Curso de formação informado no cadastro do estudante. type: string maxLength: 128 nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: type: string format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string minLength: 10 maxLength: 11 phone_type_id: type: string format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string maxLength: 50 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true benefits: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: Enum BenefitType (ex. monthly, hourly). value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number example: name: Estagiário Exemplo department: TI birth_date: '2000-01-15' hire_date: '2023-06-01' gender: male marital_status: single intern_workspace_id: 87c5838d-9b08-414b-9043-9631833118f0 intern_graduation_level_id: 009a032b-d181-42f4-bc72-29d4de9e3777 educational_institution: Universidade Federal payment_type: monthly current_situation_course: concluded payment_day: 10 salary: 1500.0 active: false cpf: '00000000000' description: Estagiário de TI emails: - email: estagiario@empresa.com email_type_id: a5d65bcd-b4f7-4e8c-a156-f31644748343 phones: - phone: '11999999999' phone_type_id: 684b638a-ab19-4864-8a61-8533c98480ea addresses: [] bankAccounts: [] benefits: [] multipart/form-data: schema: description: Dados pessoais, acadêmicos e do vínculo utilizados no cadastro do estagiário. type: object required: - name - department - birth_date - hire_date - gender - marital_status - intern_workspace_id - intern_graduation_level_id - educational_institution - payment_type - current_situation_course - payment_day - salary properties: name: type: string maxLength: 80 description: Não pode começar com =, +, - ou @. department: description: Departamento ao qual o funcionário ou estagiário está vinculado. type: string maxLength: 191 birth_date: type: string format: date description: Data de nascimento da pessoa, em AAAA-MM-DD. hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. termination_date: type: string format: date nullable: true description: Data de encerramento do vínculo de trabalho ou estágio, em AAAA-MM-DD. gender: description: 'Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. Opções: `male`, `female`.' type: string enum: - male - female marital_status: description: 'Valores aceitos: `divorced`, `single`, `married`, `others`.' type: string enum: - divorced - single - married - others intern_workspace_id: type: string format: uuid description: Identificador do local de estágio no catálogo de locais de trabalho da empresa. Identificação no formato UUID. intern_graduation_level_id: type: string format: uuid description: Identificador do nível de formação do estagiário no catálogo da empresa. Identificação no formato UUID. educational_institution: description: Instituição de ensino à qual o estudante está vinculado. type: string payment_type: description: 'Periodicidade ou critério do pagamento, conforme as opções do enum. Opções: `monthly`, `hourly`.' type: string enum: - monthly - hourly current_situation_course: description: 'Situação atual do curso do estudante. Opções: `concluded`, `studying`, `locked`.' type: string enum: - concluded - studying - locked period_of_course: type: number nullable: true description: Required quando current_situation_course != concluded. payment_day: description: Dia previsto para o pagamento segundo a periodicidade do vínculo. type: integer minimum: 1 maximum: 31 salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' cpf: type: string maxLength: 14 nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string maxLength: 191 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true course: description: Curso de formação informado no cadastro do estudante. type: string maxLength: 128 nullable: true active: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se o registro está ativo para uso pela empresa. type: integer enum: - 0 - 1 emails: type: string description: Texto JSON válido, decodificado antes da validação. Endereços de e-mail vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: type: string format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true phones: type: string description: Texto JSON válido, decodificado antes da validação. Números de telefone vinculados ao cadastro e suas classificações. x-docs-decoded-schema: description: Números de telefone vinculados ao cadastro e suas classificações. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string minLength: 10 maxLength: 11 phone_type_id: type: string format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true addresses: type: string description: Texto JSON válido, decodificado antes da validação. Endereços vinculados ao cadastro, com município e estado de referência. x-docs-decoded-schema: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string maxLength: 50 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. x-docs-decoded-schema: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true benefits: type: string description: Texto JSON válido, decodificado antes da validação. Benefícios vinculados ao funcionário ou estagiário. x-docs-decoded-schema: description: Benefícios vinculados ao funcionário ou estagiário. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: Enum BenefitType (ex. monthly, hourly). value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: bankAccounts: contentType: text/plain emails: contentType: text/plain phones: contentType: text/plain addresses: contentType: text/plain benefits: contentType: text/plain documentFilesMap: contentType: text/plain responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 9c552004-98c2-4996-a293-ccfc495516d9 intern_workspace_id: 87c5838d-9b08-414b-9043-9631833118f0 intern_graduation_level_id: 009a032b-d181-42f4-bc72-29d4de9e3777 name: Estagiário Exemplo description: Estagiário de TI educational_institution: Universidade Federal marital_status: single gender: male course: null department: TI pis_pasep: null birth_date: '2000-01-15' hire_date: '2023-06-01' termination_date: null cpf: '00000000000' rg: null salary: 1500.0 period_of_course: null current_situation_course: concluded payment_type: monthly payment_day: '10' active: true emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Ensino Superior Incompleto workspace: Home office documents: [] schema: $ref: '#/components/schemas/PublicContractIntern' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/interns\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header\ \ \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string \"name=${CAMPO_NAME}\"\ \ \\\n --form-string \"department=${CAMPO_DEPARTMENT}\" \\\n --form-string \"birth_date=${CAMPO_BIRTH_DATE}\"\ \ \\\n --form-string \"hire_date=${CAMPO_HIRE_DATE}\" \\\n --form-string \"gender=${CAMPO_GENDER}\"\ \ \\\n --form-string \"marital_status=${CAMPO_MARITAL_STATUS}\" \\\n --form-string \"intern_workspace_id=${CAMPO_INTERN_WORKSPACE_ID}\"\ \ \\\n --form-string \"intern_graduation_level_id=${CAMPO_INTERN_GRADUATION_LEVEL_ID}\" \\\n --form-string\ \ \"educational_institution=${CAMPO_EDUCATIONAL_INSTITUTION}\" \\\n --form-string \"payment_type=${CAMPO_PAYMENT_TYPE}\"\ \ \\\n --form-string \"current_situation_course=${CAMPO_CURRENT_SITUATION_COURSE}\" \\\n --form-string\ \ \"payment_day=${CAMPO_PAYMENT_DAY}\" \\\n --form-string \"salary=${CAMPO_SALARY}\" \\\n --form-string\ \ \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" /interns/current-situations-course: get: tags: - Interns summary: Listar situações de curso disponíveis operationId: listInternCourseSituations description: 'Retorna os valores aceitos em `current_situation_course`: `concluded`, `studying` e `locked`. **Permissão exigida:** `interns.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de situações de curso. content: application/json: example: - value: concluded description: Concluído - value: studying description: Cursando - value: locked description: Trancado schema: type: array items: $ref: '#/components/schemas/PublicContractCourseSituation' '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /interns/{intern}: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 get: tags: - Interns summary: Obter estagiário operationId: showIntern description: 'Retorna os dados do estagiário, incluindo `emails`, `phones`, `bankAccounts`, `benefits`, `addresses` e `documents`, além de `graduation` e `workspace` (nomes da formação e do local de trabalho). **Permissão exigida:** `interns.view`. `salary` é numérico e `payment_day` é uma string. ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do estagiário. content: application/json: example: id: 774b8a5c-be59-53b7-81d1-6bee5ce7bf8d intern_workspace_id: 341f9399-92ae-5fb5-b8bc-cfe088e055a5 intern_graduation_level_id: 61428481-a96a-5af6-81a5-7b09b7a10adb name: Registro de exemplo description: Descrição ilustrativa educational_institution: Universidade Auditoria marital_status: single gender: female course: null department: Financeiro work_schedule: null internship_mode: null pis_pasep: null birth_date: '2002-03-10' hire_date: '2026-10-02' termination_date: null cpf: '00000000000' salary: 1200.5 period_of_course: 5 current_situation_course: studying payment_type: monthly payment_day: '10' active: true created_at: '2026-11-01T13:12:10.000000Z' updated_at: '2026-11-01T13:12:10.000000Z' emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] graduation: Ensino médio workspace: Escritório documents: [] schema: $ref: '#/components/schemas/PublicContractIntern' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Interns summary: Editar estagiário operationId: updateIntern description: 'Atualiza os dados de um estagiário existente. Permissões exigidas: `interns.update` + `interns.view`. ### Campos required no PUT `department`, `birth_date`, `hire_date`, `gender`, `marital_status`, `current_situation_course`, `salary`. `name` é opcional no PUT (mas validado `max:80` quando presente). `intern_workspace_id` e `intern_graduation_level_id` são opcionais no PUT. `period_of_course` é required quando `current_situation_course != concluded`. `cpf` aceita o próprio CPF do intern (unique ignora self). ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: description: Edição parcial dos campos opcionais do estagiário. Na API pública continuam obrigatórios department, birth_date, hire_date, gender, marital_status, current_situation_course e salary; a validação interna mais permissiva não elimina a validação pública anterior. Não herda required da criação. Ausência de campo opcional preserva o valor salvo; null só é aceito nos campos nullable. Campos obrigatórios não aceitam null. type: object required: - department - birth_date - hire_date - gender - marital_status - current_situation_course - salary properties: name: type: string maxLength: 80 description: 'Não pode começar com =, +, - ou @. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' department: description: Departamento ao qual o funcionário ou estagiário está vinculado. type: string maxLength: 191 birth_date: type: string format: date description: Data de nascimento da pessoa, em AAAA-MM-DD. hire_date: type: string format: date description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. termination_date: type: string format: date nullable: true description: Data de encerramento do vínculo de trabalho ou estágio, em AAAA-MM-DD. gender: description: 'Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. Opções: `male`, `female`.' type: string enum: - male - female marital_status: description: 'Estado civil da pessoa, utilizando uma das opções aceitas no enum. Opções: `single`, `married`, `divorced`, `widower`, `stable_union`.' type: string enum: - single - married - divorced - widower - stable_union intern_workspace_id: type: string format: uuid description: 'Identificador do local de estágio no catálogo de locais de trabalho da empresa. Identificação no formato UUID. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' intern_graduation_level_id: type: string format: uuid description: 'Identificador do nível de formação do estagiário no catálogo da empresa. Identificação no formato UUID. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' educational_institution: description: 'Instituição de ensino à qual o estudante está vinculado. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' type: string payment_type: description: 'Periodicidade ou critério do pagamento, conforme as opções do enum. Opções: `monthly`, `hourly`. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' type: string enum: - monthly - hourly current_situation_course: description: 'Situação atual do curso do estudante. Opções: `concluded`, `studying`, `locked`.' type: string enum: - concluded - studying - locked period_of_course: type: number nullable: true description: Obrigatório, numérico e não nulo quando current_situation_course é studying ou locked. Com concluded pode ser omitido (preserva) ou null (limpa). Enum inválido ou ausente reprova a situação; o callback público também exige o período nesses casos. payment_day: description: 'Dia previsto para o pagamento segundo a periodicidade do vínculo. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada. A regra real é numeric|between:1,31, sem exigência de inteiro.' type: number minimum: 1 maximum: 31 salary: type: number format: float minimum: 0.01 description: 'Salário. Valor mínimo: 0.01. Zero e valores negativos retornam 422.' cpf: type: string maxLength: 14 nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. pis_pasep: description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. type: string maxLength: 191 nullable: true description: description: 'Histórico descritivo utilizado para identificar o lançamento ou a operação. Opcional no PUT: ausência preserva. Null não é aceito pelo request público quando a chave é informada.' type: string maxLength: 500 course: description: Curso de formação informado no cadastro do estudante. type: string maxLength: 128 nullable: true active: description: Ignorado nesta edição. Use a operação de status própria do estagiário. readOnly: true type: boolean emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. Ausência preserva a relação. Lista vazia ou null explícito é normalizado para lista vazia pelo helper e limpa a relação no fluxo de edição; itens informados substituem a lista e continuam sujeitos às validações dos filhos. type: array nullable: true items: type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: type: string format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. Ausência preserva a relação. Lista vazia ou null explícito é normalizado para lista vazia pelo helper e limpa a relação no fluxo de edição; itens informados substituem a lista e continuam sujeitos às validações dos filhos. type: array nullable: true items: type: object required: - phone - phone_type_id properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string minLength: 10 maxLength: 11 phone_type_id: type: string format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. Ausência preserva a relação. Lista vazia ou null explícito é normalizado para lista vazia pelo helper e limpa a relação no fluxo de edição; itens informados substituem a lista e continuam sujeitos às validações dos filhos. type: array nullable: true items: type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string maxLength: 50 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. Ausência preserva a relação. Lista vazia ou null explícito é normalizado para lista vazia pelo helper e limpa a relação no fluxo de edição; itens informados substituem a lista e continuam sujeitos às validações dos filhos. type: array nullable: true items: type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true benefits: description: Benefícios vinculados ao funcionário ou estagiário. Ausência preserva a relação. Lista vazia ou null explícito é normalizado para lista vazia pelo helper e limpa a relação no fluxo de edição; itens informados substituem a lista e continuam sujeitos às validações dos filhos. type: array nullable: true items: type: object required: - name - type - value properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 type: type: string description: Enum BenefitType (ex. monthly, hourly). value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number work_schedule: type: string nullable: true maxLength: 100 description: Jornada de trabalho. Ausência preserva; null limpa. internship_mode: type: string nullable: true enum: - obligatory - non_obligatory description: Modalidade do estágio conforme InternshipMode. Ausência preserva; null limpa. oneOf: - properties: current_situation_course: enum: - concluded description: 'Situação atual do curso do estudante. Opções: `concluded`.' - required: - period_of_course properties: current_situation_course: enum: - studying - locked description: 'Situação atual do curso do estudante. Opções: `studying`, `locked`.' period_of_course: type: number nullable: false description: Período atual do curso do estagiário; obrigatório quando a situação do curso exige essa informação. example: name: Marina Exemplo department: Financeiro birth_date: '1999-05-20' hire_date: '2022-03-01' gender: female marital_status: single intern_workspace_id: 10000000-0000-4000-8000-000000000401 intern_graduation_level_id: 10000000-0000-4000-8000-000000000402 educational_institution: Instituição de Ensino Exemplo payment_type: monthly current_situation_course: concluded payment_day: 10 salary: 1700 x-docs-example-note: Dados pessoais e UUIDs FICTÍCIOS, sem recursos provisionados. Substitua {intern} por um estagiário existente do próprio tenant e os IDs 401/402 por local de trabalho e nível de formação dos catálogos do mesmo tenant. Corpo completo para os 13 required efetivos do schema publicado (incluindo o allOf), ainda que os requests permitam omissões no PUT. payment_day é inteiro entre 1 e 31; salary é número positivo; enums escolhidos explicitamente. concluded dispensa period_of_course; studying/locked exigem período numérico. Relações opcionais foram omitidas e são preservadas pelo fluxo real; não envie listas vazias para representar ausência. responses: '200': description: Estagiário atualizado. content: application/json: example: id: 9c552004-98c2-4996-a293-ccfc495516d9 name: Estagiário Atualizado department: Financeiro salary: 1700.0 active: true graduation: Pós-graduação - Doutorado workspace: Home office emails: [] phones: [] bankAccounts: [] benefits: [] addresses: [] documents: [] schema: $ref: '#/components/schemas/PublicContractIntern' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - Interns summary: Excluir estagiário operationId: deleteIntern description: 'Exclui um estagiário e retorna **204**, sem corpo. **Permissões exigidas:** `interns.view` + `interns.delete`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir estagiário. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /interns/{intern}/activation: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 put: tags: - Interns summary: Alternar status ativo/inativo do estagiário operationId: toggleInternActive description: 'Alterna o status `active` do estagiário. **Permissões exigidas:** `interns.view` + `interns.update`. A resposta contém a mensagem de sucesso `{ "message": "Operação realizada com sucesso." }`. ' security: - accessKey: [] apiKey: [] responses: 200: description: Status alternado com sucesso. content: application/json: example: message: Operação realizada com sucesso. schema: $ref: '#/components/schemas/PublicContractMessage' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /interns/{intern}/documents: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 get: tags: - Interns summary: Listar documentos do estagiário operationId: listInternDocuments description: 'Lista os perfis de documento vinculados ao estagiário. Permissões exigidas: `documents.view` + `interns.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de documentos do estagiário. content: application/json: example: - id: 9c0c4577-2cc9-4d1a-a049-fd3d28f74001 document_profile_id: 28d2fa20-8417-4a29-836f-5609104eb31d document_profile_name: Certidão de casamento document_profile_description: null attachment: name: Proposta - Empresa Exemplo type: document size: 1244459 mime: application/pdf ext: pdf url: https://minha-empresa.api.maisgestao.com.br/.../Proposta - Empresa Exemplo created_at: '2024-05-15T09:26:29.000000Z' original_name: Proposta - Empresa Exemplo.pdf required: false schema: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - Estagiários summary: Criar documento — estagiários operationId: extended_post_interns_intern_documents description: 'Permissões exigidas na chave: (interns.view) e (documents.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: intern in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Criar documento — estagiários. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractRawPersonDocument' - type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' example: id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' requestBody: required: true description: Vincula um ou mais perfis de documento ao cadastro. Envie apenas document_profile_id. Para anexar arquivo, utilize a operação de upload; attachment_id e original_name não são aceitos aqui. content: application/json: schema: oneOf: - type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. - type: array minItems: 1 items: type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. example: document_profile_id: 10000000-0000-4000-8000-000000000001 /interns/{intern}/documents/attachment: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/interns/${INTERN_ID}/documents/attachment\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"attachment=@${ARQUIVO_ATTACHMENT}\" \\\n --form-string \"document_id=${CAMPO_DOCUMENT_ID}\"" tags: - Interns summary: Anexar documento ao estagiário operationId: uploadInternDocument description: Envia um arquivo PDF para um documento já vinculado ao estagiário. Use multipart/form-data e informe attachment com o arquivo e document_id com a identificação documental obtida no cadastro do estagiário. O tamanho permitido depende do limite de upload do ambiente. Requer documents.update e interns.view. security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - attachment - document_id properties: attachment: type: string format: binary description: Arquivo a ser enviado (apenas PDF). document_id: type: string format: uuid description: ID do perfil de documento em `intern_has_documents`. example: 28d2fa20-8417-4a29-836f-5609104eb31d responses: 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '201': description: Documento anexado com sucesso. content: application/json: example: id: 9c0c4577-2cc9-4d1a-a049-fd3d28f74001 document_profile_id: 28d2fa20-8417-4a29-836f-5609104eb31d document_profile_name: Certidão de casamento document_profile_description: null attachment: name: test_doc type: document size: 2117814 mime: application/pdf ext: pdf url: https://minha-empresa.api.maisgestao.com.br/.../test_doc created_at: '2024-06-23T06:40:09.000000Z' original_name: test_doc.pdf required: false schema: $ref: '#/components/schemas/PublicContractPersonDocument' /interns/{intern}/documents/{document}: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 - name: document in: path required: true description: UUID do documento. schema: type: string format: uuid example: 9c0c4577-2cc9-4d1a-a049-fd3d28f74001 delete: tags: - Interns summary: Excluir documento do estagiário operationId: deleteInternDocument description: 'Exclui um documento do estagiário e retorna **204**, sem corpo. **Permissões exigidas:** `interns.view` + `documents.delete`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir documento do estagiário. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /interns/{intern}/documents/{document}/file: parameters: - name: intern in: path required: true description: UUID do estagiário. schema: type: string format: uuid example: 9c552004-98c2-4996-a293-ccfc495516d9 - name: document in: path required: true description: UUID do documento. schema: type: string format: uuid example: 9c0c4577-2cc9-4d1a-a049-fd3d28f74001 get: tags: - Interns summary: Baixar documento do estagiário operationId: downloadInternDocument description: 'Faz o download de um documento do estagiário. A resposta contém o arquivo PDF. **Permissão exigida:** `interns.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do arquivo PDF. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /logs: get: tags: - Logs summary: Listar logs de auditoria operationId: listLogs description: 'Exige api_logs.view na chave de acesso pública, além da autenticação. Sem a permissão: 403. O catálogo administrativo de chaves públicas inclui api_logs.view; GET /permissions reflete o catálogo da sessão interna e não enumera todas as permissões de chave pública. A consulta continua no escopo autorizado da empresa.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false description: Número da página. schema: type: integer default: 1 - name: per_page in: query required: false description: Itens por página. schema: type: integer default: 10 - name: search in: query required: false description: Busca por LIKE em `description` e `action` (OR). schema: type: string - name: action in: query required: false description: Filtra pelo valor exato do campo `action`. schema: type: string example: client_created - name: start_date in: query required: false description: 'Data de início do filtro de criação (>=). Formato: YYYY-MM-DD.' schema: type: string format: date - name: end_date in: query required: false description: 'Data de fim do filtro de criação (<=). Formato: YYYY-MM-DD.' schema: type: string format: date - name: user in: query required: false description: UUID do usuário para filtrar logs por `user_id`. schema: type: string format: uuid - name: sort_column in: query required: false description: Coluna de ordenação (ex. `created_at`). schema: type: string - name: sort_direction in: query required: false description: Direção da ordenação. Usado junto com `sort_column`. schema: type: string enum: - asc - desc default: asc responses: 200: description: Lista paginada de logs de auditoria. content: application/json: example: data: - id: 0c984ddd-989a-5664-bb8c-893ac2654a09 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: client_created description: Descrição ilustrativa payload: client: name: Registro de exemplo type: PJ active: true cnpj: '00000000000000' id: 87b4381d-f8da-51ab-80ca-10740c10781b updated_at: '2026-10-18T04:26:33.000000Z' created_at: '2026-10-18T04:26:33.000000Z' data: type: PJ name: Registro de exemplo cnpj: '00000000000000' active: true addresses: - state_id: 11 city_id: 2308 address: Avenida Afonso Pena number: '1000' neighborhood: Centro zipcode: '30130009' complement: Sala 1 description: Descrição ilustrativa emails: - email: contato-239f25b1@example.invalid email_type_id: 55382798-7f2e-505c-83aa-5ba5207abb4a phones: - phone: '3100000000' phone_type_id: a0c6516d-be01-5570-bb0e-7964fdaff296 ip: 127.0.0.1 created_at: '2026-10-18T04:26:33.000000Z' updated_at: '2026-10-18T04:26:33.000000Z' deleted_at: null - id: e48d00ce-15da-52f3-ab99-bd2d8331b03f user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_created description: Descrição ilustrativa payload: account: id: 4c82f978-9654-577f-be85-91497aa66fc2 cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '33.00' balance: '33.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '101' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 87b4381d-f8da-51ab-80ca-10740c10781b payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:26:33.000000Z' updated_at: '2026-10-18T04:26:33.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] ip: 127.0.0.1 created_at: '2026-10-18T04:26:33.000000Z' updated_at: '2026-10-18T04:26:33.000000Z' deleted_at: null - id: 96801f3c-fac8-57c1-a641-3b16594be061 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_bank_slip_store description: Descrição ilustrativa payload: accounts: - id: 4c82f978-9654-577f-be85-91497aa66fc2 cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '33.00' balance: '33.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '101' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 87b4381d-f8da-51ab-80ca-10740c10781b payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:26:33.000000Z' updated_at: '2026-10-18T04:26:33.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null bank_slip: due_date: '2026-11-10T03:00:00.000000Z' amount: 33 mulct: 0 interest: 0 format: pix provider: pjbank payment_link_id: null id: 5d4482b3-8cbe-5303-957e-e052b1c5213b issuance_state: in_flight updated_at: '2026-10-18T04:26:33.000000Z' created_at: '2026-10-18T04:26:33.000000Z' order: 5d4482b3-8cbe-5303-957e-e052b1c5213b pix_qr_code: null pix_query_status: not_checked ip: 192.168.1.13 created_at: '2026-10-18T04:26:33.000000Z' updated_at: '2026-10-18T04:26:33.000000Z' deleted_at: null - id: 6e9e93df-7622-5071-adab-0c939c243418 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_created description: Descrição ilustrativa payload: account: id: 4d3dfbc7-c6fd-5693-9da7-e4492dbd68fd cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '21.00' balance: '21.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '102' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:26:57.000000Z' updated_at: '2026-10-18T04:26:57.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] ip: 127.0.0.1 created_at: '2026-10-18T04:26:57.000000Z' updated_at: '2026-10-18T04:26:57.000000Z' deleted_at: null - id: 94a9892e-0f09-5e6f-a79d-25395df11931 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_created description: Descrição ilustrativa payload: account: id: 4f5888ad-e430-5fe6-9b8b-4efefa628f93 cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '21.00' balance: '21.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '103' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:26:57.000000Z' updated_at: '2026-10-18T04:26:57.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] ip: 127.0.0.1 created_at: '2026-10-18T04:26:57.000000Z' updated_at: '2026-10-18T04:26:57.000000Z' deleted_at: null - id: e4ff0ed6-ea82-5d2e-9cbb-6ac8810e2778 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_bank_slip_store description: Descrição ilustrativa payload: accounts: - id: 4f5888ad-e430-5fe6-9b8b-4efefa628f93 cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '21.00' balance: '21.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '103' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:26:57.000000Z' updated_at: '2026-10-18T04:26:57.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null bank_slip: due_date: '2026-11-10T03:00:00.000000Z' amount: 21 mulct: 2 interest: 0 format: boleto provider: pjbank payment_link_id: null id: 60fd53fa-eff2-5527-8337-5701372107d0 issuance_state: in_flight updated_at: '2026-10-18T04:26:57.000000Z' created_at: '2026-10-18T04:26:57.000000Z' order: 60fd53fa-eff2-5527-8337-5701372107d0 pix_qr_code: null pix_query_status: null ip: 192.168.1.13 created_at: '2026-10-18T04:26:58.000000Z' updated_at: '2026-10-18T04:26:58.000000Z' deleted_at: null - id: 3ad46b73-3a88-5391-befc-5472da2cd949 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_created description: Descrição ilustrativa payload: account: id: 2745edfb-7973-5457-bf26-d9dc14bbd8cc cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '21.00' balance: '21.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '104' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:27:00.000000Z' updated_at: '2026-10-18T04:27:00.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] ip: 127.0.0.1 created_at: '2026-10-18T04:27:00.000000Z' updated_at: '2026-10-18T04:27:00.000000Z' deleted_at: null - id: c9395fc9-36e2-505c-a5ad-165af5a86793 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_nfe_created description: Descrição ilustrativa payload: account: id: 2745edfb-7973-5457-bf26-d9dc14bbd8cc cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '21.00' balance: '21.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '104' installment: null installments: null due_date: '2026-11-10T03:00:00.000000Z' original_due_date: '2026-11-10T03:00:00.000000Z' generated_for_entity: id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 type: PF name: Registro de exemplo fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null billing_day: null client_since: null description: Descrição ilustrativa active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-10-18T04:26:09.000000Z' updated_at: '2026-10-18T04:26:09.000000Z' generated_for_entity_id: ddccdfd8-e684-5b57-bb3a-af985b9f8457 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:27:00.000000Z' updated_at: '2026-10-18T04:27:00.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] rps_lote: 1 recurrence: null category: id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a name: Registro de exemplo nbs_id: 5cd02de1-f426-59bd-ac33-f047352c0a1f active: true type: account_receivable default: false fiscal_config: null nfse_enabled: true fiscal_rps: number: '26101000000' year: 2026 id: bffb993a-0b94-5772-8915-0cf537dbb04d ip: 127.0.0.1 created_at: '2026-10-18T04:27:00.000000Z' updated_at: '2026-10-18T04:27:00.000000Z' deleted_at: null - id: 56c68049-8e11-5af0-94a5-c3254411fefb user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: client_created description: Descrição ilustrativa payload: client: name: Registro de exemplo type: PJ active: true cnpj: '00000000000000' id: 44615032-0bf9-543d-b7a1-814c21f29622 updated_at: '2026-10-18T04:39:26.000000Z' created_at: '2026-10-18T04:39:26.000000Z' data: type: PJ name: Registro de exemplo cnpj: '00000000000000' active: true addresses: - state_id: 11 city_id: 2308 address: Avenida Afonso Pena number: '1000' neighborhood: Centro zipcode: '30130009' complement: Sala 1 description: Descrição ilustrativa emails: - email: contato-4c28186b@example.invalid email_type_id: edbc9afb-c3e6-535a-9e12-eab5a767aca7 phones: - phone: '3100000000' phone_type_id: c47ce686-33b0-5820-8929-6f1d99786d38 ip: 127.0.0.1 created_at: '2026-10-18T04:39:26.000000Z' updated_at: '2026-10-18T04:39:26.000000Z' deleted_at: null - id: 60ca28f6-d84a-50ff-859c-7d22c39a1c61 user_id: 7d289537-dfff-5278-b5b3-da509dabcc34 action: account_receivable_created description: Descrição ilustrativa payload: account: id: da6769c0-af90-58da-a2c1-ff1e72b71093 cashbox_id: d609eaa0-9d76-5d93-9666-3c531111c76b category_id: 98e43e63-6674-5cd0-8fc4-bc6dcae8e04a recurrence_id: null account_standard_launch_id: 7554b3f4-50eb-59a6-86ce-adc932c085b5 serviceable_type: null serviceable_id: null unit_price: '33.00' balance: '33.00' balance_paid: '0.00' status: pending reconciled: false description: Descrição ilustrativa observation: null document_number: '238' installment: null installments: null due_date: '2026-11-02T03:00:00.000000Z' original_due_date: '2026-11-02T03:00:00.000000Z' generated_for_entity: client generated_for_entity_id: 44615032-0bf9-543d-b7a1-814c21f29622 payment_method: pix workflow_id: null flag: 0 created_at: '2026-10-18T04:39:26.000000Z' updated_at: '2026-10-18T04:39:26.000000Z' type: normal retentions: null charge_group_id: null created_by: 7d289537-dfff-5278-b5b3-da509dabcc34 origin: manual cost_center_id: null archived_at: null payments: [] ip: 127.0.0.1 created_at: '2026-10-18T04:39:26.000000Z' updated_at: '2026-10-18T04:39:26.000000Z' deleted_at: null links: first: https://empresa-exemplo.invalid/public-api/v1/logs?page=1 last: https://empresa-exemplo.invalid/public-api/v1/logs?page=10 prev: null next: https://empresa-exemplo.invalid/public-api/v1/logs?page=2 meta: current_page: 1 from: 1 last_page: 10 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=1 label: '1' page: 1 active: true - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=2 label: '2' page: 2 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=3 label: '3' page: 3 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=4 label: '4' page: 4 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=5 label: '5' page: 5 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=6 label: '6' page: 6 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=7 label: '7' page: 7 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=8 label: '8' page: 8 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=9 label: '9' page: 9 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=10 label: '10' page: 10 active: false - url: https://empresa-exemplo.invalid/public-api/v1/logs?page=2 label: Próximo » page: 2 active: false path: https://empresa-exemplo.invalid/public-api/v1/logs per_page: 10 to: 10 total: 92 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractPublicAuditLog' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /logs/{log}: parameters: - name: log in: path required: true description: UUID do log de auditoria. schema: type: string format: uuid example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 get: tags: - Logs summary: Obter log de auditoria operationId: showLog description: 'Exige api_logs.view na chave de acesso pública, além da autenticação. Sem a permissão: 403. O catálogo administrativo de chaves públicas inclui api_logs.view; GET /permissions reflete o catálogo da sessão interna e não enumera todas as permissões de chave pública. A consulta continua no escopo autorizado da empresa.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do log de auditoria. content: application/json: example: id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 user_id: 9c080b7f-43a4-4aa0-a389-69ec0c91375f action: provider_deleted description: Fornecedor Acme Ltda excluído payload: entity: provider action: deleted ip: 203.0.113.5 created_at: '2026-06-21T10:00:00.000000Z' updated_at: '2026-06-21T10:00:00.000000Z' deleted_at: null schema: $ref: '#/components/schemas/PublicContractPublicAuditLog' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /providers: get: tags: - Providers summary: Listar fornecedores operationId: listProviders description: Sem active, inclui ativos e inativos; active=true filtra ativos e active=false filtra inativos. Use page/per_page. security: - accessKey: [] apiKey: [] parameters: - name: active in: query required: false description: Filtra fornecedores ativos ou inativos quando informado. Ausente, não aplica filtro de estado. schema: type: boolean - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. responses: 200: description: Lista paginada de fornecedores. content: application/json: example: data: - id: 06fb8584-4062-5f78-a1f5-4720993896fe type: PJ name: Registro de exemplo fantasy_name: null cpf: null cnpj: '00000000000000' ie: null im: null description: Descrição ilustrativa provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-10-18T00:10:07.000000Z' updated_at: '2026-10-18T00:10:07.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 64ab791a-1366-5c94-97dc-09f4269f59ab type: PF name: Registro de exemplo fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-09-27T04:27:45.000000Z' updated_at: '2026-09-27T04:27:45.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 07815657-b035-57e8-a2a9-953252626c63 type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-cartoes-faturas Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: false international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T04:24:44.000000Z' updated_at: '2026-11-01T04:29:05.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: d363bdff-d417-5b28-8e93-bf69bbb8efde type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-documentos Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T04:58:18.000000Z' updated_at: '2026-11-01T04:58:18.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 3a0eeb76-4b8a-5b74-911a-0eb87c80378c type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-fornecedores-socios Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:34.000000Z' updated_at: '2026-11-01T11:17:34.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: - id: 638ed96f-55f7-526f-bc5c-e78ddfa75cac reference_type: App\Models\Providers\Provider reference_id: 3a0eeb76-4b8a-5b74-911a-0eb87c80378c name: Registro de exemplo email: contato-ed43be72@example.invalid office: null phone: null description: null documents: [] - id: ed36b1e9-8651-5ea4-aa7d-ad6766265eee type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-fornecedores-socios Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:35.000000Z' updated_at: '2026-11-01T11:17:35.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 5ef671de-395f-5f4d-bcfe-97c520eee82c type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-fornecedores-socios Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: false international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:32.000000Z' updated_at: '2026-11-01T11:17:32.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 7835b84c-061f-54f5-8ed2-907b50e7ad6e type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-fornecedores-socios Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:31.000000Z' updated_at: '2026-11-01T11:17:31.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: 266b114a-d7e8-547c-a6aa-ebfd7ea7a5d9 type: PF name: Registro de exemplo fantasy_name: null cpf: '00000000000' cnpj: null ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:33.000000Z' updated_at: '2026-11-01T11:17:33.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] - id: a2f652bf-be42-5d68-964d-36fb720a439e type: PJ name: Registro de exemplo fantasy_name: AUD-trabalho-fornecedores-socios Fornecedor cpf: null cnpj: '00000000000000' ie: null im: null description: null provider_since: null active: true international: false nif: null nao_nif: null deleted_at: null created_at: '2026-11-01T11:17:32.000000Z' updated_at: '2026-11-01T11:17:32.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] links: first: https://empresa-exemplo.invalid/public-api/v1/providers?page=1 last: https://empresa-exemplo.invalid/public-api/v1/providers?page=5 prev: null next: https://empresa-exemplo.invalid/public-api/v1/providers?page=2 meta: current_page: 1 from: 1 last_page: 5 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=1 label: '1' page: 1 active: true - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=2 label: '2' page: 2 active: false - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=3 label: '3' page: 3 active: false - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=4 label: '4' page: 4 active: false - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=5 label: '5' page: 5 active: false - url: https://empresa-exemplo.invalid/public-api/v1/providers?page=2 label: Próximo » page: 2 active: false path: https://empresa-exemplo.invalid/public-api/v1/providers per_page: 10 to: 10 total: 42 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractProvider' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Providers summary: Criar fornecedor operationId: createProvider description: 'Cria um fornecedor (PF ou PJ) e retorna **201**. **Permissões exigidas:** `providers.view` + `providers.create`. Aceita `application/json` ou `multipart/form-data`. No multipart, envie os campos aninhados (`emails`, `phones`, `addresses`, `contacts`, `bankAccounts`, `documentFilesMap`) como strings JSON. Use `GET /providers/{id}` para consultar os dados completos após a criação. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object required: - name - type - active description: 'Dados para criar um fornecedor. `name`, `type` e `active` são obrigatórios. Os campos `emails`, `phones`, `contacts`, `addresses` e `bankAccounts` são arrays. ' properties: type: type: string enum: - PF - PJ description: Obrigatório no POST. Aceito no PUT. name: type: string maxLength: 80 description: Obrigatório no POST . Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. active: type: boolean description: Obrigatório na criação; opcional na atualização. international: description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: boolean nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true cpf: type: string description: '11 dígitos. Obrigatório quando `type=PF` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true cnpj: type: string description: '14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true ie: description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. type: string maxLength: 20 nullable: true im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 20 nullable: true emails: type: array description: E-mails do fornecedor. Envie um array vazio quando não houver e-mails. items: $ref: '#/components/schemas/EmailInput' phones: type: array description: 'Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' items: $ref: '#/components/schemas/PhoneInput' addresses: type: array description: Enviar array vazio ([]) quando não há endereços. items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: type: array description: 'Enviar array vazio ([]) quando não há contatos. contacts.*.phone: between:10,13 dígitos (diferente de phones.*.phone). ' items: $ref: '#/components/schemas/ContactInput' bankAccounts: type: array description: Enviar array vazio ([]) quando não há contas bancárias. items: $ref: '#/components/schemas/BankAccountInput' example: type: PJ name: Fornecedor Exemplo Ltda fantasy_name: Exemplo cnpj: '12345678000195' active: true international: false description: null ie: null im: null emails: - email: contato@exemplo.com description: E-mail principal email_type_id: a5d65bcd-b4f7-4e8c-a156-f31644748343 phones: - phone: '11999999999' description: Telefone principal phone_type_id: 684b638a-ab19-4864-8a61-8533c98480ea addresses: - state_id: 10000000-0000-4000-8000-000000000016 city_id: 10000000-0000-4000-8000-000000000030 address: Rua Exemplo number: '100' neighborhood: Centro zipcode: '30110000' complement: null description: Endereço principal contacts: [] bankAccounts: [] multipart/form-data: schema: type: object required: - name - type - active description: 'Dados para criar um fornecedor. `name`, `type` e `active` são obrigatórios. Os campos `emails`, `phones`, `contacts`, `addresses` e `bankAccounts` são arrays. ' properties: type: type: string enum: - PF - PJ description: Obrigatório no POST. Aceito no PUT. name: type: string maxLength: 80 description: Obrigatório no POST . Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. active: type: integer description: No multipart, envie 1 para verdadeiro ou 0 para falso. Obrigatório na criação; opcional na atualização. enum: - 0 - 1 international: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: integer enum: - 0 - 1 nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true cpf: type: string description: '11 dígitos. Obrigatório quando `type=PF` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true cnpj: type: string description: '14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true ie: description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. type: string maxLength: 20 nullable: true im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 20 nullable: true emails: type: string description: Texto JSON válido, decodificado antes da validação. E-mails do fornecedor. Envie um array vazio quando não houver e-mails. x-docs-decoded-schema: type: array description: E-mails do fornecedor. Envie um array vazio quando não houver e-mails. items: $ref: '#/components/schemas/EmailInput' phones: type: string description: 'Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' x-docs-decoded-schema: type: array description: 'Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' items: $ref: '#/components/schemas/PhoneInput' addresses: type: string description: Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há endereços. x-docs-decoded-schema: type: array description: Enviar array vazio ([]) quando não há endereços. items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: type: string description: 'Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há contatos. contacts.*.phone: between:10,13 dígitos (diferente de phones.*.phone). ' x-docs-decoded-schema: type: array description: 'Enviar array vazio ([]) quando não há contatos. contacts.*.phone: between:10,13 dígitos (diferente de phones.*.phone). ' items: $ref: '#/components/schemas/ContactInput' bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há contas bancárias. x-docs-decoded-schema: type: array description: Enviar array vazio ([]) quando não há contas bancárias. items: $ref: '#/components/schemas/BankAccountInput' documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: addresses: contentType: text/plain bankAccounts: contentType: text/plain contacts: contentType: text/plain emails: contentType: text/plain phones: contentType: text/plain documentFilesMap: contentType: text/plain responses: 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: schema: $ref: '#/components/schemas/PublicContractProvider' example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb type: PJ name: Fornecedor Exemplo Ltda fantasy_name: Exemplo cnpj: '12345678000195' active: true emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] created_at: '2026-06-20T02:35:06.000000Z' updated_at: '2026-06-20T02:35:06.000000Z' 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/providers\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header\ \ \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string \"name=${CAMPO_NAME}\"\ \ \\\n --form-string \"type=${CAMPO_TYPE}\" \\\n --form-string \"active=${CAMPO_ACTIVE}\" \\\n --form-string\ \ \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" /providers/{provider}/status-transitions: parameters: - $ref: '#/components/parameters/ProviderId' post: tags: - Providers summary: Alternar status do fornecedor (ativo/inativo) operationId: setProviderInactiveOrActive description: 'Alterna o status `active` do fornecedor e retorna **204**, sem corpo. **Permissões exigidas:** `providers.view` + `providers.update`. ' security: - accessKey: [] apiKey: [] responses: 204: description: Status alternado. Sem conteúdo. 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /providers/{provider}: parameters: - $ref: '#/components/parameters/ProviderId' get: tags: - Providers summary: Obter fornecedor operationId: showProvider description: 'Retorna os dados completos do fornecedor, incluindo campos que aceitam `null` e coleções relacionadas. **Permissão exigida:** `providers.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do fornecedor. content: application/json: schema: $ref: '#/components/schemas/PublicContractProvider' example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb type: PJ name: Fornecedor Exemplo Ltda fantasy_name: Exemplo cpf: null cnpj: '12345678000195' ie: null im: null description: null active: true international: false deleted_at: null created_at: '2026-06-20T02:35:06.000000Z' updated_at: '2026-06-20T02:35:06.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Providers summary: Editar fornecedor operationId: updateProvider description: 'Atualiza um fornecedor. Aceita `application/json` ou `multipart/form-data`. Envie somente os campos que deseja alterar. `name`, `type` e `active` são opcionais. Arrays de contatos omitidos ou vazios preservam os vínculos existentes. **Permissões exigidas:** `providers.view` + `providers.update`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object description: Dados para atualizar um fornecedor. Todos os campos são opcionais; campos omitidos preservam os valores existentes. properties: type: type: string enum: - PF - PJ description: Obrigatório no POST. Aceito no PUT. name: type: string maxLength: 80 description: Obrigatório no POST . Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. active: type: boolean description: Obrigatório na criação; opcional na atualização. international: description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: boolean nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true cpf: type: string description: '11 dígitos. Obrigatório quando `type=PF` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true cnpj: type: string description: '14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true ie: description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. type: string maxLength: 20 nullable: true im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 20 nullable: true emails: type: array description: E-mails do fornecedor. Envie um array vazio quando não houver e-mails. items: description: Endereço de e-mail e sua classificação no catálogo de tipos de contato. type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid phones: type: array description: 'Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' items: description: Número de telefone e sua classificação no catálogo de tipos de contato. type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid addresses: type: array description: Enviar array vazio ([]) quando não há endereços. items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: type: array description: Ausência preserva os contatos; [] remove todos. null não equivale a omissão e não é aceito como array na edição. items: type: object description: Nome obrigatório; informe e-mail ou telefone, ou ambos. Cargo é opcional e pode ser null. required: - name anyOf: - required: - email properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: false - required: - phone properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 1 maxLength: 200 office: description: Informações do escritório contábil vinculado ao cadastro. type: string nullable: true maxLength: 100 email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email nullable: true maxLength: 60 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true minLength: 10 maxLength: 13 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 nullable: false bankAccounts: type: array description: Enviar array vazio ([]) quando não há contas bancárias. items: description: Dados de conta bancária vinculada à pessoa ou empresa cadastrada. type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true example: type: PJ name: Fornecedor Atualizado Ltda cnpj: '12345678000195' active: true emails: [] phones: [] contacts: [] addresses: [] bankAccounts: [] multipart/form-data: schema: type: object description: Dados para atualizar um fornecedor. Todos os campos são opcionais; campos omitidos preservam os valores existentes. properties: type: type: string enum: - PF - PJ description: Obrigatório no POST. Aceito no PUT. name: type: string maxLength: 80 description: Obrigatório no POST . Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. active: type: integer description: No multipart, envie 1 para verdadeiro ou 0 para falso. Obrigatório na criação; opcional na atualização. enum: - 0 - 1 international: description: No multipart, envie 1 para verdadeiro ou 0 para falso. Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: integer enum: - 0 - 1 nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string maxLength: 500 nullable: true cpf: type: string description: '11 dígitos. Obrigatório quando `type=PF` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true cnpj: type: string description: '14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e `international` não é true. Único por tenant (ignora o próprio registro no PUT). ' nullable: true ie: description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. type: string maxLength: 20 nullable: true im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 20 nullable: true emails: type: string description: Texto JSON válido, decodificado antes da validação. E-mails do fornecedor. Envie um array vazio quando não houver e-mails. x-docs-decoded-schema: type: array description: E-mails do fornecedor. Envie um array vazio quando não houver e-mails. items: description: Endereço de e-mail e sua classificação no catálogo de tipos de contato. type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid phones: type: string description: 'Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' x-docs-decoded-schema: type: array description: 'Enviar array vazio ([]) quando não há telefones. Regra: `between:10,11` dígitos (diferente de contacts.phone que é between:10,13). ' items: description: Número de telefone e sua classificação no catálogo de tipos de contato. type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid addresses: type: string description: Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há endereços. x-docs-decoded-schema: type: array description: Enviar array vazio ([]) quando não há endereços. items: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer city_id: description: Identificador obtido no catálogo de localidades da empresa. Pode ser UUID ou ID numérico existente; preserve o valor retornado pela consulta, sem substituir pelo código IBGE. oneOf: - type: string - type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true contacts: type: string description: Texto JSON válido, decodificado antes da validação. Ausência preserva os contatos; [] remove todos. null não equivale a omissão e não é aceito como array na edição. x-docs-decoded-schema: type: array description: Ausência preserva os contatos; [] remove todos. null não equivale a omissão e não é aceito como array na edição. items: type: object description: Nome obrigatório; informe e-mail ou telefone, ou ambos. Cargo é opcional e pode ser null. required: - name anyOf: - required: - email properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: false - required: - phone properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 1 maxLength: 200 office: description: Informações do escritório contábil vinculado ao cadastro. type: string nullable: true maxLength: 100 email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email nullable: true maxLength: 60 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true minLength: 10 maxLength: 13 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 nullable: false bankAccounts: type: string description: Texto JSON válido, decodificado antes da validação. Enviar array vazio ([]) quando não há contas bancárias. x-docs-decoded-schema: type: array description: Enviar array vazio ([]) quando não há contas bancárias. items: description: Dados de conta bancária vinculada à pessoa ou empresa cadastrada. type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true documentFilesMap: type: string description: Texto JSON do mapa de documentos; file_post_name identifica a parte com o arquivo. x-docs-decoded-schema: type: array items: type: object properties: file_post_name: type: string minLength: 1 required: - file_post_name additionalProperties: type: string format: binary x-docs-dynamic-file-parts: documentFilesMap[].file_post_name encoding: addresses: contentType: text/plain bankAccounts: contentType: text/plain contacts: contentType: text/plain emails: contentType: text/plain phones: contentType: text/plain documentFilesMap: contentType: text/plain responses: '200': description: Fornecedor atualizado. content: application/json: schema: $ref: '#/components/schemas/PublicContractProvider' example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb type: PJ name: Fornecedor Atualizado Ltda fantasy_name: null cpf: null cnpj: '12345678000195' ie: null im: null description: null active: true international: false deleted_at: null created_at: '2026-06-20T02:35:06.000000Z' updated_at: '2026-06-21T10:00:00.000000Z' emails: [] phones: [] bankAccounts: [] addresses: [] contacts: [] documents: [] '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request PUT \"$BASE_URL/providers/${PROVIDER_ID}\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" delete: tags: - Providers summary: Excluir fornecedor operationId: deleteProvider description: 'Exclui cadastro inativo e elegível, sem contas abertas. Cadastro ativo é recusado com 422 em active; inative antes de excluir. Sucesso público: 204 sem corpo.' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir fornecedor. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /providers/{provider}/documents: parameters: - $ref: '#/components/parameters/ProviderId' get: tags: - Providers summary: Listar documentos do fornecedor operationId: listProviderDocuments description: 'Retorna os perfis de documento associados ao fornecedor. Permissões exigidas: `providers.view` + `documents.view`. ' security: - accessKey: [] apiKey: [] responses: '200': description: Lista de documentos do fornecedor (pode ser vazia). content: application/json: example: - id: 55f682a4-6ba5-5352-b83e-e80cc0568c6c document_profile_id: 8ba688a3-4d4c-5a91-a29c-77436fece7f9 document_profile_name: AUD4-10180133 Perfil 93zg document_profile_description: null attachment: null original_name: '' required: false schema: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - Fornecedores summary: Criar documento — fornecedores operationId: extended_post_providers_provider_documents description: 'Permissões exigidas na chave: (providers.view) e (documents.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: provider in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Criar documento — fornecedores. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractRawPersonDocument' - type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' example: id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' requestBody: required: true description: Vincula um ou mais perfis de documento ao cadastro. Envie apenas document_profile_id. Para anexar arquivo, utilize a operação de upload; attachment_id e original_name não são aceitos aqui. content: application/json: schema: oneOf: - type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. - type: array minItems: 1 items: type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. example: document_profile_id: 10000000-0000-4000-8000-000000000001 /providers/{provider}/documents/attachment: parameters: - $ref: '#/components/parameters/ProviderId' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/providers/${PROVIDER_ID}/documents/attachment\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"attachment=@${ARQUIVO_ATTACHMENT}\" \\\n --form-string \"document_id=${CAMPO_DOCUMENT_ID}\"" tags: - Providers summary: Anexar documento ao fornecedor operationId: uploadProviderDocument description: 'Envia um arquivo PDF para um perfil de documento do fornecedor. Use `multipart/form-data`. **Permissões exigidas:** `providers.view` + `documents.update`. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: multipart/form-data: schema: type: object required: - attachment - document_id properties: attachment: type: string format: binary description: Arquivo a ser enviado (apenas PDF). document_id: type: string description: ID do perfil de documento ao qual o anexo pertence (deve existir em `provider_has_documents`). example: b560292c-1908-4500-ba80-ec7798f11d5a responses: 200: description: Documento anexado com sucesso. content: application/json: schema: $ref: '#/components/schemas/PublicContractPersonDocument' example: id: 9c5422a0-ad44-4670-9dc4-46be00252759 document_profile_id: 9ac70ec3-b4b3-491d-8bca-b9e36843aa29 document_profile_name: Contrato Social document_profile_description: null attachment: name: contrato_social type: document size: 2117814 mime: application/pdf ext: pdf url: https://minha-empresa.api.maisgestao.com.br/.../contrato_social.pdf created_at: '2026-06-20T02:50:26.000000Z' original_name: contrato_social.pdf required: false 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /providers/{provider}/documents/{document}: parameters: - $ref: '#/components/parameters/ProviderId' - $ref: '#/components/parameters/DocumentId' delete: tags: - Providers summary: Excluir documento do fornecedor operationId: deleteProviderDocument description: 'Exclui um documento do fornecedor e retorna **204**, sem corpo. **Permissões exigidas:** `providers.view` + `documents.delete`. ' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir documento do fornecedor. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /providers/{provider}/documents/{document}/file: parameters: - $ref: '#/components/parameters/ProviderId' - $ref: '#/components/parameters/DocumentId' get: tags: - Providers summary: Baixar documento do fornecedor operationId: downloadProviderDocument description: 'Faz o download do arquivo de um documento anexado ao fornecedor. Permissão exigida: `providers.view` (sem permissão específica adicional — `downloadDocument` não aparece em `withPermissions()` além da base). ' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do arquivo. content: application/pdf: schema: type: string format: binary '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /reports: get: tags: - Reports summary: Listar relatórios (PDF) operationId: listReports description: 'Lista os relatórios PDF com paginação e status de geração: `pending`, `processing`, `completed`, `failed` ou `cancelled`. `sort_column` aceita `from`, `to`, `started_at`, `finished_at`, `type`, `status`, `orientation`, `created_at` e `updated_at`. Colunas inválidas retornam **422**. Sem coluna de ordenação, os relatórios são listados por `created_at desc`. `per_page` deve ser um inteiro positivo. Permissões exigidas na chave de acesso: `accounting_reports.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - from - to - started_at - finished_at - type - status - orientation - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de relatórios. content: application/json: example: data: - id: 2444220f-7c86-59c4-8a19-e4e288314436 cashbox_id: null cost_center_id: null from: '2026-10-08T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: inputs_outputs status: completed basis: cash grouping: daily formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: 22b2769a-aa08-5163-89db-a65622cf4bb3 error_message: null started_at: '2026-10-18 02:40:15' finished_at: '2026-10-18 02:40:16' created_at: '2026-10-18T05:40:12.000000Z' expires_at: '2026-11-17T05:40:16.000000Z' expired: false - id: c8991f2a-e3a5-5700-b81a-d7d4e5ad433f cashbox_id: null cost_center_id: null from: '2026-10-08T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: account_payables_provisions status: completed basis: accrual grouping: daily formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: 29dc4e6a-eb13-5ad6-a96f-ce977fe1789f error_message: null started_at: '2026-10-18 02:40:16' finished_at: '2026-10-18 02:40:19' created_at: '2026-10-18T05:40:12.000000Z' expires_at: '2026-11-17T05:40:19.000000Z' expired: false - id: 4cd00b6e-692e-581c-826e-a18e18cc74a0 cashbox_id: null cost_center_id: null from: '2026-09-18T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: payments status: completed basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: 89dafe4f-73fb-54d5-b5d0-b8886d0854e9 error_message: null started_at: '2026-10-18 02:19:51' finished_at: '2026-10-18 02:19:54' created_at: '2026-10-18T05:19:48.000000Z' expires_at: '2026-11-17T05:19:54.000000Z' expired: false - id: f1247b80-757c-55bf-8e23-b0d33dd6cb20 cashbox_id: null cost_center_id: null from: '2026-09-18T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: balance_sheet status: completed basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: bc153158-dc59-5074-b04a-3bb27408a9a1 error_message: null started_at: '2026-10-18 02:19:49' finished_at: '2026-10-18 02:19:51' created_at: '2026-10-18T05:19:47.000000Z' expires_at: '2026-11-17T05:19:51.000000Z' expired: false - id: fb6fe0ba-683f-5d41-8d4d-3858bb293b07 cashbox_id: null cost_center_id: null from: '2026-09-18T03:00:00.000000Z' to: '2026-10-18T03:00:00.000000Z' type: inputs_outputs status: completed basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: e1a31ec9-0c7d-5da5-90e6-14b618b6799b error_message: null started_at: '2026-10-18 02:19:49' finished_at: '2026-10-18 02:19:52' created_at: '2026-10-18T05:19:47.000000Z' expires_at: '2026-11-17T05:19:52.000000Z' expired: false links: first: https://empresa-exemplo.invalid/public-api/v1/reports?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reports?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reports?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reports per_page: 10 to: 5 total: 5 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractReport' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Reports summary: Solicitar geração de relatório (PDF) operationId: storeReport description: 'Solicita a geração assíncrona de um relatório e retorna **201**. O campo `type` deve conter um dos valores do schema; valores inválidos retornam **422**. Para `type=cash_flow`, `from` deve ser uma data futura. O campo `status` pode ser `null` imediatamente após a criação, enquanto o processamento não é iniciado. Permissões exigidas na chave de acesso: `accounting_reports.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReportStoreRequest' example: from: '2024-06-01' to: '2024-06-30' type: balance_sheet orientation: portrait responses: 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 33110433-2278-58b9-9fa0-37cb70b2f703 cashbox_id: null cost_center_id: null from: '2026-10-01T03:00:00.000000Z' to: '2026-10-31T03:00:00.000000Z' type: balance_sheet status: pending basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: [] started_at: null finished_at: null created_at: '2026-11-01T13:59:13.000000Z' expires_at: null expired: false schema: $ref: '#/components/schemas/PublicContractReport' 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /reports/spreadsheets: get: tags: - Spreadsheets summary: Listar planilhas operationId: listSpreadsheets description: 'Lista as planilhas de contas a pagar com paginação. `sort_column` aceita `from`, `to`, `started_at`, `finished_at`, `progress`, `type`, `status`, `created_at` e `updated_at`. Colunas inválidas retornam **422**. `per_page` deve ser um inteiro positivo. Permissões exigidas na chave de acesso: `accounting_sheets.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. - name: sort_column in: query required: false description: Coluna de ordenação aceita pela implementação. schema: type: string enum: - from - to - started_at - finished_at - progress - type - status - created_at - updated_at - name: sort_direction in: query required: false description: Sentido da ordenação; o serviço normaliza para asc quando não usa desc. schema: type: string responses: 200: description: Lista paginada de planilhas. content: application/json: example: data: - id: 60c86202-0b27-58e3-a095-72dfd14d89f4 from: '2026-10-17T03:00:00.000000Z' to: '2026-10-21T03:00:00.000000Z' type: account_payable started_at: '2026-10-18T04:41:05.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-18T04:40:26.000000Z' expires_at: '2026-11-17T04:42:07.000000Z' expired: false - id: d23140e3-c0ef-5a5e-936f-9174c5cecc0c from: '2026-10-17T03:00:00.000000Z' to: '2026-10-19T03:00:00.000000Z' type: account_payable_with_card started_at: '2026-10-18T05:32:07.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-18T05:32:02.000000Z' expires_at: '2026-11-17T05:33:34.000000Z' expired: false - id: 7ee2888f-e7b5-5dba-b812-4292f62b8d23 from: '2026-10-17T03:00:00.000000Z' to: '2026-10-19T03:00:00.000000Z' type: account_payable_with_card started_at: '2026-10-18T05:37:03.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-18T05:36:25.000000Z' expires_at: '2026-11-17T05:38:40.000000Z' expired: false - id: 2b28d1e7-af8f-589c-9f49-75beec0e20be from: '2026-10-17T03:00:00.000000Z' to: '2026-10-19T03:00:00.000000Z' type: account_payable_with_card started_at: '2026-10-18T06:50:25.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-18T06:50:03.000000Z' expires_at: '2026-11-17T06:51:05.000000Z' expired: false - id: 30baee06-aae6-5a9c-ba1e-218f897c2c17 from: '2026-10-17T03:00:00.000000Z' to: '2026-10-19T03:00:00.000000Z' type: account_payable started_at: '2026-10-18T06:58:04.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-18T06:57:46.000000Z' expires_at: '2026-11-17T06:59:09.000000Z' expired: false - id: abba2d44-94ec-5759-b856-3325a744c32a from: '2026-10-19T03:00:00.000000Z' to: '2026-10-21T03:00:00.000000Z' type: account_payable_with_card started_at: '2026-10-20T04:05:17.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-20T04:04:30.000000Z' expires_at: '2026-11-19T04:05:32.000000Z' expired: false - id: 6cb8819c-8bee-5fba-8b78-0c235ed01e0c from: '2026-10-19T03:00:00.000000Z' to: '2026-10-21T03:00:00.000000Z' type: account_payable started_at: '2026-10-20T04:16:06.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-20T04:15:54.000000Z' expires_at: '2026-11-19T04:17:09.000000Z' expired: false - id: 39e00749-71ee-502a-b02d-e023bcffa61b from: '2026-10-19T03:00:00.000000Z' to: '2026-10-21T03:00:00.000000Z' type: account_payable started_at: '2026-10-20T04:18:04.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-20T04:17:35.000000Z' expires_at: '2026-11-19T04:19:06.000000Z' expired: false - id: de8745d2-471f-52f6-84df-5a72291ca80b from: '2026-10-19T03:00:00.000000Z' to: '2026-10-21T03:00:00.000000Z' type: account_payable_with_card started_at: '2026-10-20T04:33:04.000000Z' finished_at: null status: completed progress: 0 failure_reason: null created_at: '2026-10-20T04:33:00.000000Z' expires_at: '2026-11-19T04:34:07.000000Z' expired: false links: first: https://empresa-exemplo.invalid/public-api/v1/reports/spreadsheets?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reports/spreadsheets?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reports/spreadsheets?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reports/spreadsheets per_page: 10 to: 9 total: 9 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractSpreadsheet' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Spreadsheets summary: Solicitar geração de planilha operationId: createSpreadsheet description: 'Solicita a geração assíncrona de uma planilha de contas a pagar no intervalo de datas informado. A geração ocorre em background via queue. **400 — PaymentsNotFoundException:** Se não houver contas a pagar no intervalo `[from, to]`, o serviço lança `PaymentsNotFoundException` e devolve HTTP 400. Esta não é uma falha de validação (422) — é uma regra de negócio verificada após a validação da entrada. Retorna **HTTP 201** em caso de sucesso. Permissões exigidas na chave de acesso: `accounting_sheets.create`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpreadsheetStoreRequest' example: from: '2026-05-21' to: '2026-06-21' type: account_payable responses: 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 126d4450-c7fa-57db-9471-58bbf6bbaee9 from: '2025-11-01T03:00:00.000000Z' to: '2027-11-01T03:00:00.000000Z' type: account_payable started_at: null finished_at: null status: pending progress: 0 failure_reason: null created_at: '2026-11-01T14:00:57.000000Z' expires_at: null expired: false schema: $ref: '#/components/schemas/PublicContractSpreadsheet' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': $ref: '#/components/responses/BadRequest' /reports/spreadsheets/{spreadsheet}: parameters: - name: spreadsheet in: path required: true description: UUID da planilha. schema: type: string format: uuid example: 9c541d40-2854-466e-bdd7-15db6b227119 get: tags: - Spreadsheets summary: Obter planilha operationId: showSpreadsheet description: 'Retorna os detalhes de uma planilha específica do tenant. Permissões exigidas na chave de acesso: `accounting_sheets.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes da planilha. content: application/json: example: id: 126d4450-c7fa-57db-9471-58bbf6bbaee9 from: '2025-11-01T03:00:00.000000Z' to: '2027-11-01T03:00:00.000000Z' type: account_payable started_at: null finished_at: null status: pending progress: 0 failure_reason: null created_at: '2026-11-01T14:00:57.000000Z' expires_at: null expired: false schema: $ref: '#/components/schemas/PublicContractSpreadsheet' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' delete: tags: - Spreadsheets summary: Excluir planilha operationId: deleteSpreadsheet description: 'Exclui uma planilha. Apenas planilhas com status `pending`, `completed`, `cancelled` ou `failed` podem ser excluídas. Planilhas com status `processing` ou `processing_documents` retornam **400**. Permissões exigidas na chave de acesso: `accounting_sheets.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir planilha. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '400': $ref: '#/components/responses/BadRequest' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /reports/spreadsheets/{spreadsheet}/cancellations: parameters: - name: spreadsheet in: path required: true description: UUID da planilha. schema: type: string format: uuid example: 9c541d40-2854-466e-bdd7-15db6b227119 post: tags: - Spreadsheets summary: Cancelar planilha operationId: cancelSpreadsheet description: 'Cancela uma planilha com status `processing` ou `processing_documents` e retorna **204**, sem corpo. Planilhas com status `pending`, `completed`, `cancelled` ou `failed` retornam **400**. Permissões exigidas na chave de acesso: `accounting_sheets.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: 204: description: Planilha cancelada. Sem conteúdo. 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O cancelamento exige o estado processing ou processing_documents. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /reports/spreadsheets/{spreadsheet}/file: parameters: - name: spreadsheet in: path required: true description: UUID da planilha. schema: type: string format: uuid example: 9c541d40-2854-466e-bdd7-15db6b227119 get: tags: - Spreadsheets summary: Baixar planilha (.xlsx) operationId: downloadSpreadsheet description: 'Faz o download do arquivo `.xlsx` de uma planilha concluída. **Permissão exigida:** `accounting_sheets.view`. Aguarde o status `completed` e a disponibilização do arquivo. Uma planilha não concluída retorna **400**. ' security: - accessKey: [] apiKey: [] responses: '200': description: Arquivo binário `.xlsx` da planilha concluída. content: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A planilha precisa estar concluída e ter arquivo disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '410': description: O recurso não está mais disponível. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A planilha precisa estar concluída e ter arquivo disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem410' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /reports/{report}: parameters: - name: report in: path required: true description: UUID do relatório. schema: type: string format: uuid example: 9c59c9d5-25e7-4d99-b5a6-6c3e1773537d get: tags: - Reports summary: Obter relatório (PDF) operationId: showReport description: 'Retorna os detalhes de um relatório, incluindo seu status de geração assíncrona. Permissões exigidas na chave de acesso: `accounting_reports.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do relatório. content: application/json: example: id: 33110433-2278-58b9-9fa0-37cb70b2f703 cashbox_id: null cost_center_id: null from: '2026-10-01T03:00:00.000000Z' to: '2026-10-31T03:00:00.000000Z' type: balance_sheet status: completed basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: - format: pdf status: completed attachment_id: 9fe573ef-68ec-5d26-a594-befc070e735f error_message: null started_at: '2026-11-01 10:59:14' finished_at: '2026-11-01 10:59:17' created_at: '2026-11-01T13:59:13.000000Z' expires_at: '2026-12-01T13:59:17.000000Z' expired: false schema: $ref: '#/components/schemas/PublicContractReport' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' delete: tags: - Reports summary: Excluir relatório (PDF) operationId: deleteReport description: 'Exclui um relatório e retorna **204**, sem corpo. Permissões exigidas na chave de acesso: `accounting_reports.delete`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '204': description: Excluir relatório (PDF). Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /reports/{report}/cancellations: parameters: - name: report in: path required: true description: UUID do relatório. schema: type: string format: uuid example: 9c59c9d5-25e7-4d99-b5a6-6c3e1773537d post: tags: - Reports summary: Cancelar relatório (PDF) operationId: cancelReport description: 'Cancela um relatório pendente ou em processamento, alterando o status para `cancelled`. Um relatório já cancelado retorna **400**. Não é necessário enviar corpo na requisição. Permissões exigidas na chave de acesso: `accounting_reports.update`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: 200: description: Relatório cancelado com sucesso. content: application/json: example: id: 2c4c28d8-9d26-566b-88b1-02054ad23b4e cashbox_id: null cost_center_id: null from: '2026-10-01T03:00:00.000000Z' to: '2026-10-31T03:00:00.000000Z' type: payments status: cancelled basis: cash grouping: weekly formats: - pdf cost_center_scope: all filters: [] files: [] started_at: null finished_at: null created_at: '2026-11-01T13:59:36.000000Z' expires_at: null expired: false schema: $ref: '#/components/schemas/PublicContractReport' 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Relatórios já cancelados ou concluídos não podem ser cancelados. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /reports/{report}/file: parameters: - name: report in: path required: true description: UUID do relatório. schema: type: string format: uuid example: 9c59c9d5-25e7-4d99-b5a6-6c3e1773537d get: tags: - Reports summary: Baixar arquivo PDF do relatório operationId: downloadReport description: 'Faz o download do PDF de um relatório concluído. O relatório deve ter status `completed` e arquivo disponível. Caso contrário, retorna **400**. Permissões exigidas na chave de acesso: `accounting_reports.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do PDF (download com infra completa disponível). content: application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O arquivo solicitado precisa estar disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '410': description: O recurso não está mais disponível. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O arquivo solicitado precisa estar disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem410' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /reports/{report}/files/{format}: parameters: - name: report in: path required: true description: UUID do relatório. schema: type: string format: uuid example: 9c59c9d5-25e7-4d99-b5a6-6c3e1773537d - name: format in: path required: true description: Formato do arquivo solicitado. schema: type: string enum: - pdf - xlsx example: xlsx get: tags: - Reports summary: Baixar relatório no formato escolhido operationId: downloadReportByFormat description: 'Faz o download de um relatório concluído em `pdf` ou `xlsx`. O formato precisa ter sido solicitado na criação e estar concluído. Caso contrário, retorna **400**. Permissões exigidas na chave de acesso: `accounting_reports.view`. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' security: - accessKey: [] apiKey: [] responses: '200': description: Conteúdo binário do relatório no formato solicitado. content: application/pdf: schema: type: string format: binary application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O formato solicitado ainda não está disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '410': description: O recurso não está mais disponível. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. O arquivo do formato solicitado precisa estar disponível, dentro do prazo de retenção. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem410' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /users: get: tags: - Users summary: Listar usuários operationId: listUsers description: 'Lista os usuários da empresa com paginação. **Permissão exigida:** `users.view`. | Parâmetro | Descrição | |-----------|-----------| | `active` | `1` para ativos, `0` para inativos; omitido, não filtra o status. | | `search` | Busca parcial por nome ou e-mail, combinada com `active` quando informado. | | `per_page` | Itens por página; padrão: 10. | | `page` | Número da página; padrão: 1. | Cada item contém `id`, `name`, `email` e `active`. Consulte o detalhe do usuário para os demais campos. ' security: - accessKey: [] apiKey: [] parameters: - name: active in: query required: false schema: type: string description: 'Filtro opcional por Request::boolean: 1/true/on/yes viram true; 0/false e valores não reconhecidos, inclusive 2, viram false. Ausência não filtra. Não promete 422 sob enum [0,1].' - name: search in: query required: false description: Busca por LIKE em `name` e `email` (OR). schema: type: string - name: per_page in: query required: false description: Itens por página. schema: type: integer default: 10 - name: page in: query required: false description: Número da página. schema: type: integer default: 1 responses: 200: description: Lista paginada de usuários. content: application/json: example: data: - id: 7d289537-dfff-5278-b5b3-da509dabcc34 associate_type: null associate_id: null name: Registro de exemplo email: contato-98d7645a@example.invalid email_verified_at: null ip: null phone: null two_factors: [] active: true created_at: '2026-09-23T15:42:35.000000Z' updated_at: '2026-10-17T16:41:04.000000Z' deleted_at: null links: first: https://empresa-exemplo.invalid/public-api/v1/users?page=1 last: https://empresa-exemplo.invalid/public-api/v1/users?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/users?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/users per_page: 10 to: 1 total: 1 schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractUserIndexItem' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta 403: $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' post: tags: - Users summary: Criar usuário operationId: createUser description: 'Cria um usuário vinculado a um colaborador existente e retorna **201**. **Permissões exigidas:** `users.view` + `users.create`. `associate_type` deve ser `Employee`, `Intern` ou `Partner`, e `associate_id`, o UUID do colaborador correspondente. Cada colaborador pode ter somente um usuário associado. ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserStoreRequest' example: name: João Silva email: joao.silva@empresa.com associate_type: Employee associate_id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb phone: '11987654321' role: Administrador responses: 201: description: Recurso criado com sucesso (HTTP 201). content: application/json: example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb associate_type: App\Models\Employees\Employee associate_id: 7a3e1bc2-0d9f-4c7a-b2e8-123456789abc name: João Silva email: joao.silva@empresa.com email_verified_at: null ip: null phone: '11987654321' two_factors: [] active: true created_at: '2026-06-21T10:00:00.000000Z' updated_at: '2026-06-21T10:00:00.000000Z' deleted_at: null schema: $ref: '#/components/schemas/PublicContractRawUser' 403: $ref: '#/components/responses/Forbidden' 422: $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /users/{user}: parameters: - name: user in: path required: true description: UUID do usuário. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb get: tags: - Users summary: Obter usuário operationId: showUser description: Detalhe e lista são projeções distintas; detalhe não é superconjunto garantido da lista. associate_type_name descreve o vínculo sem expor o cadastro completo associado. security: - accessKey: [] apiKey: [] responses: '200': description: Detalhes do usuário. content: application/json: example: id: d740db66-9ea7-5c10-9c9a-7deefd68c25f associate_type: App\Models\Intern\Intern associate_id: 774b8a5c-be59-53b7-81d1-6bee5ce7bf8d name: Registro de exemplo email: contato-9a90b5fe@example.invalid email_verified_at: null ip: null phone: '3100000000' two_factor_method: null active: true created_at: '2026-11-01T13:12:11.000000Z' role: AUD3 Papel associate_type_name: Intern schema: $ref: '#/components/schemas/PublicContractUserDetail' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' put: tags: - Users summary: Editar usuário operationId: updateUser description: 'Atualiza os dados de um usuário e retorna o cadastro atualizado. Envie somente os campos que deseja alterar. **Permissões exigidas:** `users.view` + `users.update`. O e-mail deve ser único entre usuários não excluídos, desconsiderando o próprio usuário. Identificadores inexistentes ou de outra empresa retornam **404**. Inativar ou trocar o cargo do **único administrador ativo** retorna **422** (a empresa não pode ficar sem administrador). ' security: - accessKey: [] apiKey: [] requestBody: required: true content: application/json: schema: type: object description: Dados para atualizar um usuário. Todos os campos são opcionais; somente os enviados são atualizados. properties: name: type: string minLength: 3 maxLength: 80 description: Novo nome do usuário. example: João Silva Atualizado email: type: string format: email description: E-mail único entre usuários não excluídos, desconsiderando o próprio usuário. example: joao.novo@empresa.com role: type: string description: Novo perfil de acesso (deve estar cadastrado na empresa). example: Financeiro attachment: type: string format: binary nullable: true description: 'Imagem de avatar do usuário (multipart/form-data): JPG, PNG ou WebP, até 2 MB.' active: type: boolean description: Estado ativo do usuário comum. Ausente preserva o estado atual. Auto-inativação e alteração que deixe a empresa sem administrador são recusadas; usuários internos de suporte têm tratamento próprio. example: name: João Silva Atualizado email: joao.novo@empresa.com role: Financeiro responses: '200': description: Usuário atualizado com sucesso. content: application/json: example: id: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb associate_type: App\Models\Employees\Employee associate_id: 7a3e1bc2-0d9f-4c7a-b2e8-123456789abc name: João Silva Atualizado email: joao.novo@empresa.com email_verified_at: null ip: null phone: '11987654321' active: true created_at: '2026-06-21T10:00:00.000000Z' updated_at: '2026-06-21T10:15:00.000000Z' deleted_at: null schema: $ref: '#/components/schemas/PublicContractRawUser' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' delete: tags: - Users summary: Excluir usuário operationId: deleteUser description: 'Exclui um usuário e retorna **204**, sem corpo. **Permissões exigidas:** `users.view` + `users.delete`. Identificadores inexistentes ou de outra empresa retornam **404**. Excluir o **único administrador ativo** da empresa retorna **422** (a empresa não pode ficar sem administrador). ' security: - accessKey: [] apiKey: [] responses: 204: description: Excluir usuário. Sem corpo de resposta. 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. A empresa não pode ficar sem administrador ativo. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-receivable/{account_receivable}/pix-mandate: get: tags: - PIX Automático summary: Consultar PIX Automático operationId: getPixMandate description: 'Consulta a elegibilidade da recorrência e seu mandato. Permissão exigida: `accounts.view`. Conta avulsa retorna `eligibility.available=false`, motivo `not_recurring` e `mandate=null`.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid responses: '200': description: Elegibilidade e mandato atual. content: application/json: example: eligibility: available: false reason: not_recurring message: 'Conta avulsa não tem PIX Automático: só contas recorrentes.' mandate: null schema: $ref: '#/components/schemas/PublicContractPixMandateAccountOverview' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - PIX Automático summary: Solicitar PIX Automático operationId: createPixMandate description: 'Solicita autorização do pagador. Permissões exigidas: `accounts.view` + `bank_slip.emit`. O corpo é vazio: valor, datas e periodicidade são derivados da recorrência. São elegíveis periodicidades mensal, trimestral, semestral e anual; a elegibilidade também depende da configuração e do destinatário. Mandato já pendente ou ativo retorna 409.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid responses: 201: description: Mandato solicitado. content: application/json: example: cancellation_pending: false confirmation_pending: false id: 00000000-0000-4000-8000-000000000020 status: pending status_description: Aguardando autorização do pagador frequency: monthly frequency_description: Mensal amount: '150.00' start_date: '2026-11-10' end_date: null expires_at: '2026-11-01T12:00:00+00:00' payer_name: Cliente Exemplo payer_tax_id: '***.000.000-**' description: Mensalidade de exemplo qrcode_payload: PIX-ILUSTRATIVO-SEM-VALIDADE qrcode_image_base64: null reject_reason: null authorized_at: null canceled_at: null canceled_by: null created_at: '2026-10-29T12:00:00+00:00' schema: $ref: '#/components/schemas/PixMandate' 403: $ref: '#/components/responses/Forbidden' 404: description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' 409: description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Já existe um PIX Automático pendente ou ativo para esta recorrência. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' pixEligibility: $ref: '#/components/examples/ProblemPixEligibility' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /accounts-receivable/{account_receivable}/pix-mandate/cancellations: post: tags: - PIX Automático summary: Cancelar PIX Automático operationId: cancelPixMandate description: 'Solicita cancelamento do mandato da recorrência. Permissões exigidas: `accounts.view` + `bank_slip.emit`. O corpo é vazio. Consulte `cancellation_pending` para acompanhar a confirmação do cancelamento.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid responses: 200: description: Mandato após solicitar cancelamento. content: application/json: example: cancellation_pending: true confirmation_pending: false id: 00000000-0000-4000-8000-000000000020 status: pending status_description: Aguardando autorização do pagador frequency: monthly frequency_description: Mensal amount: '150.00' start_date: '2026-11-10' end_date: null expires_at: '2026-11-01T12:00:00+00:00' payer_name: Cliente Exemplo payer_tax_id: '***.000.000-**' description: Mensalidade de exemplo qrcode_payload: null qrcode_image_base64: null reject_reason: null authorized_at: null canceled_at: null canceled_by: null created_at: '2026-10-29T12:00:00+00:00' schema: $ref: '#/components/schemas/PixMandate' 403: $ref: '#/components/responses/Forbidden' 404: description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /accounts-receivable/{account_receivable}/pix-instructions: get: tags: - PIX Automático summary: Listar instruções PIX operationId: listPixInstructions description: 'Lista instruções de débito desta conta em ordem decrescente de vencimento, sem paginação. Permissão exigida: `accounts.view`.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid responses: '200': description: Instruções de débito. content: application/json: example: - id: 00000000-0000-4000-8000-000000000021 status: scheduled status_description: Agendada amount: '150.00' due_date: '2026-11-10' settled_at: null end_to_end_id: null reject_reason: null applied_at: null schema: type: array items: $ref: '#/components/schemas/PixInstruction' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-receivable/{account_receivable}/bank-slip/{bank_slip}/cancellations: post: tags: - BankSlip summary: Cancelar boleto operationId: cancelBankSlip description: 'Permissões exigidas: `accounts.view` + `bank_slip.emit`. O boleto deve pertencer à conta a receber informada. A operação bem-sucedida retorna 204, sem corpo.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid - description: UUID do boleto vinculado ao recebível informado no caminho. name: bank_slip in: path required: true schema: type: string format: uuid responses: 204: description: Cancelar boleto. Sem corpo de resposta. 403: $ref: '#/components/responses/Forbidden' 404: description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': $ref: '#/components/responses/ValidationError' /accounts-receivable/{account_receivable}/bank-slip/{bank_slip}: delete: tags: - BankSlip summary: Excluir boleto operationId: deleteBankSlip description: 'Permissões exigidas: `accounts.view` + `bank_slip.emit`. O boleto deve pertencer à conta a receber informada. A operação bem-sucedida retorna 204, sem corpo.' security: - accessKey: [] apiKey: [] parameters: - name: account_receivable in: path required: true description: UUID da conta a receber. schema: type: string format: uuid - description: UUID do boleto vinculado ao recebível informado no caminho. name: bank_slip in: path required: true schema: type: string format: uuid responses: '204': description: Excluir boleto. Sem corpo de resposta. '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /partners: get: tags: - Partners summary: Listar sócios operationId: listPartners description: Requer partners.view. Sem status, retorna ativos e inativos. Busca parcial por nome ou CPF. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractPartner' description: Registros da página atual, serializados pelo Resource da listagem. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links da paginação pública. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação pública. required: - data - links - meta description: Coleção paginada de Resources Laravel; sem remover links/meta do paginator. example: data: - id: 00000000-0000-4000-8000-000000000001 name: Marina Exemplo cpf: '52998224725' description: null ownership_percentage: 50 entry_date: '2026-09-01' active: true created_at: '2026-09-19T12:00:00.000000Z' updated_at: '2026-09-19T12:00:00.000000Z' emails: [] phones: [] addresses: [] bankAccounts: [] documents: [] links: first: https://your-company.api.maisgestao.com.br/public-api/v1/partners?page=1 last: https://your-company.api.maisgestao.com.br/public-api/v1/partners?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: https://your-company.api.maisgestao.com.br/public-api/v1/partners per_page: 10 to: 1 total: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://your-company.api.maisgestao.com.br/public-api/v1/partners?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - name: status in: query required: false schema: type: boolean description: Filtra por situação. - name: search in: query required: false schema: type: string description: Nome ou CPF. - name: page in: query required: false schema: type: integer default: 1 description: Número da página a consultar ou posicionar no documento, conforme a operação. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. - name: sort_column in: query required: false schema: type: string enum: - name - cpf - ownership_percentage - entry_date - active - created_at - updated_at default: name description: Coluna de ordenação. - name: sort_direction in: query required: false schema: type: string enum: - asc - desc default: asc description: Direção da ordenação. post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/partners\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n --header\ \ \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string \"name=${CAMPO_NAME}\"\ \ \\\n --form-string \"cpf=${CAMPO_CPF}\" \\\n --form-string \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\"\ \ \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" tags: - Partners summary: Criar sócio operationId: createPartner description: Requer partners.view. Requer partners.create. O CPF deve ser único entre sócios não excluídos; não pode haver outro cadastro de pessoa ativo com o mesmo CPF. A participação deve ser maior que zero e até 100; a soma das participações não é limitada. Nome e CPF são obrigatórios. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPartner' example: id: 00000000-0000-4000-8000-000000000001 name: Marina Exemplo cpf: '52998224725' description: null ownership_percentage: 50 entry_date: '2026-09-01' active: true created_at: '2026-09-19T12:00:00.000000Z' updated_at: '2026-09-19T12:00:00.000000Z' emails: [] phones: [] addresses: [] bankAccounts: [] documents: [] '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' requestBody: required: true content: application/json: example: name: Consultoria Exemplo cpf: '52998224725' schema: description: Dados pessoais, societários e de contato para cadastrar um sócio da empresa. type: object properties: name: type: string minLength: 3 maxLength: 80 description: Não pode começar com =, +, - ou @. cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 14 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 ownership_percentage: description: 'Quando informado: maior que 0 e no máximo 100. A soma da participação dos sócios ativos não pode passar de 100%; edição exclui o próprio sócio da soma.' type: number nullable: true minimum: 0 exclusiveMinimum: true maximum: 100 entry_date: description: Data de ingresso do sócio na sociedade, em AAAA-MM-DD. type: string nullable: true format: date active: description: Indica se o registro está ativo para uso pela empresa. type: boolean emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: type: object required: - email - email_type_id description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. type: string nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: object required: - phone - phone_type_id description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: phone: type: string minLength: 10 maxLength: 11 description: DDD mais número, só dígitos. phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid wpp: description: Indica se o telefone pode ser utilizado para contato por WhatsApp. type: boolean description: description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. type: string nullable: true addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: description: Endereço informado no cadastro do sócio, com referências aos catálogos de localidades. type: object properties: address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string nullable: true number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string nullable: true complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true description: description: Observações sobre o endereço do sócio, como referências para sua localização. type: string nullable: true zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string nullable: true country: description: Identificação do país associado ao endereço ou cadastro. type: string nullable: true i_state: description: Identificação do estado no cadastro de endereço do parceiro. type: string nullable: true i_city: description: Identificação do município no cadastro de endereço do parceiro. type: string nullable: true type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string nullable: true city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer nullable: true state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer nullable: true bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array items: type: object required: - bank_name description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true maxLength: 191 agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true maxLength: 191 description: description: Informações complementares para identificar a conta bancária do sócio. type: string nullable: true maxLength: 500 pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true maxLength: 191 required: - name - cpf multipart/form-data: schema: type: object properties: name: type: string minLength: 3 maxLength: 80 description: Não pode começar com =, +, - ou @. cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 14 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 ownership_percentage: description: 'Quando informado: maior que 0 e no máximo 100. A soma da participação dos sócios ativos não pode passar de 100%; edição exclui o próprio sócio da soma.' type: number nullable: true minimum: 0 exclusiveMinimum: true maximum: 100 entry_date: description: Data de ingresso do sócio na sociedade, em AAAA-MM-DD. type: string nullable: true format: date active: description: Indica se o registro está ativo para uso pela empresa. type: boolean emails: type: string description: Lista serializada como JSON. phones: type: string description: Lista serializada como JSON. addresses: type: string description: Lista serializada como JSON. bankAccounts: type: string description: Lista serializada como JSON. documentFilesMap: type: string description: Lista JSON de objetos com document_profile_id e file_post_name. required: - name - cpf description: Envie relações e documentFilesMap como strings JSON. Cada file_post_name identifica um campo binário do formulário. Para atualizar com arquivos, envie POST com _method=PUT. additionalProperties: type: string format: binary /partners/{partner}: put: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# CAMPO_DOCUMENTFILESMAP: JSON com document_profile_id válido e file_post_name=\"documento\".\n\ # Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n# Use\ \ 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/partners/${PARTNER_ID}\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"_method=PUT\" \\\n --form-string \"documentFilesMap=${CAMPO_DOCUMENTFILESMAP}\" \\\n --form \"documento=@${ARQUIVO_DOCUMENTO}\"" tags: - Partners summary: Atualizar sócio operationId: updatePartner description: Requer partners.view. Requer partners.update. O CPF deve ser único entre sócios não excluídos; não pode haver outro cadastro de pessoa ativo com o mesmo CPF. A participação deve ser maior que zero e até 100; a soma das participações não é limitada. Relações omitidas são preservadas; [] limpa e uma lista nova substitui. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPartner' example: id: 00000000-0000-4000-8000-000000000001 name: Marina Exemplo cpf: '52998224725' description: null ownership_percentage: 50 entry_date: '2026-09-01' active: true created_at: '2026-09-19T12:00:00.000000Z' updated_at: '2026-09-19T12:00:00.000000Z' emails: [] phones: [] addresses: [] bankAccounts: [] documents: [] '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid requestBody: required: true content: application/json: example: name: Consultoria Exemplo description: Consultoria de outubro active: false schema: type: object properties: name: type: string minLength: 3 maxLength: 80 description: Não pode começar com =, +, - ou @. cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 14 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 ownership_percentage: description: 'Quando informado: maior que 0 e no máximo 100. A soma da participação dos sócios ativos não pode passar de 100%; edição exclui o próprio sócio da soma.' type: number nullable: true minimum: 0 exclusiveMinimum: true maximum: 100 entry_date: description: Data de ingresso do sócio na sociedade, em AAAA-MM-DD. type: string nullable: true format: date active: description: Indica se o registro está ativo para uso pela empresa. type: boolean emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: type: object required: - email - email_type_id description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid description: description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. type: string nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: object required: - phone - phone_type_id description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: phone: type: string minLength: 10 maxLength: 11 description: DDD mais número, só dígitos. phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid wpp: description: Indica se o telefone pode ser utilizado para contato por WhatsApp. type: boolean description: description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. type: string nullable: true addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: description: Endereço informado no cadastro do sócio, com referências aos catálogos de localidades. type: object properties: address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string nullable: true number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string nullable: true complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true description: description: Observações sobre o endereço do sócio, como referências para sua localização. type: string nullable: true zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string nullable: true country: description: Identificação do país associado ao endereço ou cadastro. type: string nullable: true i_state: description: Identificação do estado no cadastro de endereço do parceiro. type: string nullable: true i_city: description: Identificação do município no cadastro de endereço do parceiro. type: string nullable: true type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string nullable: true city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer nullable: true state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer nullable: true bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array items: type: object required: - bank_name description: Na criação todos os itens são validados. Na edição só o item novo ou alterado; o item igual ao gravado não é revalidado. properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true maxLength: 191 agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true maxLength: 191 description: description: Informações complementares para identificar a conta bancária do sócio. type: string nullable: true maxLength: 500 pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true maxLength: 191 description: Campos omitidos são preservados. Nas relações emails, phones, addresses e bankAccounts, [] limpa e uma nova lista substitui o conteúdo. multipart/form-data: schema: type: object properties: name: type: string minLength: 3 maxLength: 80 description: Não pode começar com =, +, - ou @. cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 14 nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 ownership_percentage: description: 'Quando informado: maior que 0 e no máximo 100. A soma da participação dos sócios ativos não pode passar de 100%; edição exclui o próprio sócio da soma.' type: number nullable: true minimum: 0 exclusiveMinimum: true maximum: 100 entry_date: description: Data de ingresso do sócio na sociedade, em AAAA-MM-DD. type: string nullable: true format: date active: description: Indica se o registro está ativo para uso pela empresa. type: boolean emails: type: string description: Lista serializada como JSON. phones: type: string description: Lista serializada como JSON. addresses: type: string description: Lista serializada como JSON. bankAccounts: type: string description: Lista serializada como JSON. documentFilesMap: type: string description: Lista JSON de objetos com document_profile_id e file_post_name. _method: description: 'Método HTTP a ser interpretado no envio multipart quando há atualização de cadastro. Opções: `PUT`.' type: string enum: - PUT description: Envie relações e documentFilesMap como strings JSON. Cada file_post_name identifica um campo binário do formulário. Para atualizar com arquivos, envie POST com _method=PUT. additionalProperties: type: string format: binary get: tags: - Partners summary: Consultar sócio operationId: showPartner description: Requer partners.view. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPartner' example: id: 00000000-0000-4000-8000-000000000001 name: Marina Exemplo cpf: '52998224725' description: null ownership_percentage: 50 entry_date: '2026-09-01' active: true created_at: '2026-09-19T12:00:00.000000Z' updated_at: '2026-09-19T12:00:00.000000Z' emails: [] phones: [] addresses: [] bankAccounts: [] documents: [] '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid delete: tags: - Partners summary: Excluir sócio operationId: deletePartner description: Requer partners.view. Requer partners.delete. Somente sócios inativos podem ser excluídos. security: - accessKey: [] apiKey: [] responses: '204': description: Sem conteúdo. '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Não foi possível concluir a operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid /partners/{partner}/activation: put: tags: - Partners summary: Alterar situação do sócio operationId: setPartnerActive description: Requer partners.view. Requer partners.update. Com active, define a situação; sem o campo, alterna. Inativar também inativa o usuário vinculado; reativar o sócio não reativa esse usuário. Conflito de CPF retorna 422. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Operação realizada com sucesso. '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Não foi possível concluir a operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid requestBody: required: false content: application/json: example: active: false schema: type: object properties: active: description: Indica se o registro está ativo para uso pela empresa. type: boolean /partners/{partner}/documents: get: tags: - Partners summary: Listar documentos do sócio operationId: listPartnerDocuments description: Requer partners.view. Requer documents.view. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Documentos do sócio formatados por ShowDocuments. example: [] '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid post: tags: - Partners summary: Adicionar documentos ao sócio operationId: createPartnerDocuments description: Requer partners.view. Requer documents.create. Envie um objeto ou uma lista de perfis. Um perfil já associado retorna o documento existente. A resposta contém o registro do documento, sem a apresentação usada na listagem. A criação aceita apenas o perfil do documento. Envie o arquivo pela operação de upload; attachment_id e original_name não podem ser informados na criação. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: example: id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 schema: oneOf: - $ref: '#/components/schemas/PublicContractRawPersonDocument' - type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' description: Documentos crus retornados por HasDocuments::addDocument quando a entrada é uma lista. description: HasDocuments::addDocument retorna um modelo para entrada singular ou coleção para entrada múltipla; PartnerService devolve JSON sem Resource. '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Não foi possível concluir a operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid requestBody: required: true description: Vincula um ou mais perfis de documento ao cadastro. Envie apenas document_profile_id. Para anexar arquivo, utilize a operação de upload; attachment_id e original_name não são aceitos aqui. content: application/json: schema: oneOf: - type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. - type: array minItems: 1 items: type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. example: document_profile_id: 10000000-0000-4000-8000-000000000001 /partners/{partner}/documents/required: get: tags: - Partners summary: Consultar documentos obrigatórios operationId: requiredPartnerDocuments description: Requer partners.view. Requer documents.view. Retorna os perfis obrigatórios da categoria Sócio que correspondem a type ou Any. Sem type, retorna os perfis Any. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRequiredProfile' description: Perfis documentais obrigatórios do sócio. example: [] '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Não foi possível concluir a operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid - name: type in: query required: false schema: type: string enum: - PF - PJ - Any - I nullable: false default: Any description: 'Filtro opcional de DocumentProfileType: PF, PJ, Any ou I. Ausência mantém a seleção de perfis Any; valor inválido é 422 errors.type antes da consulta. Um resultado vazio não valida tipo fora do enum.' /partners/{partner}/documents/attachment: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/partners/${PARTNER_ID}/documents/attachment\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form-string \"document_id=${CAMPO_DOCUMENT_ID}\" \\\n --form \"attachment=@${ARQUIVO_ATTACHMENT}\"" tags: - Partners summary: Enviar anexo de documento operationId: uploadPartnerDocumentAttachment description: Requer partners.view. Requer documents.update. O documento deve pertencer ao sócio. Envie um PDF dentro do limite de upload configurado para a empresa. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: example: id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 document_profile_name: Comprovante de identificação document_profile_description: Identificação para cadastro fictício attachment: name: identificacao-exemplo type: document size: 2048 mime: application/pdf ext: pdf url: https://empresa-exemplo.invalid/10000000-0000-4000-8000-000000000014/documents/MTAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDExOmRvY3VtZW50Ojo=/identificacao-exemplo created_at: '2026-10-20T12:00:00.000000Z' original_name: identificacao-exemplo.pdf required: true schema: $ref: '#/components/schemas/PublicContractPersonDocument' '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Não foi possível concluir a operação. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid requestBody: required: true content: multipart/form-data: schema: type: object properties: document_id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid attachment: description: Arquivo anexado ao registro, conforme o tipo e formato declarados no schema. type: string format: binary required: - document_id - attachment /partners/{partner}/documents/{document}/file: get: tags: - Partners summary: Baixar documento do sócio operationId: downloadPartnerDocument description: Requer partners.view. Requer documents.view. O documento deve pertencer ao sócio e ter anexo. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid - description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. name: document in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid /partners/{partner}/documents/{document}: delete: tags: - Partners summary: Excluir documento do sócio operationId: deletePartnerDocument description: Requer partners.view. Requer documents.delete. O documento deve pertencer ao sócio. security: - accessKey: [] apiKey: [] responses: '204': description: Sem conteúdo. '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': $ref: '#/components/responses/Forbidden' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID do sócio da empresa autenticada. name: partner in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid - description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. name: document in: path required: true schema: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid /configuration/payment-activation: get: tags: - PaymentLinks summary: Consultar ativação de recebimentos operationId: getReceivingActivation description: Requer bank_slip.configure ou card_receiving.configure. Retorna o estado de boleto, PIX e cartão, além da conta de repasse. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/ReceivingPaymentActivationStatus' example: transfer_account: bank: '001' agency: '1234' number: 12345-6 boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo Ltda fantasy_name: Empresa Exemplo cnpj: '12345678000190' email: financeiro@empresa.exemplo phone: '11999990000' address: Rua Exemplo, 100, Centro, São Paulo, SP, 01000-000 registration_profile: site: https://empresa.exemplo ticket_medio: 150 faturamento_mensal: 20000 enrolled: true commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: '2.50' payment_pix_fee: '1.00' payment_settlement_days: 2 '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /configuration/payment-activation/bank-slip: post: tags: - PaymentLinks summary: Ativar recebimento por boleto e PIX operationId: activateReceivingBankSlip description: Requer bank_slip.configure. A ativação depende do plano contratado e da disponibilidade de autoatendimento. Envie a conta de repasse completa quando a empresa ainda não a tiver cadastrada. Conta já cadastrada é preservada. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/ReceivingPaymentActivationStatus' example: transfer_account: bank: '001' agency: '1234' number: 12345-6 boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo Ltda fantasy_name: Empresa Exemplo cnpj: '12345678000190' email: financeiro@empresa.exemplo phone: '11999990000' address: Rua Exemplo, 100, Centro, São Paulo, SP, 01000-000 registration_profile: site: https://empresa.exemplo ticket_medio: 150 faturamento_mensal: 20000 enrolled: true commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: '2.50' payment_pix_fee: '1.00' payment_settlement_days: 2 '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' requestBody: required: true content: application/json: example: bank: '001' agency: 0001-9 number: 00012345-5 schema: type: object properties: bank: description: Dados da instituição financeira vinculada ao recurso. type: string nullable: true pattern: ^[0-9]{1,3}$ minLength: 1 maxLength: 3 agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true maxLength: 10 pattern: ^[0-9]{4}-?[0-9Xx]$ number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true maxLength: 20 pattern: ^[0-9]{8}-?[0-9Xx]$ description: Conta de repasse opcional quando já cadastrada. Caso qualquer campo seja informado, envie os três campos. Uma conta de repasse existente é preservada. required: - bank - agency - number /configuration/payment-activation/card: post: tags: - PaymentLinks summary: Ativar recebimento por cartão operationId: activateReceivingCard description: Requer card_receiving.configure. A ativação depende do plano contratado e da disponibilidade de autoatendimento. Envie a conta de repasse completa quando a empresa ainda não a tiver cadastrada. Conta já cadastrada é preservada. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/ReceivingPaymentActivationStatus' example: transfer_account: bank: '001' agency: '1234' number: 12345-6 boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: false card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo Ltda fantasy_name: Empresa Exemplo cnpj: '12345678000190' email: financeiro@empresa.exemplo phone: '11999990000' address: Rua Exemplo, 100, Centro, São Paulo, SP, 01000-000 registration_profile: site: https://empresa.exemplo ticket_medio: 150 faturamento_mensal: 20000 enrolled: true commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: '2.50' payment_pix_fee: '1.00' payment_settlement_days: 2 '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' requestBody: required: false content: application/json: example: {} schema: $ref: '#/components/schemas/ActivateReceivingRequest' /configuration/payment-link: get: tags: - PaymentLinks summary: Consultar configuração dos links operationId: getPaymentLinkConfiguration description: Requer payment_links.view ou payment_links.configure. available_methods reflete os meios de recebimento ativados; preselected_method pode ser null quando nenhum meio está disponível. security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PaymentLinkConfiguration' example: available_methods: - boleto - pix - card default_methods: - pix - card preselected_method: pix merge: false branding: logo_url: null color: '#1A73E8' display_name: Empresa Exemplo message: null support_email: suporte@empresa.exemplo support_phone: (11) 99999-0000 '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' post: tags: - PaymentLinks summary: Configurar métodos dos links operationId: updatePaymentLinkConfiguration description: Requer payment_links.configure. Escolha ao menos um método disponível e um método pré-selecionado entre os escolhidos. Retorna 201 com a configuração atualizada. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PaymentLinkConfiguration' example: available_methods: - boleto - pix - card default_methods: - pix - card preselected_method: pix merge: false branding: logo_url: null color: '#1A73E8' display_name: Empresa Exemplo message: null support_email: suporte@empresa.exemplo support_phone: (11) 99999-0000 '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' requestBody: required: true content: application/json: example: default_methods: - pix preselected_method: pix schema: $ref: '#/components/schemas/UpdatePaymentLinkConfigurationRequest' /accounts-receivable/{account_receivable}/payment-link: get: tags: - PaymentLinks summary: Consultar link aberto da conta operationId: getAccountPaymentLink description: 'Requer accounts.view e ao menos uma das permissões payment_links.view ou payment_links.create. Retorna somente o link aberto. Quando a conta existe e não há link aberto, retorna 200 com data: null.' security: - accessKey: [] apiKey: [] responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/AccountPaymentLinkLookupResponse' examples: open: value: data: id: 01996021-725a-701e-8a10-4141deae9031 token: a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 url: https://empresa.example/pagar/a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 status: open allowed_methods: - pix - card paid_at: null paid_method: null accounts: - id: 01996021-725a-701e-8a10-4141deae9032 description: Mensalidade due_date: '2026-10-10T00:00:00.000000Z' balance: '150.00' none: value: data: null '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' parameters: - description: UUID da conta a receber da empresa autenticada. name: account_receivable in: path required: true schema: type: string format: uuid post: tags: - PaymentLinks summary: Criar link de pagamento operationId: createAccountPaymentLink description: Requer accounts.view e payment_links.create. A conta da URL sempre participa do link. As contas adicionais devem pertencer ao mesmo cliente, estar em aberto e não possuir outro link aberto. Retorna a URL do checkout para compartilhar com o pagador. A criação do link não realiza uma cobrança de cartão. security: - accessKey: [] apiKey: [] responses: '201': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/AccountPaymentLinkResponse' example: data: id: 01996021-725a-701e-8a10-4141deae9031 token: a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 url: https://empresa.example/pagar/a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 status: open allowed_methods: - pix - card paid_at: null paid_method: null accounts: - id: 01996021-725a-701e-8a10-4141deae9032 description: Mensalidade due_date: '2026-10-10T00:00:00.000000Z' balance: '150.00' '401': description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: UUID da conta a receber da empresa autenticada. name: account_receivable in: path required: true schema: type: string format: uuid requestBody: required: false content: application/json: example: methods: - pix schema: type: object properties: accounts: type: array nullable: true items: type: string format: uuid description: Opcional e nullable. Ausente/null é convertido em [] como antes. Se informado, deve ser array e cada item string UUID, antes de lock/serviço; texto solto dá 422 errors.accounts. Existência/elegibilidade continuam no serviço. methods: description: Validação de métodos permanece no serviço. Método desconhecido pode retornar 422 detail; não se promete errors.methods universal. type: array items: type: string enum: - boleto - pix - card description: A conta da URL sempre é incluída. accounts acrescenta contas do mesmo cliente, em aberto e deste tenant. Sem methods, ou com lista vazia, são usados os métodos padrão disponíveis. Métodos repetidos são consolidados. /users/partners: get: tags: - Partners summary: Listar sócios para usuários operationId: listPartnersForUsers description: Requer users.view. Retorna uma lista sem paginação dos sócios ativos disponíveis no contexto de usuários. security: - accessKey: [] apiKey: [] responses: '200': description: Sócios ativos. content: application/json: example: - id: 10000000-0000-4000-8000-000000000022 name: Nara Exemplo cpf: '00000000000' description: Sócia fictícia para demonstração ownership_percentage: 25.0 entry_date: '2026-10-01' active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' emails: [] user: null phones: [] schema: type: array items: $ref: '#/components/schemas/PublicContractPartnerForUsers' description: Sócios ativos para associação de usuários. '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-payable/partners: get: tags: - Partners summary: Listar sócios para contas a pagar operationId: listPartnersForAccountsPayable description: Requer accounts.view. Retorna uma lista sem paginação dos sócios ativos disponíveis no contexto de contas a pagar. security: - accessKey: [] apiKey: [] responses: '200': description: Sócios ativos. content: application/json: example: - id: 00000000-0000-4000-8000-000000000001 name: Sócio Exemplo schema: type: array items: type: object required: - id - name properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /accounts-receivable/partners: get: tags: - Partners summary: Listar sócios para contas a receber operationId: listPartnersForAccountsReceivable description: Requer accounts.view. Retorna uma lista sem paginação dos sócios ativos disponíveis no contexto de contas a receber. security: - accessKey: [] apiKey: [] responses: '200': description: Sócios ativos. content: application/json: example: - id: 00000000-0000-4000-8000-000000000001 name: Sócio Exemplo schema: type: array items: type: object required: - id - name properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string '403': $ref: '#/components/responses/Forbidden' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' /categories: get: tags: - Catálogos de integração summary: Listar categorias financeiras description: 'Lista categorias e sua configuração fiscal, incluindo habilitação para NFS-e. Filtros: search, active e type; aceita page e per_page. Permissão na chave: categories.view.' operationId: catalog_get_categories responses: '200': description: Operação realizada. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCategory' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/categories?page=1 last: https://empresa-exemplo.invalid/public-api/v1/categories?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/categories?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/categories per_page: 10 to: 1 total: 1 '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: Número da página a consultar ou posicionar no documento, conforme a operação. in: query name: page schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. in: query name: per_page schema: type: integer minimum: 1 - name: search in: query required: false description: Busca textual da listagem. schema: type: string - name: type in: query required: false description: Tipo usado para filtrar os registros; consulte o enum do recurso. schema: type: string - name: active in: query required: false description: Filtra o estado ativo quando informado. schema: type: boolean post: tags: - Categorias summary: Criar — categorias operationId: business_post_categories description: 'Permissões exigidas na chave: (categories.view) e (categories.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Consultoria Exemplo type: account_payable schema: type: object properties: fiscal_config: type: object nullable: true description: 'Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia nota > recorrência > categoria > empresa). Gravação por mescla nas chaves da tributação do ISSQN e do comércio exterior: chave ausente preserva e null limpa.' properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `account_payable`, `account_receivable`.' type: string enum: - account_payable - account_receivable nbs: description: String opcional e nullable; não é UUID obrigatório neste contexto. Número JSON é 422; string inexistente é recusa de domínio 400. type: string nullable: true taxes: description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. type: array items: {} nullable: true default: description: Indica que este registro é a opção padrão no contexto do cadastro. type: boolean nfse_enabled: description: Indica se a categoria está habilitada para uso na emissão de NFS-e. type: boolean ctrib_nac: type: string nullable: true description: Código de tributação nacional usado para localizar a correlação fiscal. ctrib_mun: type: string nullable: true description: Código de tributação municipal usado para localizar a correlação fiscal. required: - name - type responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCategory' example: id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_payable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /account-standard-launches: get: tags: - Catálogos de integração summary: Listar contas contábeis description: 'Consulta os identificadores de conta contábil usados na criação de contas. Filtros: search e type; aceita page e per_page. Permissão na chave: std_launch.view.' operationId: catalog_get_account_standard_launches responses: '200': description: Operação realizada. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractStandardLaunch' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000002 name: Apoio administrativo recorrente code: '101' type: receivable aliases: - id: 10000000-0000-4000-8000-000000000003 name: Apoio mensal categories: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/account-standard-launches?page=1 last: https://empresa-exemplo.invalid/public-api/v1/account-standard-launches?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/account-standard-launches?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/account-standard-launches per_page: 10 to: 1 total: 1 '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: Número da página a consultar ou posicionar no documento, conforme a operação. in: query name: page schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. in: query name: per_page schema: type: integer minimum: 1 - name: search in: query required: false description: Busca textual da listagem. schema: type: string - name: type in: query required: false description: Tipo usado para filtrar os registros; consulte o enum do recurso. schema: type: string post: tags: - Contas contábeis summary: Criar conta contábil operationId: business_post_account_standard_launches description: 'Permissões exigidas na chave: (std_launch.view) e (std_launch.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Consultoria Exemplo code: 1 type: payable schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 code: description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. type: integer type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable aliases: description: Nomes alternativos usados para reconhecer este lançamento nas importações e sugestões. type: array items: type: object items: {} properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 3 maxLength: 255 required: - name nullable: true categories: description: Categorias financeiras vinculadas ao lançamento padrão. type: array items: {} nullable: true taxes: description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. type: array items: {} nullable: true required: - name - code - type responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractStandardLaunch' example: id: 10000000-0000-4000-8000-000000000002 name: Apoio administrativo recorrente code: '101' type: payable aliases: - id: 10000000-0000-4000-8000-000000000003 name: Apoio mensal categories: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cost-centers: get: tags: - Catálogos de integração summary: Listar centros de custo description: 'Consulta centros ativos e inativos desta empresa. Permissão na chave: accounts.view ou categories.view/create/update.' operationId: catalog_get_cost_centers responses: 200: description: Operação realizada. content: application/json: example: - id: 10000000-0000-4000-8000-000000000004 name: Unidade de atendimento active: true schema: type: array items: $ref: '#/components/schemas/PublicContractCostCenter' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' post: tags: - Catálogos de integração summary: Criar centro de custo description: 'Cadastra um centro de custo; name deve ser único na empresa. Permissão na chave: categories.create.' operationId: catalog_post_cost_centers responses: 201: description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCostCenter' example: id: 10000000-0000-4000-8000-000000000004 name: Unidade de atendimento active: true 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' requestBody: required: true content: application/json: schema: type: object required: - name properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 150 active: description: Indica se o registro está ativo para uso pela empresa. type: boolean default: true example: name: Administrativo active: true /configuration/cost-centers: get: tags: - Catálogos de integração summary: Consultar configuração de centros de custo description: 'Retorna enabled, mode e default_cost_center_id para preencher contas corretamente. Permissão na chave: accounts.view ou categories.view/create/update.' operationId: catalog_get_configuration_cost_centers responses: '200': description: Operação realizada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCostCenterConfiguration' example: enabled: true mode: multiple default_cost_center_id: null '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' put: tags: - Configurações summary: Atualizar configuração — configurações operationId: business_put_configuration_cost_centers description: 'Permissões exigidas na chave: (categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: enabled: false mode: single schema: type: object properties: enabled: description: Ativa ou desativa o recurso configurado nesta operação. type: boolean mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `single`, `multiple`.' type: string enum: - single - multiple default_cost_center_id: description: UUID do centro de custo utilizado como padrão quando não houver seleção específica. type: string format: uuid nullable: true required: - enabled - mode responses: '200': description: Atualizar configuração — configurações. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCostCenterConfiguration' example: enabled: true mode: multiple default_cost_center_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /tax-code: get: tags: - Catálogos de integração summary: Listar códigos tributários description: 'Retorna códigos tributários do padrão de emissão configurado na empresa. Use o id retornado no campo tax da emissão. Permissão na chave: fiscal_rps.view/emit ou categories.view/create/update.' operationId: catalog_get_tax_code responses: 200: description: Operação realizada. content: application/json: example: - id: 20000000-0000-4000-8000-000000000010 code: '01.01' description: Serviço Exemplo schema: type: array items: $ref: '#/components/schemas/PublicContractRawTaxCode' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /nbs: get: tags: - Catálogos de integração summary: Listar NBS description: 'Consulta a classificação de serviços disponível para a emissão. Use o id retornado no campo nbs. Permissão na chave: fiscal_rps.view/emit ou categories.view/create/update.' operationId: catalog_get_nbs responses: 200: description: Operação realizada. content: application/json: example: - id: 20000000-0000-4000-8000-000000000011 code: 1.1502.20.00 description: Serviço Exemplo schema: type: array items: $ref: '#/components/schemas/PublicContractNbsRaw' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /cities: get: tags: - Catálogos de integração summary: Listar municípios description: Catálogo de localidades com id interno, state_id e title. id não é código IBGE. Use os identificadores devolvidos pelo catálogo. operationId: catalog_get_cities responses: 200: description: Operação realizada. content: application/json: example: - id: 10000000-0000-4000-8000-000000000015 state_id: 10000000-0000-4000-8000-000000000016 title: Belo Horizonte schema: type: array items: $ref: '#/components/schemas/PublicContractCityLookup' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /states: get: tags: - Catálogos de integração summary: Listar estados description: 'Consulta os estados disponíveis para cadastro de endereço. Permissão na chave: clients.view/create/update, providers.view/create/update, subsidiaries.view/create/update ou fiscal_rps.emit.' operationId: catalog_get_states responses: 200: description: Operação realizada. content: application/json: example: - id: 10000000-0000-4000-8000-000000000016 title: Minas Gerais letter: MG schema: type: array items: $ref: '#/components/schemas/PublicContractStateLookup' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /countries: get: tags: - Catálogos de integração summary: Listar países description: 'Consulta os países disponíveis no padrão nacional de NFS-e. Permissão na chave: clients.view/create/update, providers.view/create/update, subsidiaries.view/create/update ou fiscal_rps.emit.' operationId: catalog_get_countries responses: 200: description: Operação realizada. content: application/json: example: - id: 10000000-0000-4000-8000-000000000017 code: BR country: Brasil schema: type: array items: $ref: '#/components/schemas/PublicContractCountryLookup' description: Registros do catálogo consultado, sem paginação. 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' /subsidiaries: get: tags: - Catálogos de integração summary: Listar filiais description: 'Consulta filiais emissoras da empresa. Aceita page e per_page. Permissão na chave: subsidiaries.view.' operationId: catalog_get_subsidiaries responses: '200': description: Operação realizada. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractSubsidiary' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000018 name: Empresa Exemplo Serviços Ltda. fantasy_name: Unidade Modelo cnpj: 00000000000191 active: true addresses: [] phones: [] emails: - id: 10000000-0000-4000-8000-000000000019 email: unidade@empresa-exemplo.invalid description: Contato administrativo type: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa fiscal_rps_config: null created_at: '2026-10-20T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/subsidiaries?page=1 last: https://empresa-exemplo.invalid/public-api/v1/subsidiaries?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/subsidiaries?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/subsidiaries per_page: 10 to: 1 total: 1 '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '429': $ref: '#/components/responses/TooManyRequests' parameters: - description: Número da página a consultar ou posicionar no documento, conforme a operação. in: query name: page schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. in: query name: per_page schema: type: integer minimum: 1 post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/subsidiaries\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n \ \ --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"name=${CAMPO_NAME}\" \\\n --form-string \"fantasy_name=${CAMPO_FANTASY_NAME}\" \\\n --form-string\ \ \"cnpj=${CAMPO_CNPJ}\" \\\n --form-string \"addresses[0][state_id]=${CAMPO_ADDRESSES_0__STATE_ID_}\"\ \ \\\n --form-string \"addresses[0][city_id]=${CAMPO_ADDRESSES_0__CITY_ID_}\" \\\n --form-string \"\ addresses[0][address]=${CAMPO_ADDRESSES_0__ADDRESS_}\" \\\n --form-string \"addresses[0][number]=${CAMPO_ADDRESSES_0__NUMBER_}\"\ \ \\\n --form-string \"addresses[0][neighborhood]=${CAMPO_ADDRESSES_0__NEIGHBORHOOD_}\" \\\n --form-string\ \ \"addresses[0][zipcode]=${CAMPO_ADDRESSES_0__ZIPCODE_}\" \\\n --form-string \"emails[0][email]=${CAMPO_EMAILS_0__EMAIL_}\"\ \ \\\n --form-string \"emails[0][type]=${CAMPO_EMAILS_0__TYPE_}\" \\\n --form-string \"phones[0][phone]=${CAMPO_PHONES_0__PHONE_}\"\ \ \\\n --form-string \"phones[0][type]=${CAMPO_PHONES_0__TYPE_}\" \\\n --form-string \"fiscal_rps_config[issuer][im]=${CAMPO_FISCAL_RPS_CONFIG_ISSUER__IM_}\"\ \ \\\n --form-string \"fiscal_rps_config[nfse_system]=${CAMPO_FISCAL_RPS_CONFIG_NFSE_SYSTEM_}\" \\\n\ \ --form-string \"fiscal_rps_config[issqn]=${CAMPO_FISCAL_RPS_CONFIG_ISSQN_}\" \\\n --form-string \"\ fiscal_rps_config[use_issqn]=${CAMPO_FISCAL_RPS_CONFIG_USE_ISSQN_}\"" tags: - Filiais summary: Criar — filiais operationId: business_post_subsidiaries description: 'Permissões exigidas na chave: (subsidiaries.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 100 fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string maxLength: 100 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string maxLength: 18 addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: type: object properties: state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: string city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: string address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal em texto; este request não exige oito dígitos. Não impor padrão brasileiro sem contexto do país. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 required: - state_id - city_id - address - number - neighborhood - zipcode minItems: 1 emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: type: object properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 type: description: ID do tipo de contato do catálogo; nome bruto type exigido neste contexto. type: string required: - email - type minItems: 1 phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: object properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string maxLength: 14 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 type: type: string description: ID do tipo de contato do catálogo; nome bruto type exigido neste contexto. required: - phone - type minItems: 1 fiscal_rps_config: description: Configuração fiscal do emissor para o preenchimento de RPS e NFS-e. type: object items: {} properties: issuer: description: Obrigatório na criação; se enviado exige im. Na edição pode ser omitido/nulo conforme request. type: object items: {} maxItems: 100 properties: im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 100 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string maxLength: 18 razao: description: Razão social do emissor conforme seu cadastro fiscal. type: string maxLength: 255 mail: description: Endereço de e-mail utilizado para contato com o emissor. type: string maxLength: 255 phone: description: Número de telefone do contato, com DDD quando nacional. type: string maxLength: 255 required: - im certificate: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' password: description: Senha do usuário para autenticação. Trate como segredo e não registre em logs. type: string nullable: true maxLength: 100 nfse_system: description: Sistema fiscal exigido na filial; valores do enum NFSeSystem. type: string enum: - municipal - national logo: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' issqn: type: number minimum: 0 maximum: 5 description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. simple: type: string enum: - 'no' - mei - me_epp description: 'Enquadramento do prestador no Simples Nacional usado na emissão da NFS-e. Opções: `no`, `mei`, `me_epp`.' required: - issuer - nfse_system - issqn - use_issqn required: - name - fantasy_name - cnpj - addresses - emails - phones - fiscal_rps_config example: name: Filial Exemplo Fictícia fantasy_name: Filial Exemplo cnpj: '11222333000181' addresses: - state_id: 10000000-0000-4000-8000-000000000901 city_id: 10000000-0000-4000-8000-000000000902 address: Rua Exemplo number: '123' neighborhood: Centro zipcode: '30110000' emails: - email: filial@example.com type: 10000000-0000-4000-8000-000000000903 phones: - phone: '31999990001' type: 10000000-0000-4000-8000-000000000904 fiscal_rps_config: issqn: 2 use_issqn: true nfse_system: national issuer: im: '12345' cnpj: '11222333000181' razao: Filial Exemplo Fictícia responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractSubsidiary' example: id: 10000000-0000-4000-8000-000000000018 name: Empresa Exemplo Serviços Ltda. fantasy_name: Unidade Modelo cnpj: 00000000000191 active: true addresses: [] phones: [] emails: - id: 10000000-0000-4000-8000-000000000019 email: unidade@empresa-exemplo.invalid description: Contato administrativo type: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa fiscal_rps_config: null created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /account-standard-launches/{stdLaunch}: get: tags: - Contas contábeis summary: Consultar conta contábil operationId: business_get_account_standard_launches_stdLaunch description: 'Permissões exigidas na chave: (std_launch.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: stdLaunch in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar conta contábil. content: application/json: schema: $ref: '#/components/schemas/PublicContractStandardLaunch' example: id: 10000000-0000-4000-8000-000000000002 name: Apoio administrativo recorrente code: '101' type: receivable aliases: - id: 10000000-0000-4000-8000-000000000003 name: Apoio mensal categories: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Contas contábeis summary: Atualizar conta contábil operationId: business_put_account_standard_launches_stdLaunch description: 'Permissões exigidas na chave: (std_launch.view) e (std_launch.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Na criação, code é validado como inteiro não negativo. Na atualização, um código textual legado pode ser preservado quando é idêntico ao código atual; códigos novos ou alterados continuam sujeitos à validação numérica.' parameters: - name: stdLaunch in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria code: 123 type: receivable schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 code: anyOf: - type: integer minimum: 0 - type: string description: Somente o código legado idêntico ao já salvo. description: Novo código inteiro não negativo; código legado sem alteração é preservado. type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable aliases: description: Nomes alternativos usados para reconhecer este lançamento nas importações e sugestões. type: array items: type: object items: {} properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 3 maxLength: 255 required: - name nullable: true categories: description: Categorias financeiras vinculadas ao lançamento padrão. type: array items: {} nullable: true taxes: description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. type: array items: {} nullable: true required: - name - code - type responses: '200': description: Atualizar conta contábil. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractStandardLaunch' example: id: 10000000-0000-4000-8000-000000000002 name: Apoio administrativo recorrente code: '101' type: receivable aliases: - id: 10000000-0000-4000-8000-000000000003 name: Apoio mensal categories: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Contas contábeis summary: Excluir conta contábil operationId: business_delete_account_standard_launches_stdLaunch description: 'Permissões exigidas na chave: (std_launch.view) e (std_launch.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: stdLaunch in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir conta contábil. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /account-standard-launches/{stdLaunch}/aliases: post: tags: - Contas contábeis summary: Adicionar apelido à conta contábil operationId: business_post_account_standard_launches_stdLaunch_aliases description: 'Permissões exigidas na chave: (std_launch.view) e (std_launch.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: stdLaunch in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: alias: CONSULTORIA OUTUBRO schema: type: object properties: alias: description: Nome alternativo pelo qual o cadastro ou lançamento pode ser reconhecido. type: string minLength: 3 maxLength: 255 required: - alias responses: '200': description: Adicionar apelido à conta contábil. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractStandardLaunch' example: id: 10000000-0000-4000-8000-000000000002 name: Apoio administrativo recorrente code: '101' type: receivable aliases: - id: 10000000-0000-4000-8000-000000000003 name: Apoio mensal categories: - id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /aux-documents: get: tags: - Documentos auxiliares summary: Listar — documentos auxiliares operationId: business_get_aux_documents description: 'Permissões exigidas na chave: (aux_document.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — documentos auxiliares. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractAuxDocument' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 attachment: id: 70000000-0000-4000-8000-000000000002 name: comprovante.pdf ext: pdf mime: application/pdf document_id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' created_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/aux-documents?page=1 last: https://empresa-exemplo.invalid/public-api/v1/aux-documents?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/aux-documents?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/aux-documents per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/aux-documents\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\" \\\n\ \ --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"account_type=${CAMPO_ACCOUNT_TYPE}\" \\\n --form-string \"account_id=${CAMPO_ACCOUNT_ID}\" \\\n \ \ --form \"attachments[0]=@${ARQUIVO_ATTACHMENTS_0_}\"" tags: - Documentos auxiliares summary: Criar — documentos auxiliares operationId: business_post_aux_documents description: 'Permissões exigidas na chave: (aux_document.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: account_type: description: 'Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. Opções: `receivable`, `payable`.' type: string enum: - receivable - payable account_id: description: Identificador da conta financeira no escopo da empresa autenticada. type: string attachments: description: Arquivos anexados ao registro para comprovação ou consulta. type: array items: type: string format: binary minItems: 1 required: - account_type - account_id responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Operação realizada com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /aux-documents/{document}: get: tags: - Documentos auxiliares summary: Baixar — documentos auxiliares operationId: business_get_aux_documents_document description: 'Permissões exigidas na chave: (aux_document.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar — documentos auxiliares. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Documentos auxiliares summary: Excluir — documentos auxiliares operationId: business_delete_aux_documents_document description: 'Permissões exigidas na chave: (aux_document.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — documentos auxiliares. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /balances: get: tags: - Balanços summary: Listar — balanços operationId: business_get_balances description: 'Permissões exigidas na chave: (accounting_reports.view). O realizado segue o regime de caixa dos relatórios: conta o pagamento da fatura e não soma novamente as compras do cartão. Com expectation=1, acrescenta somente saldos restantes atuais de contas já geradas com vencimento na janela, incluindo contas parcialmente pagas. Não reconstrói o saldo em aberto de uma data histórica nem estima recorrências ainda não geradas. Totais realizados, previstos e projetados são separados, em strings decimais com duas casas; saídas são negativas. O resultado projetado é o realizado mais o restante, sem saldo de abertura. O limite é 50.000 movimentos; reduza o período se receber 422.' parameters: - description: Data inicial inclusiva, AAAA-MM-DD. Obrigatória com expectation=1. Sem previsão e sem início, inclui o histórico realizado. name: start_date in: query required: false schema: type: string format: date nullable: true - description: Data final inclusiva, AAAA-MM-DD, igual ou posterior ao início. Obrigatória com expectation=1; sem previsão, omitida considera hoje. name: end_date in: query required: false schema: type: string format: date nullable: true - name: expectation in: query required: false schema: type: integer enum: - 0 - 1 default: 0 description: Inclui os saldos restantes na previsão. Envie 1 para incluir e 0 para somente realizado; texto true/false retorna 422. Quando 1, informe ambas as datas. example: 0 x-docs-example-note: Consulta do realizado. Para acrescentar a previsão atual de contas já geradas, use 1 e informe ambas as datas. responses: '200': description: Listar — balanços. content: application/json: schema: type: object properties: balance: type: array items: type: object properties: id: type: string format: uuid description: UUID da conta a receber ou a pagar (account_id), tanto na linha realizada quanto na prevista; não identifica o pagamento nem é único por movimento. name: type: string description: Descrição da conta financeira fornecida pelo relatório canônico; string vazia quando a descrição está ausente. generate_for_entity_name: type: string nullable: true description: Nome da contraparte proveniente de ReportLine.counterparty_name, ou null quando não informado pelo produtor; não representa o tipo da entidade. type: type: string description: 'Identifica a direção e a natureza do movimento: recebimento ou pagamento realizado, ou saldo restante previsto da conta. Tipos com prefixo expected_ aparecem somente quando expectation é true.' enum: - inbound_account - outbound_account - expected_inbound_account - expected_outbound_account value_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor líquido assinado do movimento, em reais, como string decimal com exatamente duas casas. Na linha realizada corresponde à baixa; na prevista, ao saldo restante atual, sem repetir o principal já pago. Entradas preservam net e saídas invertem seu sinal; zero é 0.00. payment_date: type: string format: date-time description: Data da baixa realizada ou do vencimento previsto, convertida em Carbon e serializada como data e hora ISO 8601 em UTC; não é uma string simples AAAA-MM-DD. payment_id: type: string format: uuid description: UUID do pagamento na linha realizada; null na linha prevista, que não representa uma baixa. nullable: true kind: type: string enum: - realized - expected description: 'Natureza da linha: realized para baixa realizada ou expected para saldo restante com vencimento dentro do período. Não inclui estimativas de recorrências não materializadas.' due_date: type: string format: date nullable: true description: Vencimento em AAAA-MM-DD na linha prevista; null na linha realizada. Mantido como string simples do relatório, sem conversão em Carbon. required: - id - name - generate_for_entity_name - type - value_paid - payment_date - payment_id - kind - due_date description: Movimentos realizados do caixa canônico e, somente com expectation=true, saldos restantes previstos na janela inclusiva. Lista ordenada por data, tipo, conta e pagamento; uma conta parcial pode ter baixas realizadas e uma linha restante, sem repetir seu valor original. sum_outbound_account: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total assinado das saídas realizadas na janela, em reais, como string decimal com duas casas; não inclui saldos restantes previstos. Zero é 0.00 em ambos os modos. sum_inbound_account: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total assinado das entradas realizadas na janela, em reais, como string decimal com duas casas; não inclui saldos restantes previstos. Zero é 0.00 em ambos os modos. results: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: 'Resultado realizado do período: soma exata de sum_inbound_account e sum_outbound_account, sem abertura nem previsão, como string decimal assinada com duas casas.' start_date: type: string format: date-time description: Início efetivo do período, convertido em Carbon e serializado como data e hora ISO 8601 em UTC. Quando omitido, usa a data do primeiro movimento realizado ou, sem movimentos, o início do dia final resolvido. end_date: type: string format: date-time description: Fim efetivo do período no final do dia informado ou do dia atual quando omitido; Carbon serializado como data e hora ISO 8601 em UTC. sum_expected_inbound_account: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total assinado dos saldos restantes de entradas com vencimento dentro da janela inclusiva, como string decimal com duas casas. É 0.00 quando expectation é false. sum_expected_outbound_account: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total assinado dos saldos restantes de saídas com vencimento dentro da janela inclusiva, como string decimal com duas casas. É 0.00 quando expectation é false. expected_results: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: 'Resultado previsto restante: soma exata de sum_expected_inbound_account e sum_expected_outbound_account, como string decimal assinada com duas casas; 0.00 quando expectation é false.' projected_results: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: 'Resultado projetado do período: soma exata de results e expected_results, como string decimal assinada com duas casas. Igual a results quando expectation é false; não inclui saldo de abertura.' expectation: type: boolean description: Indica se a consulta inclui saldos restantes com vencimento no período. O realizado usa o mesmo caixa canônico em ambos os modos; false mantém os campos previstos em 0.00 e não acrescenta linhas expected. required: - balance - sum_outbound_account - sum_inbound_account - results - start_date - end_date - sum_expected_inbound_account - sum_expected_outbound_account - expected_results - projected_results - expectation description: 'Saldo por movimentos de caixa: realizado canônico em ambos os modos e previsão de saldos restantes somente quando solicitada. Dinheiro é sempre string decimal assinada com duas casas, calculada com bcmath. Não inclui estimativas de recorrências não geradas nem saldo de abertura.' example: balance: - id: 20000000-0000-4000-8000-000000000020 name: Despesa Exemplo generate_for_entity_name: Fornecedor Exemplo type: outbound_account value_paid: '-50.25' payment_date: '2026-10-01T03:00:00.000000Z' payment_id: 20000000-0000-4000-8000-000000000021 kind: realized due_date: null - id: 20000000-0000-4000-8000-000000000022 name: Receita Exemplo generate_for_entity_name: Cliente Exemplo type: inbound_account value_paid: '150.25' payment_date: '2026-10-02T03:00:00.000000Z' payment_id: 20000000-0000-4000-8000-000000000023 kind: realized due_date: null sum_outbound_account: '-50.25' sum_inbound_account: '150.25' results: '100.00' start_date: '2026-10-01T03:00:00.000000Z' end_date: '2026-10-30T02:59:59.999999Z' sum_expected_inbound_account: '0.00' sum_expected_outbound_account: '0.00' expected_results: '0.00' projected_results: '100.00' expectation: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /balances/export: get: tags: - Balanços summary: Exportar — balanços operationId: business_get_balances_export description: 'Permissões exigidas na chave: (accounting_reports.view). O realizado segue o regime de caixa dos relatórios: conta o pagamento da fatura e não soma novamente as compras do cartão. Com expectation=1, acrescenta somente saldos restantes atuais de contas já geradas com vencimento na janela, incluindo contas parcialmente pagas. Não reconstrói o saldo em aberto de uma data histórica nem estima recorrências ainda não geradas. Totais realizados, previstos e projetados são separados, em strings decimais com duas casas; saídas são negativas. O resultado projetado é o realizado mais o restante, sem saldo de abertura. O limite é 50.000 movimentos; reduza o período se receber 422. Retorna diretamente arquivo CSV, Excel (.xlsx pela opção legada type=xml) ou PDF, sem envelope JSON. Semanas têm sete dias e a última é limitada ao fim solicitado. O saldo inicial é o resultado realizado da janela equivalente no mês anterior; não representa o saldo bancário acumulado.' parameters: - description: 'Formato do arquivo: csv para CSV, pdf para PDF, xml (opção legada) para planilha Excel (.xlsx). O valor xml não produz XML textual.' name: type in: query required: true schema: type: string enum: - csv - xml - pdf example: csv x-docs-example-note: Formato CSV escolhido explicitamente para a exportação deste exemplo; não é uma regra de negócio padrão inferida do enum. - description: Data inicial inclusiva, AAAA-MM-DD. Obrigatória para exportação. name: start_date in: query required: true schema: type: string format: date example: '2026-10-01' x-docs-example-note: Data ilustrativa da janela inclusiva de outubro de 2026. O exemplo mantém somente o realizado; para consultar o restante atual das contas, envie expectation=1 e ambas as datas. - description: Data final inclusiva, AAAA-MM-DD, igual ou posterior ao início. Obrigatória para exportação. name: end_date in: query required: true schema: type: string format: date example: '2026-10-31' x-docs-example-note: Data ilustrativa da janela inclusiva de outubro de 2026. O exemplo mantém somente o realizado; para consultar o restante atual das contas, envie expectation=1 e ambas as datas. - name: expectation in: query required: false schema: type: integer enum: - 0 - 1 default: 0 description: Inclui os saldos restantes na previsão. Envie 1 para incluir e 0 para somente realizado; texto true/false retorna 422. Quando 1, informe ambas as datas. example: 0 x-docs-example-note: Consulta do realizado. Para acrescentar a previsão atual de contas já geradas, use 1 e informe ambas as datas. responses: '200': description: Exportar — balanços. content: text/csv: schema: type: string format: binary description: Arquivo CSV selecionado por type=csv, com extensão .csv. application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: string format: binary description: Arquivo Excel XLSX selecionado pelo valor legado type=xml; extensão .xlsx, conteúdo produzido por Xlsx. Não é XML avulso. application/pdf: schema: type: string format: binary description: Arquivo PDF selecionado por type=pdf, com extensão .pdf. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /banks: get: tags: - Bancos summary: Listar — bancos operationId: business_get_banks description: 'Permissões exigidas na chave: (cashboxes.view ou cashboxes.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — bancos. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractBank' example: - id: 20000000-0000-4000-8000-000000000012 compe_code: '999' ispb: '00000000' name: Banco Exemplo logo_url: https://empresa-exemplo.invalid/images/banks/banco-exemplo.svg '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /benefits: get: tags: - Benefícios summary: Listar — benefícios operationId: business_get_benefits description: 'Permissões exigidas na chave: (employees.view ou interns.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — benefícios. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractBenefitSuggestion' example: - id: 10000000-0000-4000-8000-000000000005 name: Auxílio alimentação deleted_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /billing-copy-recipients: get: tags: - Cópias de cobranças summary: Listar — cópias de cobranças operationId: business_get_billing_copy_recipients description: 'Permissões exigidas na chave: (workflows.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — cópias de cobranças. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractBillingCopyRecipient' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 email: financeiro@example.invalid type: cc type_label: CC active: true status: active created_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/billing-copy-recipients?page=1 last: https://empresa-exemplo.invalid/public-api/v1/billing-copy-recipients?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/billing-copy-recipients?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/billing-copy-recipients per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. post: tags: - Cópias de cobranças summary: Criar — cópias de cobranças operationId: business_post_billing_copy_recipients description: 'Permissões exigidas na chave: (workflows.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: email: copia@example.com type: cc schema: type: object properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 255 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string required: - email - type responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractBillingCopyRecipient' example: id: 70000000-0000-4000-8000-000000000001 email: financeiro@example.invalid type: cc type_label: CC active: true status: active created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /billing-copy-recipients/{billingCopyRecipient}: put: tags: - Cópias de cobranças summary: Atualizar — cópias de cobranças operationId: business_put_billing_copy_recipients_billingCopyRecipient description: 'Permissões exigidas na chave: (workflows.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: billingCopyRecipient in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: email: copia@example.com type: cc schema: type: object properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 255 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string required: - email - type responses: '200': description: Atualizar — cópias de cobranças. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractBillingCopyRecipient' example: id: 70000000-0000-4000-8000-000000000001 email: financeiro@example.invalid type: cc type_label: CC active: true status: active created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Cópias de cobranças summary: Excluir — cópias de cobranças operationId: business_delete_billing_copy_recipients_billingCopyRecipient description: 'Permissões exigidas na chave: (workflows.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: billingCopyRecipient in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — cópias de cobranças. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /billing-copy-recipients/{billingCopyRecipient}/status: patch: tags: - Cópias de cobranças summary: Alterar situação — cópias de cobranças operationId: business_patch_billing_copy_recipients_billingCopyRecipient_status description: 'Permissões exigidas na chave: (workflows.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: billingCopyRecipient in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: active: false schema: type: object properties: active: description: Indica se o registro está ativo para uso pela empresa. type: boolean required: - active responses: '200': description: Alterar situação — cópias de cobranças. A resposta informa o resultado da alteração solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractBillingCopyRecipient' example: id: 70000000-0000-4000-8000-000000000001 email: financeiro@example.invalid type: cc type_label: CC active: false status: inactive created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /categories/nfse-correlations: get: tags: - Categorias summary: Consultar correlação de tributação — categorias operationId: business_get_categories_nfse_correlacao description: 'Permissões exigidas na chave: (categories.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do código de tributação utilizado para consultar a correlação fiscal. name: tax_code_id in: query required: true schema: type: string format: uuid example: 10000000-0000-4000-8000-000000000301 x-docs-example-note: 'UUID FICTÍCIO. Substitua pelo ID de um código de serviço do catálogo usado pelo próprio tenant: código nacional em NFSe nacional ou TaxCode no sistema municipal, conforme NfseCorrelacaoRequest::tabelaDoCodigo. Não use um UUID de outro catálogo nem interprete esta consulta como escolha de enquadramento.' - description: Código de tributação nacional usado para localizar a correlação fiscal. name: ctrib_nac in: query required: false schema: type: string nullable: true description: Código de tributação nacional usado para localizar a correlação fiscal. - description: Código de tributação municipal usado para localizar a correlação fiscal. name: ctrib_mun in: query required: false schema: type: string nullable: true description: Código de tributação municipal usado para localizar a correlação fiscal. responses: '200': description: Consultar correlação de tributação — categorias. content: application/json: schema: $ref: '#/components/schemas/PublicContractMunicipalCorrelation' example: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /categories/{category}: get: tags: - Categorias summary: Consultar — categorias operationId: business_get_categories_category description: 'Permissões exigidas na chave: (categories.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — categorias. content: application/json: schema: $ref: '#/components/schemas/PublicContractCategory' example: id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Categorias summary: Atualizar — categorias operationId: business_put_categories_category description: 'Permissões exigidas na chave: (categories.view) e (categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo type: account_payable schema: type: object properties: fiscal_config: type: object nullable: true description: 'Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia nota > recorrência > categoria > empresa). Gravação por mescla nas chaves da tributação do ISSQN e do comércio exterior: chave ausente preserva e null limpa.' properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `account_payable`, `account_receivable`.' type: string enum: - account_payable - account_receivable taxes: description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. type: array items: {} nullable: true nbs: description: String opcional e nullable; não é UUID obrigatório neste contexto. Número JSON é 422; string inexistente é recusa de domínio 400. type: string nullable: true default: description: Indica que este registro é a opção padrão no contexto do cadastro. type: boolean nfse_enabled: description: Indica se a categoria está habilitada para uso na emissão de NFS-e. type: boolean ctrib_nac: type: string nullable: true description: Código de tributação nacional usado para localizar a correlação fiscal. ctrib_mun: type: string nullable: true description: Código de tributação municipal usado para localizar a correlação fiscal. required: - name - type responses: '200': description: Atualizar — categorias. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCategory' example: id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_payable active: true default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /categories/{category}/status-transitions: post: tags: - Categorias summary: Alternar situação — categorias operationId: business_put_categories_category_toggle_status description: 'Permissões exigidas na chave: (categories.view) e (categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Alternar situação — categorias. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCategory' example: id: 10000000-0000-4000-8000-000000000001 name: Serviços de apoio administrativo taxes: [] nbs: null fiscal_config: null nfse_correlacao: ctrib_nac: null ctrib_mun: null descricao: null origem: indefinida pendente: false opcoes: [] motivo: null type: account_receivable active: false default: false nfse_enabled: false created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /ceps/{cep}: get: tags: - Localidades e contatos summary: Consultar endereço pelo CEP — localidades e contatos operationId: business_get_ceps_cep description: 'Permissões exigidas na chave: (clients.view ou clients.create ou clients.update ou providers.view ou providers.create ou providers.update ou subsidiaries.view ou subsidiaries.create ou subsidiaries.update ou fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cep in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar endereço pelo CEP — localidades e contatos. content: application/json: schema: type: object properties: logradouro: type: string description: Nome da via do endereço. bairro: type: string description: Bairro informado no endereço. cidade: type: string format: uuid description: Município informado no endereço ou na prestação do serviço. estado: type: string format: uuid description: Estado da federação informado para o endereço ou serviço. cep: type: string description: Código postal do endereço cadastrado. required: - logradouro - bairro - cidade - estado - cep example: logradouro: Rua Exemplo bairro: Bairro Modelo cidade: 10000000-0000-4000-8000-000000000015 estado: 10000000-0000-4000-8000-000000000016 cep: 30000-000 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cnpj/capabilities: get: tags: - Consulta de CNPJ summary: Consultar capabilities — consulta de cnpj operationId: business_get_cnpj_capabilities description: 'Permissões exigidas na chave: (clients.create ou providers.create ou clients.update ou providers.update ou accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar capabilities — consulta de cnpj. content: application/json: schema: type: object properties: data: type: object properties: mode: type: string description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. required: - mode description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: mode: basic '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cnpj/lookups: post: tags: - Consulta de CNPJ summary: Consultar lookup — consulta de cnpj operationId: business_post_cnpj_lookup description: 'Permissões exigidas na chave: (clients.create ou providers.create ou clients.update ou providers.update ou accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: cnpj: '12345678000195' entity_type: client schema: type: object properties: cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string maxLength: 20 entity_type: description: 'Tipo de cadastro ao qual o recurso está vinculado. Opções: `client`, `provider`.' type: string enum: - client - provider entity_id: description: Identificador do cadastro selecionado para vincular ou executar a operação. Identificação no formato UUID. type: string format: uuid nullable: true required: - cnpj - entity_type responses: '200': description: Consultar lookup — consulta de cnpj. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCnpjSuggestion' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: cnpj: 00000000000191 cpf_cnpj: 00000000000191 type: PJ name: Empresa Exemplo Ltda. fantasy_name: Empresa Exemplo email: contato@example.com phones: - '3100000000' address: zipcode: '00000000' address: Rua Exemplo number: '100' complement: Sala Exemplo neighborhood: Centro city: Cidade Exemplo uf: MG state_id: null city_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/bank-slip: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/configuration/bank-slip\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"logo=@${ARQUIVO_LOGO}\"" tags: - Configurações summary: Atualizar configuração de boleto — configurações operationId: business_post_configuration_bank_slip description: 'Permissões exigidas na chave: (bank_slip.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: false content: multipart/form-data: schema: type: object properties: logo: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' responses: '200': description: Atualizar configuração de boleto — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Operação realizada com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' get: tags: - Configurações summary: Consultar configuração de boleto — configurações operationId: business_get_configuration_bank_slip description: 'Permissões exigidas na chave: (bank_slip.view ou bank_slip.emit ou bank_slip.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração de boleto — configurações. content: application/json: schema: type: object properties: logo: type: string description: 'Limite do arquivo em KiB: max 102400.' cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. merge: type: integer description: Agrupamento do link. true junta ao link as contas em aberto do mesmo cliente e vencimento. type_penalty: type: string description: Tipo de multa — `"fix"` (valor fixo) ou percentual. penalty: oneOf: - type: string - type: number description: Multa aplicada à obrigação financeira; a modalidade percentual ou fixa depende da operação. type_tax: type: string description: Tipo de juros — `"fix"` (valor fixo) ou percentual. tax: oneOf: - type: string - type: number description: Valor (R$, com type_tax fix) ou percentual de juros ao mês, de 0 a 30% ao mês. required: - logo - cashbox_id - merge - type_penalty - penalty - type_tax - tax example: logo: https://empresa-exemplo.invalid/tenant/bankslip-logo cashbox_id: 30000000-0000-4000-8000-000000000001 merge: 1 type_penalty: percent penalty: 0 type_tax: percent tax: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/bank-slip/{systemConfig}: delete: tags: - Configurações summary: Excluir logotipo do boleto — configurações operationId: business_delete_configuration_bank_slip_systemConfig description: 'Permissões exigidas na chave: (bank_slip.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: systemConfig in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Excluir logotipo do boleto — configurações. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/fiscal-rps: get: tags: - Configurações summary: Consultar configuração fiscal — configurações operationId: business_get_configuration_fiscal_rps description: 'Permissões exigidas na chave: (fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração fiscal — configurações. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractFiscalConfiguration' - $ref: '#/components/schemas/PublicContractUnconfiguredFiscalConfiguration' example: issuer: im: '123456' cnpj: 00000000000191 cmun: '3106200' razao: Empresa Exemplo phone: null mail: contato@example.invalid tpam: 2 certificate: null tributation: none operationNature: '1' reg_ap_trib_sn: null simple: 'no' cultural: 'no' cst: '0' use_issqn: false send_im: false issqn_tributation: none issqn: '0' operation_nature: '' trib_type: none trib_sn: null trib_estadual: null trib_municipal: null trib_federal: null logo: null nfse_system: national serie: '1000' ctribmun: null paliq_pis: null paliq_cofins: null regime_tributario: tradicional ibscbs_cst: null ibscbs_cclasstrib: null ibscbs_cindop: null ibscbs_ccredpres: null certificate_holder: null certificate_cnpj: null certificate_valid_from: null certificate_valid_to: null retentions: null pis: null cofins: null ir: null csll: null inss: null others: null issqn_immunity_type: null issqn_tributation_confirmada_em: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/configuration/fiscal-rps\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"issqn=${CAMPO_ISSQN}\" \\\n --form-string \"use_issqn=${CAMPO_USE_ISSQN}\" \\\n --form-string \"\ send_im=${CAMPO_SEND_IM}\" \\\n --form-string \"retentions=${CAMPO_RETENTIONS}\" \\\n --form-string\ \ \"simple=${CAMPO_SIMPLE}\" \\\n --form \"certificate=@${ARQUIVO_CERTIFICATE}\"" tags: - Configurações summary: Atualizar configuração fiscal — configurações operationId: business_post_configuration_fiscal_rps description: 'Permissões exigidas na chave: (fiscal_rps.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: issqn_immunity_type: description: Tipo de imunidade da empresa (tpImunidade), de 1 a 5, com o texto do Anexo I. Só com Tributação ISSQN imunidade; com outra, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true confirmar_issqn_tributation: description: Confirma a Tributação ISSQN gravada antes de 31/10/2026. Sem confirmação, esse valor não muda a nota (conta como não definido). Escolher um valor novo também confirma. Use 0 ou 1. type: boolean certificate: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' password: description: Senha do usuário para autenticação. Trate como segredo e não registre em logs. type: string nullable: true maxLength: 100 issqn: type: number minimum: 0 maximum: 5 description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. send_im: type: boolean description: Controla o envio da inscrição municipal cadastrada do prestador na NFS-e. retentions: type: boolean description: Indica se há retenções tributárias a considerar na emissão ou no lançamento. simple: type: string description: Código obrigatório do enum NFSeSimplesNacional; não é booleano. enum: - 'no' - mei - me_epp required: - issqn - use_issqn - send_im - retentions - simple example: issqn: 2 use_issqn: true send_im: false retentions: false simple: 'no' responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '201': description: Atualizar configuração fiscal — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractFiscalConfiguration' example: issuer: im: '123456' cnpj: 00000000000191 cmun: '3106200' razao: Empresa Exemplo phone: null mail: contato@example.invalid tpam: 2 certificate: null tributation: none operationNature: '1' reg_ap_trib_sn: null simple: 'no' cultural: 'no' cst: '0' use_issqn: false send_im: false issqn_tributation: none issqn: '0' operation_nature: '' trib_type: none trib_sn: null trib_estadual: null trib_municipal: null trib_federal: null logo: null nfse_system: national serie: '1000' ctribmun: null paliq_pis: null paliq_cofins: null regime_tributario: tradicional ibscbs_cst: null ibscbs_cclasstrib: null ibscbs_cindop: null ibscbs_ccredpres: null certificate_holder: null certificate_cnpj: null certificate_valid_from: null certificate_valid_to: null retentions: null pis: null cofins: null ir: null csll: null inss: null others: null issqn_immunity_type: null issqn_tributation_confirmada_em: null /configuration/fiscal-rps-issqn: get: tags: - Configurações summary: Consultar configuração de ISSQN — configurações operationId: business_get_configuration_fiscal_rps_issqn description: 'Permissões exigidas na chave: (fiscal_rps.view ou fiscal_rps.emit ou categories.view ou categories.create ou categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração de ISSQN — configurações. content: application/json: schema: type: object properties: use_issqn: oneOf: - type: boolean - type: string nullable: true description: Indica se o cálculo fiscal deve considerar o ISSQN informado. issqn: oneOf: - type: number - type: string nullable: true description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. retentions: oneOf: - type: boolean - type: integer - type: string description: Configuração de retenções recuperada conforme o tipo persistido; instalações legadas podem devolver booleano, inteiro ou texto. pis: type: number description: Retenção de PIS aplicada ao serviço; consulte o tipo numérico e a configuração fiscal da emissão. cofins: type: number description: Retenção de COFINS aplicada ao serviço; consulte a configuração fiscal da emissão. ir: type: number description: Retenção de Imposto de Renda aplicada ao serviço. csll: type: number description: Retenção de CSLL aplicada ao serviço. inss: type: number description: Retenção previdenciária de INSS aplicada ao serviço. others: type: number description: Outras retenções tributárias aplicadas ao serviço. cst: type: string description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. sugestoes: type: object additionalProperties: type: object properties: valor: type: number description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros configurado: type: boolean description: Indica se a configuração necessária está disponível para esta operação. fundamento: type: string description: Justificativa normativa ou operacional para a sugestão. required: - valor - configurado - fundamento x-map-reason: ConfigurationController::sugestoesDeAliquota indexa um objeto com valor/configurado/fundamento por cada valor do enum AliquotaDeRetencao. description: Sugestões calculadas a partir dos dados disponíveis, sujeitas à escolha do usuário. required: - use_issqn - issqn - retentions - pis - cofins - ir - csll - inss - others - cst - sugestoes example: use_issqn: true issqn: 2.0 retentions: 0 cst: '0' ir: 1.5 sugestoes: ir: valor: 1.5 configurado: false fundamento: 'IRRF sobre a remuneração de serviços profissionais: 1,5% (RIR/2018, Decreto 9.580/2018). Não incide sobre todo serviço nem sobre todo tomador: confirme com o seu contador o que se aplica à sua atividade.' pis: valor: 0.65 configurado: false fundamento: 'PIS/Pasep: 0,65%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' cofins: valor: 3.0 configurado: false fundamento: 'COFINS: 3,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' csll: valor: 1.0 configurado: false fundamento: 'CSLL: 1,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' inss: valor: 0.0 configurado: false fundamento: 'Retenção previdenciária: não há alíquota geral aplicável a todo serviço, e por isso a sugestão é zero. Quando a cessão de mão de obra ou a empreitada a exigirem, informe a alíquota do seu caso.' others: valor: 0.0 configurado: false fundamento: 'Outras retenções: campo livre, sem alíquota legal geral. A sugestão é zero justamente para que nada seja retido sem alguém ter decidido.' pis: 0.65 cofins: 3.0 csll: 1.0 inss: 0.0 others: 0.0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/fiscal-rps/certificate: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/configuration/fiscal-rps/certificate\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"certificate=@${ARQUIVO_CERTIFICATE}\"" tags: - Configurações summary: Atualizar certificado A1 — configurações operationId: business_post_configuration_fiscal_rps_certificado description: 'Permissões exigidas na chave: (fiscal_rps.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: certificate: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' password: description: Senha do usuário para autenticação. Trate como segredo e não registre em logs. type: string nullable: true maxLength: 100 required: - certificate responses: '200': description: Atualizar certificado A1 — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractFiscalConfiguration' example: issuer: im: '123456' cnpj: 00000000000191 cmun: '3106200' razao: Empresa Exemplo phone: null mail: contato@example.invalid tpam: 2 certificate: certificados/exemplo.pfx tributation: none operationNature: '1' reg_ap_trib_sn: null simple: 'no' cultural: 'no' cst: '0' use_issqn: false send_im: false issqn_tributation: none issqn: '0' operation_nature: '' trib_type: none trib_sn: null trib_estadual: null trib_municipal: null trib_federal: null logo: null nfse_system: national serie: '1000' ctribmun: null paliq_pis: null paliq_cofins: null regime_tributario: tradicional ibscbs_cst: null ibscbs_cclasstrib: null ibscbs_cindop: null ibscbs_ccredpres: null certificate_holder: Empresa Exemplo certificate_cnpj: 00000000000191 certificate_valid_from: '2026-10-01T00:00:00+00:00' certificate_valid_to: '2027-10-01T00:00:00+00:00' retentions: null pis: null cofins: null ir: null csll: null inss: null others: null issqn_immunity_type: null issqn_tributation_confirmada_em: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/fiscal-rps/suggested-classification: get: tags: - Configurações summary: Consultar classificação fiscal sugerida — configurações operationId: business_get_configuration_fiscal_rps_classificacao_sugerida description: 'Permissões exigidas na chave: (fiscal_rps.emit). A sugestão segue o Anexo VIII local. Classificações por local do imóvel, como indop 020201, independem de onerosa/exterior. Não onerosa com adquirente no exterior pode não ter sugestão; não extrapole combinações ausentes.' parameters: - description: Identificador da Nomenclatura Brasileira de Serviços no catálogo fiscal; preserve o tipo declarado. name: nbs in: query required: true schema: type: string example: '115021000' x-docs-example-note: Código NBS ilustrativo presente no Anexo VIII local, correspondente à grafia 1.1502.10.00. Use o código do serviço pertinente no seu catálogo, não o UUID do cadastro. A consulta é uma sugestão; o exemplo não afirma classificação fiscal, resposta única nem preenche as perguntas opcionais onerosa/exterior. - name: onerosa in: query required: false schema: type: integer enum: - 0 - 1 description: 'Booleano na query: serialize como 0 ou 1. Texto true/false não passa na validação boolean.' - name: exterior in: query required: false schema: type: integer enum: - 0 - 1 description: 'Booleano na query: serialize como 0 ou 1. Texto true/false não passa na validação boolean.' responses: '200': description: Consultar classificação fiscal sugerida — configurações. content: application/json: schema: type: object properties: papel: type: string description: Papel do documento na comprovação, como nota ou comprovante. indop: type: string nullable: true description: Indicador de operação do IBS/CBS ou candidatos compatíveis na correlação. indop_candidatos: type: array items: type: string description: Indicador de operação do IBS/CBS ou candidatos compatíveis na correlação. cclasstrib: type: string nullable: true description: Código de classificação tributária do IBS/CBS resolvido para o serviço. cclasstrib_candidatos: type: array items: type: string description: Classificações tributárias do IBS/CBS compatíveis com a seleção. locais_de_incidencia: type: array items: type: string description: Locais de incidência compatíveis com a classificação fiscal. required: - papel - indop - indop_candidatos - cclasstrib - cclasstrib_candidatos - locais_de_incidencia example: papel: 'norteador (NT 004, secao 1.2): sugestao derivada, a configuracao explicita vence sempre' indop: '100301' indop_candidatos: - '100301' cclasstrib: '000001' cclasstrib_candidatos: - '000001' locais_de_incidencia: - Domicílio principal do adquirente '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/fiscal-rps/guidance: get: tags: - Configurações summary: Consultar orientação do emissor — configurações operationId: business_get_configuration_fiscal_rps_orientacao description: 'Permissões exigidas na chave: (fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar orientação do emissor — configurações. content: application/json: schema: type: object properties: leiaute: type: object properties: versao: type: string description: Versão da definição fiscal ou da política apresentada. publicado: type: string description: Indica se o catálogo ou definição já está publicado para uso. origem: type: string description: Fonte da configuração ou do valor resolvido. required: - versao - publicado - origem description: Versão do leiaute fiscal usada na resolução. campos: type: object additionalProperties: $ref: '#/components/schemas/PublicContractFiscalGuidanceField' x-map-reason: ConfigurationController::getOrientacaoFiscalRps indexa as orientações por Orientacao::$chave (caminho do campo de configuração); o mapa oficial de campos muda independentemente das rotas dos endpoints. description: Resultados ou valores organizados por campo do documento ou configuração. required: - leiaute - campos example: leiaute: versao: '1.01' publicado: '2026-02-09' origem: ANEXO_I-SEFIN_ADN-DPS_NFSe-SNNFSe-v1.01-20260209.xlsx campos: issuer.cnpj: campo: issuer.cnpj sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: CNPJ caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/CNPJ elemento: CE tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '14' descricao: Número da inscrição federal (CNPJ) do prestador do serviço. regras: - codigo: E0080 regra: CNPJ informado na DPS é inválido (verificar DV). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: CNPJ do prestador informado na DPS é inválido. nivel: '1' - codigo: E0082 regra: CNPJ do prestador não existe no cadastro CNPJ na data de competência informada na DPS. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: CNPJ do emitente prestador não encontrado no cadastro CNPJ na data de competência. nivel: '2' - codigo: E0084 regra: 'Para este CNPJ, se o emitente for o prestador de serviço (tpEmit = 1), na data de competência informada na DPS, o município emissor deve corresponder: 1) ao município do endereço registrado no cadastro CNPJ, se a situação padrão para emissão dos contribuintes, com endereço no município, do cadastro CNPJ da RFB for habilitada ou; 2) ao município do endereço registrado no cadastro nacional complementar NFS-e. (cLocEmi + CNPJ + IM informados na DPS para o prestador devem existir no CNC NFS-e); Exceto quando o emitente da DPS for MEI (opSimpNac = 2) na data de competência da emissão da NFS-e.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: CNPJ do emitente prestador não possui estabelecimento ou domicílio em um município correspondente ao município emissor, na data de competência informada na DPS, conforme cadastros CNPJ e CNC NFS-e. nivel: '2' issuer.im: campo: issuer.im sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: IM caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/IM elemento: E tipo: C ocorrencia: 0-1 opcional_no_esquema: true tamanho: '15' descricao: Número do indicador municipal do prestador do serviço. regras: - codigo: E0116 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e, se houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, então a IM deve ser informada na DPS. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço e o codigo do município emissor (cLocEmi), ambos informados na DPS, para identificar as ocorrências no CNC NFS-e. Se houver pelo menos uma ocorrência, então o emitente da DPS deve informar o IM correspondente registrado no CNC NFS-e, que identifique unicamente o registro complementar. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A IM deve ser informada para o emitente prestador do serviço na DPS, conforme informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0119 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e se houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, verificar se o IM informado está autorizado a emitir NFS-e na data de processamento desta DPS,. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi) e o IM, informados na DPS, para identificar o registro complementar no CNC NFS-e. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: IM do emitente prestador não está autorizado a emitir NFS-e, conforme informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0120 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e, se não houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, então o IM não deve ser informado na DPS. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi), informados na DPS, para identificar o registro complementar no CNC NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: IM do prestador não deve ser informado, pois não existem informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0124 regra: Para o emitente prestador de serviço (tpEmit = 1), verificar se o IM informado nesta DPS está Inativo (cStat) no CNC do município emissor na data de competência informada. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi) e o IM, informados na DPS, para identificar o registro complementar no CNC NFS-e. Se todos os registros complementares estiverem inativos, utilizar as informações dos cadastros RFB (CNPJ ou CPF), conforme identificador federal utilizado para identificar o emitente da DPS. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O IM informado está inativo no CNC NFS-e do município emissor para a data de competência informada na DPS. nivel: '2' issuer.cmun: campo: issuer.cmun sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/ campo: cLocEmi caminho_completo: NFSe/infNFSe/DPS/infDPS/cLocEmi elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '7' descricao: Código de 7 dígitos da localidade emissora da NFS-e. regras: - codigo: E0037 regra: O código do município emissor informado na DPS deve existir no cadastro de convênio municipal do sistema nacional. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código do município emissor informado na DPS é inexistente no cadastro de convênio municipal do sistema nacional. nivel: '1' - codigo: E0038 regra: A situação do convênio do município emissor informado na DPS deve ser "ATIVO" no cadastro de convênio municipal do sistema nacional. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A situação do convênio do município emissor informado na DPS deve ser "ATIVO" no cadastro de convênio municipal do sistema nacional. nivel: '1' - codigo: E0039 regra: O município emissor informado na DPS deve estar parametrizado para utilizar os emissores públicos nacionais, conforme parametrização do município no Sistema Nacional NFS-e. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O município emissor informado na DPS deve estar parametrizado para utilizar os emissores públicos nacionais, conforme parametrização do município no Sistema Nacional NFS-e. nivel: '1' - codigo: E0041 regra: Se tpEmit for igual a 1 (prestador) e a opção pelo simples nacional for igual a 2 (MEI), então o município emissor deve corresponder ao município do endereço do emitente no cadastro CNPJ. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O município emissor não corresponde ao município do emitente MEI no CNPJ. nivel: '1' - codigo: E1304 regra: Verificar se o código do município emissor da NFS-e existe, conforme TAB.MUN_IBGE do ANEXO_A-MUNICIPIO_IBGE-PAISES_ISO2-SNNFSe, e corresponde ao mesmo município que está compartilhando a NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código do município emissor da NFS-e não existe conforme tabela do IBGE ou difere do código do municipio que está compartilhando o documento com o ADN do Sistema Nacional NFS-e. nivel: '1' - codigo: E1272 regra: O código do município informado deve existir e estar ativo no cadastro de convênio municipal na data de processamento do compartilhamento com o ADN. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código do município informado não existe ou não está ativo no convênio municipal na data de processamento de compartilhamento com o ADN. nivel: '1' issuer.razao: campo: issuer.razao sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: xNome caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/xNome elemento: E tipo: C ocorrencia: 0-1 opcional_no_esquema: true tamanho: '150' descricao: Nome / Nome Empresarial do prestador. regras: - codigo: E0121 regra: Se o emitente da DPS for o prestador de serviço (tpEmit for igual a 1), então o nome ou razão social não deve ser informado. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O nome ou razão social do prestador não deve ser informado quando o emitente da DPS for o próprio prestador. nivel: '2' - codigo: E0122 regra: Se o emitente da DPS não for o prestador de serviço (tpEmit for igual a 2 ou 3), então o nome ou razão social deve ser informado. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O nome ou razão social do prestador deve ser informado quando o emitente da DPS não for o próprio prestador. nivel: '2' - codigo: E0123 regra: Se NIF do prestador for preenchido então o campo xNome deve ser preenchido obrigatoriamente. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O preenchimento do nome empresarial é obrigatório quando o prestador for identificado com NIF. nivel: '1' issuer.phone: campo: issuer.phone sem_correspondencia: false motivo: null rejeita_se_errado: false leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: fone caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/fone elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: 6-20 descricao: Número do telefone do prestador. (Preencher com o Código DDD + número do telefone. Nas operações com exterior é permitido informar o código do país + código da localidade + número do telefone) regras: [] issuer.mail: campo: issuer.mail sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: email caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/email elemento: E tipo: C ocorrencia: 0-1 opcional_no_esquema: true tamanho: 1-80 descricao: E-mail do prestador. regras: - codigo: E0148 regra: Email deve ser informado conforme estrutura (conter @, ponto etc.). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Email inválido. nivel: '2' issuer.tpam: campo: issuer.tpam sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/ campo: tpAmb caminho_completo: NFSe/infNFSe/DPS/infDPS/tpAmb elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Identificação do tipo de ambiente no Sistema Nacional NFS-e: 1 - Produção; 2 - Homologação;' regras: - codigo: E0006 regra: Ambiente informado diverge do ambiente de recebimento para o qual o emitente enviou a DPS. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Ambiente informado diverge do ambiente de recebimento para o qual o emitente enviou a DPS. nivel: '1' serie: campo: serie sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/ campo: serie caminho_completo: NFSe/infNFSe/DPS/infDPS/serie elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: 1-5 descricao: Série da DPS. regras: - codigo: E0010 regra: A série informada na DPS não pertence à faixa definida para o tipo de emissor utilizado para a sua emissão. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A série informada na DPS não pertence à faixa definida para o tipo de emissor utilizado para a sua emissão. nivel: '1' - codigo: E0014 regra: Conjunto de Série, Número, Código do Município Emissor e CNPJ/CPF informado nesta DPS já existe em uma NFS-e gerada a partir de uma DPS enviada anteriormente. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Conjunto de Série, Número, Código do Município Emissor e CNPJ/CPF informado nesta DPS já existe em uma NFS-e gerada a partir de uma DPS enviada anteriormente. nivel: '1' send_im: campo: send_im sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/ campo: IM caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/IM elemento: E tipo: C ocorrencia: 0-1 opcional_no_esquema: true tamanho: '15' descricao: Número do indicador municipal do prestador do serviço. regras: - codigo: E0116 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e, se houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, então a IM deve ser informada na DPS. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço e o codigo do município emissor (cLocEmi), ambos informados na DPS, para identificar as ocorrências no CNC NFS-e. Se houver pelo menos uma ocorrência, então o emitente da DPS deve informar o IM correspondente registrado no CNC NFS-e, que identifique unicamente o registro complementar. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A IM deve ser informada para o emitente prestador do serviço na DPS, conforme informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0119 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e se houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, verificar se o IM informado está autorizado a emitir NFS-e na data de processamento desta DPS,. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi) e o IM, informados na DPS, para identificar o registro complementar no CNC NFS-e. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: IM do emitente prestador não está autorizado a emitir NFS-e, conforme informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0120 regra: Se o emitente for o prestador de serviço (tpEmit = 1) e, se não houver registro complementar do contribuinte no CNC do município correspondente ao município emissor da DPS, então o IM não deve ser informado na DPS. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi), informados na DPS, para identificar o registro complementar no CNC NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: IM do prestador não deve ser informado, pois não existem informações complementares registradas no CNC NFS-e do município emissor informado na DPS. nivel: '2' - codigo: E0124 regra: Para o emitente prestador de serviço (tpEmit = 1), verificar se o IM informado nesta DPS está Inativo (cStat) no CNC do município emissor na data de competência informada. Utilizar o identificador federal (CNPJ ou CPF) do prestador de serviço, o codigo do município emissor (cLocEmi) e o IM, informados na DPS, para identificar o registro complementar no CNC NFS-e. Se todos os registros complementares estiverem inativos, utilizar as informações dos cadastros RFB (CNPJ ou CPF), conforme identificador federal utilizado para identificar o emitente da DPS. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O IM informado está inativo no CNC NFS-e do município emissor para a data de competência informada na DPS. nivel: '2' ctribmun: campo: ctribmun sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/cServ/ campo: cTribMun caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/cServ/cTribMun elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: '3' descricao: Código de tributação municipal do ISSQN. regras: - codigo: E0314 regra: Verificar se o código de tributação municipal informado existe e está administrado pelo município de incidência do ISSQN na data de competência informada na DPS. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código de tributação municipal informado não existe ou não está administrado pelo município de incidência do ISSQN na data de competência informada na DPS, nivel: '3' - codigo: E0315 regra: Não é permitido informar 000 para o codigo de tributação municipal na DPS. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar 000 para o codigo de tributação municipal na DPS. nivel: '1' ctribnac: campo: ctribnac sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/cServ/ campo: cTribNac caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/cServ/cTribNac elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '6' descricao: Código de tributação nacional do ISSQN, nos termos da LC 116/2003, Conforme aba MUN.INCID_INFO.SERV. do ANEXO I regras: - codigo: E0310 regra: Verificar se o código de tributação nacional informado existe conforme a lista de serviços nacional do Sistema Nacional NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código de tributação nacional informado não existe conforme a lista de serviços nacional do Sistema Nacional NFS-e. nivel: '1' - codigo: E0312 regra: Verificar se o código de tributação nacional informado está administrado pelo município de incidência do ISSQN na data de competência informada na DPS, conforme a lista de serviços nacional do Sistema Nacional NFS-e. Exceto quando o emitente da DPS for MEI na data de competência da emissão da NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O código de tributação nacional informado não está administrado pelo município de incidência do ISSQN na data de competência informada na DPS, conforme a lista de serviços nacional do Sistema Nacional NFS-e. nivel: '3' simple: campo: simple sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/regTrib/ campo: opSimpNac caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/regTrib/opSimpNac elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Situação perante Simples Nacional: 1 - Não Optante; 2 - Optante - Microempreendedor Individual (MEI); 3 - Optante - Microempresa ou Empresa de Pequeno Porte (ME/EPP);' regras: - codigo: E0160 regra: Opção de situação perante o Simples Nacional do prestador, informada na DPS, não está de acordo com o cadastro Simples Nacional na data de competência informada na DPS. Se CNPJ do prestador não consta no cadastro então opSimpNac é igual a 1; aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: No mês de competência da NFS-e, a opção de situação perante o Simples Nacional, do prestador, informada na DPS não está de acordo com o cadastro Simples Nacional. nivel: '2' - codigo: E0161 regra: Quando o emitente for MEI a NFS-e poderá ser compartilhada pelo município com o ADN somente se a data de competência for igual ou menor que 31/08/2023. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: NFS-e cujo emitente for MEI somente poderá ser compartilhada pelo município com o ADN se a data de competência, informada na NFS-e, for menor ou igual a 31/08/2023. nivel: '2' reg_ap_trib_sn: campo: reg_ap_trib_sn sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/regTrib/ campo: regApTribSN caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/regTrib/regApTribSN elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: '1' descricao: Regime de Apuração Tributária pelo Simples Nacional. Opção para que o contribuinte optante pelo Simples Nacional ME/EPP (opSimpNac = 3) possa indicar, ao emitir o documento fiscal, em qual regime de apuração os tributos federais e municipal estão inseridos, caso tenha ultrapassado algum sublimite ou limite definido para o Simples Nacional. 1 – Regime de apuração dos tributos federais e municipal pelo SN; 2 – Regime de apuração dos tributos federais pelo SN e o ISSQN pela NFS-e conforme respectiva legislação municipal do tributo; 3 – Regime de apuração dos tributos federais e municipal pela NFS-e conforme respectivas legislações federal e municipal de cada tributo; regras: - codigo: E0162 regra: O regime de apuração dos tributos para o optante do Simples Nacional (ME/EPP) não pode ser preenchido quando o prestador de serviço não for optante do simples nacional ou for MEI, ou seja, o campo opSimpNac = 1 ou 2. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido ao não optante do Simples Nacional e o MEI preencherem o campo de indicação do regime de apuração dos tributos apurados. nivel: '2' - codigo: E0166 regra: O regime de apuração dos tributos para o optante do Simples Nacional (ME/EPP) deve ser preenchido obrigatoriamente quando o prestador de serviço for optante do simples nacional (ME/EPP), ou seja, o campo opSimpNac = 3. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É obrigatorio o preenchimento do campo de regime de apuração dos tributos do SN para o optante do Simples Nacional ME/EPP. nivel: '2' tributation: campo: tributation sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/prest/regTrib/ campo: regEspTrib caminho_completo: NFSe/infNFSe/DPS/infDPS/prest/regTrib/regEspTrib elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Tipos de Regimes Especiais de Tributação Municipal: 0 - Nenhum; 1 - Ato Cooperado (Cooperativa); 2 - Estimativa; 3 - Microempresa Municipal; 4 - Notário ou Registrador; 5 - Profissional Autônomo; 6 - Sociedade de Profissionais; 9 - Outros;' regras: - codigo: E0172 regra: Não é permitido informar Regime Especial de Tributação, ou seja, regEspTrib deve ser igual a 0 (Nenhum), quando o serviço prestado for imune, exportação de serviço ou não incidência do ISSQN sobre o serviço prestado, ou seja, o campo referente à tributação do ISSQN (tribISSQN) é igual a "2 - Imunidade, "3 - Exportação de Serviço" ou "4 - Não Incidência", (tribISSQN = 2, 3 ou 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O Regime Especial de Tributação deve ser "Nenhum" (regEspTrib = 0) quando o serviço prestado for diferente de Tributável (tribISSQN = 1), ou seja, tribISSQN = 2, 3 ou 4. nivel: '2' - codigo: E0174 regra: O tipo de regime especial de tributação deve ser "Nenhum", quando o prestador for MEI (opSimpNac = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Quando o prestador da NFS-e é MEI (opSimpNac = 2) o regime especial de tributação deve ser "Nenhum" (regEspTrib = 0). nivel: '2' - codigo: E0175 regra: O tipo de regime especial de tributação deve ser "Nenhum" (regEspTrib = 0) quando o prestador for optante do Simples Nacional ME/EPP (opSimpNac = 3) e o regime de apuração dos tributos federais e municipal ocorrer pelo SN (regApTribSN = 1). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Quando o prestador optante pelo Simples Nacional tiver o regime de apuração dos tributos ocorrendo também pelo Simples Nacional, o regime especial de tributação do ISSQN deve ser "Nenhum" (regEspTrib = 0). nivel: '2' - codigo: E0177 regra: Não é permitido informar Regime Especial de Tributação "Não admitido pelo município", conforme parametrização do município de incidência do ISSQN. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Regime especial de tributação informado na DPS não é admitido na parametrização do município de incidência do ISSQN. nivel: '2' - codigo: E0176 regra: 'É permitido informar Profissional Autônomo na DPS somente se: o prestador de serviço estiver parametrizado como Profissional Autônomo, na data de competência informada na DPS, em pelo menos um dos municípios, emissor ou de incidência do ISSQN (cLocIncid ou cLocEmi) ou se estiver admitido sem verificação (parâmetro "Informado na DPS pelo Emitente - Sem verificação"), conforme parametrização do município de incidência do ISSQN na data de competência informada na DPS.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É permitido informar Profissional Autônomo na DPS somente se o prestador de serviço estiver parametrizado como Profissional Autônomo, na data de competência informada na DPS, em pelo menos um dos municípios, emissor ou de incidência do ISSQN (cLocIncid ou cLocEmi) ou se estiver admitido sem verificação (parâmetro "Informado na DPS pelo Emitente - Sem verificação"), conforme parametrização do município de incidência do ISSQN na data de competência informada na DPS. nivel: '2' - codigo: E0178 regra: É permitido informar Regime Especial de Tributação atribuído para contribuinte específico, conforme parametrização do município de incidência do ISSQN na data de competência informada na DPS. ver descrição na coluna observações de negócio. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Regime especial de tributação não permitido para o prestador do serviço com código de tributação na data de competência, informados na DPS, conforme parametrização do município de incidência do ISSQN. nivel: '2' issqn_tributation: campo: issqn_tributation sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: tribISSQN caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/tribISSQN elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Tributação do ISSQN sobre o serviço prestado: 1 - Operação tributável; 2 - Imunidade; 3 - Exportação de serviço; 4 - Não Incidência;' regras: - codigo: E0529 regra: Não é permitido ao emitente informar se tratar de uma situação de exportação de serviço (tribISSQN = 3) para os cenários 6, 10, 34, 38, 66, 80, conforme a planilha "EXPORTACAO_EMISSÃO_NFS-e". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O sistema considera este cenário para a prestação de serviço informada na DPS uma operação tributável. Não é permitido ao emitente da DPS informar que a prestação de serviço se trata de uma exportação de serviço. nivel: '2' - codigo: E0530 regra: Não é permitido ao emitente informar se tratar de uma situação de operação tributável (tribISSQN = 1) para os cenários 26, 54, 92, 96, 106, 110, conforme a planilha "EXPORTACAO_EMISSÃO_NFS-e". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O sistema considera este cenário para a prestação de serviço informada na DPS uma exportação de serviço. Não é permitido ao emitente da DPS informar que a prestação de serviço se trata de uma operação tributável. nivel: '2' - codigo: E0532 regra: Quando o serviço prestado for 99.01.01 - Serviços sem a incidência de ISSQN e ICMS não há incidência do ISSQN (tribISSQN = 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O campo que informa sobre a tributação do ISSQN deve ser "4 - Não Incidência", quando houver o serviço prestado for 99.01.01 - Serviços sem a incidência de ISSQN e ICMS. nivel: '2' - codigo: E0539 regra: 'Quando qualquer subitem da lista de serviço nacional for incidente, conforme a parametrização do município de incidência do ISSQN, não é permitido informar não incidência do ISSQN, ou seja, os valores permitidos para o campo tribISSQN são: tribISSQN = 1, 2 ou 3.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar não incidência do ISSQN = 4 (Não Incidência) para qualquer subitem da lista nacional de serviço informado na DPS, se o subitem for incidente, conforme a parametrização do município de incidência do ISSQN. nivel: '2' - codigo: E0540 regra: 'Quando qualquer subitem da lista de serviço nacional for não incidente, conforme a parametrização do município de incidência do ISSQN, é obrigatório informar não incidência do ISSQN, ou seja, o valor permitido para o campo tribISSQN é: tribISSQN = 4.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não há incidência do ISSQN (tribISSQN = 4) pois a parametrização do muncípio de incidência do ISSQN indica que o código de serviço prestado, informado na DPS, não é incidente neste município. nivel: '2' issqn: campo: issqn sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: pAliq caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/pAliq elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: 1V2 descricao: Valor da alíquota (%) do serviço prestado relativo ao município sujeito ativo (município de incidência) do ISSQN. regras: - codigo: E0595 regra: Não é permitido informar alíquota superior a 5%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota superior a 5%. nivel: '2' - codigo: E0600 regra: Não é permitido informar alíquota quando o prestador é optante do simples nacional do tipo MEI (opSimpNac = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar a alíquota para prestador de serviço optante do simples nacional do tipo MEI. nivel: '2' - codigo: E0602 regra: Não é permitido informar alíquota quando o serviço prestado for imune, exportação de serviço ou não incidência do ISSQN sobre o serviço prestado, ou seja, o campo referente à tributação do ISSQN (tribISSQN) é igual a "2 - Imunidade, "3 - Exportação de Serviço" ou "4 - Não Incidência", (tribISSQN = 2, 3 ou 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o campo referente à tributação do ISSQN indicar imunidade, exportação ou não incidência. nivel: '2' - codigo: E0604 regra: Não é permitido informar alíquota quando o prestador de serviço tiver um regime especial de tributação, ou seja, o campo que indica o regime especial de tributação é diferente de 0, (regEspTrib = 1, 2, 3, 4, 5, 6 ou 9). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o prestador de serviço possui algum regime especial de tributação. nivel: '2' - codigo: E0612 regra: Não é permitido informar alíquota quando o benefício municipal for informado na DPS for do tipo "Isenção" ou "Alíquota Diferenciada". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o benefício municipal informado na DPS for do tipo "Isenção" ou "Alíquota Diferenciada". nivel: '3' - codigo: E0617 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja não optante do Simples Nacional (opSimpNac = 1) na data de competência informada na DPS, e 2) o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS;' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o prestador de serviço não é optante do simples nacional (opSimpNac = 1) na data de competência informada na DPS, com o município de incidência do ISSQN com situação "ATIVO" no Sistema Nacional NFS-e. nivel: '3' - codigo: E0619 regra: 'É obrigatório o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja não optante do Simples Nacional (opSimpNac = 1) na data de competência informada na DPS, e 2) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 3) nenhum regime especial de tributação para o prestador de serviço (regEspTrib = 0);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É obrigatório informar alíquota quando o prestador de serviço não é optante do simples nacional (opSimpNac = 1) na data de competência informada na DPS, o município de incidência do ISSQN não está com situação "ATIVO" no Sistema Nacional NFS-e e não haja algum regime especial de tributaçao para o prestador. nivel: '3' - codigo: E0621 regra: 'É obrigatorio o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN está "Ativo" na data de competência informada na DPS, 4) não haja benefício municipal ou, se houver, seja diferente de "Isenção" e "Alíquota diferenciada", e 5) haja retenção do ISSQN (tpRetISSQN = 2 ou 3); Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: 'É obrigatório informar alíquota quando há indicação de retenção do ISSQN (tpRetISSQN = 2 ou 3) para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), sem benefício municipal ou, se houver, seja diferente de isenção ou alíquota diferenciada, cujo município de incidência esteja Ativo no Sistema Nacional NFS-e. Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' nivel: '3' - codigo: E0625 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN está "Ativo" na data de competência informada na DPS, 4) não haja benefício municipal ou, se houver, seja diferente de "Isenção" e "Alíquota diferenciada", e 5) não haja retenção do ISSQN (tpRetISSQN = 1);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando não há indicação de retenção do ISSQN (tpRetISSQN = 1) para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), sem benefício municipal ou, se houver, seja diferente de isenção ou alíquota diferenciada, cujo município de incidência esteja Ativo no Sistema Nacional NFS-e. nivel: '3' - codigo: E0628 regra: 'É obrigatório o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 4) haja retenção do ISSQN (tpRetISSQN = 2 ou 3); Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: 'É obrigatório informar alíquota quando o município de incidência do ISSQN não está Ativo no Sistema Nacional NFS-e, para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), com retenção do ISSQN (tpRetISSQN = 2 ou 3). Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' nivel: '3' - codigo: E0631 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 4) não haja retenção do ISSQN (tpRetISSQN = 1);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o município de incidência do ISSQN não está Ativo no Sistema Nacional NFS-e, para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1) sem retenção do ISSQN (tpRetISSQN = 1). nivel: '3' - codigo: E0635 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência informada na DPS, e 2) a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3) e; 3) o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS;' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS, para o prestador de serviço ME/EPP (opSimpNac = 3) com a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3). nivel: '3' - codigo: E0640 regra: 'É obrigatorio o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É obrigatório informar alíquota quando o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN fora do Simples Nacional (regApTribISSQN = 2 ou 3), ou seja, pela alíquota do município para o serviço prestado, cujo município de incidência não esteja "Ativo" no Sistema Nacional NFS-e. nivel: '3' use_issqn: campo: use_issqn sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: pAliq caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/pAliq elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: 1V2 descricao: Valor da alíquota (%) do serviço prestado relativo ao município sujeito ativo (município de incidência) do ISSQN. regras: - codigo: E0595 regra: Não é permitido informar alíquota superior a 5%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota superior a 5%. nivel: '2' - codigo: E0600 regra: Não é permitido informar alíquota quando o prestador é optante do simples nacional do tipo MEI (opSimpNac = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar a alíquota para prestador de serviço optante do simples nacional do tipo MEI. nivel: '2' - codigo: E0602 regra: Não é permitido informar alíquota quando o serviço prestado for imune, exportação de serviço ou não incidência do ISSQN sobre o serviço prestado, ou seja, o campo referente à tributação do ISSQN (tribISSQN) é igual a "2 - Imunidade, "3 - Exportação de Serviço" ou "4 - Não Incidência", (tribISSQN = 2, 3 ou 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o campo referente à tributação do ISSQN indicar imunidade, exportação ou não incidência. nivel: '2' - codigo: E0604 regra: Não é permitido informar alíquota quando o prestador de serviço tiver um regime especial de tributação, ou seja, o campo que indica o regime especial de tributação é diferente de 0, (regEspTrib = 1, 2, 3, 4, 5, 6 ou 9). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o prestador de serviço possui algum regime especial de tributação. nivel: '2' - codigo: E0612 regra: Não é permitido informar alíquota quando o benefício municipal for informado na DPS for do tipo "Isenção" ou "Alíquota Diferenciada". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o benefício municipal informado na DPS for do tipo "Isenção" ou "Alíquota Diferenciada". nivel: '3' - codigo: E0617 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja não optante do Simples Nacional (opSimpNac = 1) na data de competência informada na DPS, e 2) o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS;' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o prestador de serviço não é optante do simples nacional (opSimpNac = 1) na data de competência informada na DPS, com o município de incidência do ISSQN com situação "ATIVO" no Sistema Nacional NFS-e. nivel: '3' - codigo: E0619 regra: 'É obrigatório o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja não optante do Simples Nacional (opSimpNac = 1) na data de competência informada na DPS, e 2) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 3) nenhum regime especial de tributação para o prestador de serviço (regEspTrib = 0);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É obrigatório informar alíquota quando o prestador de serviço não é optante do simples nacional (opSimpNac = 1) na data de competência informada na DPS, o município de incidência do ISSQN não está com situação "ATIVO" no Sistema Nacional NFS-e e não haja algum regime especial de tributaçao para o prestador. nivel: '3' - codigo: E0621 regra: 'É obrigatorio o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN está "Ativo" na data de competência informada na DPS, 4) não haja benefício municipal ou, se houver, seja diferente de "Isenção" e "Alíquota diferenciada", e 5) haja retenção do ISSQN (tpRetISSQN = 2 ou 3); Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: 'É obrigatório informar alíquota quando há indicação de retenção do ISSQN (tpRetISSQN = 2 ou 3) para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), sem benefício municipal ou, se houver, seja diferente de isenção ou alíquota diferenciada, cujo município de incidência esteja Ativo no Sistema Nacional NFS-e. Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' nivel: '3' - codigo: E0625 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN está "Ativo" na data de competência informada na DPS, 4) não haja benefício municipal ou, se houver, seja diferente de "Isenção" e "Alíquota diferenciada", e 5) não haja retenção do ISSQN (tpRetISSQN = 1);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando não há indicação de retenção do ISSQN (tpRetISSQN = 1) para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), sem benefício municipal ou, se houver, seja diferente de isenção ou alíquota diferenciada, cujo município de incidência esteja Ativo no Sistema Nacional NFS-e. nivel: '3' - codigo: E0628 regra: 'É obrigatório o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 4) haja retenção do ISSQN (tpRetISSQN = 2 ou 3); Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: 'É obrigatório informar alíquota quando o município de incidência do ISSQN não está Ativo no Sistema Nacional NFS-e, para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1), com retenção do ISSQN (tpRetISSQN = 2 ou 3). Obs: neste cenário, o percentual da alíquota mínima informada permitida é 1,8%.' nivel: '3' - codigo: E0631 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN seja pelo SN (regApTribSN = 1) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS, e 4) não haja retenção do ISSQN (tpRetISSQN = 1);' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o município de incidência do ISSQN não está Ativo no Sistema Nacional NFS-e, para o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN pelo simples nacional (regApTribISSQN = 1) sem retenção do ISSQN (tpRetISSQN = 1). nivel: '3' - codigo: E0635 regra: 'Não é permitido o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) o prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência informada na DPS, e 2) a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3) e; 3) o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS;' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar alíquota quando o convênio do município de incidência do ISSQN está ativo na data de competência informada na DPS, para o prestador de serviço ME/EPP (opSimpNac = 3) com a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3). nivel: '3' - codigo: E0640 regra: 'É obrigatorio o preenchimento do campo pAliq quando ocorrer as condições abaixo simultaneamente: 1) O prestador de serviço seja optante do Simples Nacional ME/EPP (opSimpNac = 3) na data de competência de emissão da DPS e; 2) a apuração do ISSQN fora do Simples Nacional, ou seja, pela alíquota do município para o serviço prestado (regApTribSN = 2 ou 3) e; 3) o convênio do município de incidência do ISSQN não está "Ativo" na data de competência informada na DPS.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: É obrigatório informar alíquota quando o prestador de serviço ME/EPP (opSimpNac = 3) na data de competência informada na DPS, com apuração do ISSQN fora do Simples Nacional (regApTribISSQN = 2 ou 3), ou seja, pela alíquota do município para o serviço prestado, cujo município de incidência não esteja "Ativo" no Sistema Nacional NFS-e. nivel: '3' retentions: campo: retentions sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: tpRetISSQN caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/tpRetISSQN elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Tipo de retencao do ISSQN: 1 - Não Retido; 2 - Retido pelo Tomador; 3 - Retido pelo Intermediario;' regras: - codigo: E0580 regra: Não é permitido haver retenção do ISSQN (tpRetISSQN = 2 ou 3) quando o serviço prestado for imune, exportação de serviço ou não incidência do ISSQN sobre o serviço prestado, ou seja, o campo tpRetISSQ = 1 quando o campo referente à tributação do ISSQN (tribISSQN) é igual a "2 - Imunidade, "3 - Exportação de Serviço" ou "4 - Não Incidência", (tribISSQN = 2, 3 ou 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido haver retenção quando o campo referente à tributação do ISSQN indicar imunidade, exportação ou não incidência. nivel: '2' - codigo: E0583 regra: Se o prestador do serviço tiver opção perante o Simples Nacional MEI (opSimpNac = 2) na data de competência informada na DPS, então não é permitido ocorrer retenção do ISSQN (tpRetISSQN igual a 2 ou 3), ou seja, tpRetISSQN tem que ser igual a 1 (tpRetISSQN = 1). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido retenção do ISSQN para o prestador do serviço que seja MEI na data de competência informada na DPS. nivel: '2' - codigo: E0588 regra: Se o prestador do serviço tiver um regime especial de tributação (regEspTrib = 1, 2, 3, 4, 5, 6 ou 9) na data de competência informada na DPS, então não é permitido ocorrer retenção do ISSQN (tpRetISSQN igual a 2 ou 3), ou seja, tpRetISSQN tem que ser igual a 1 (tpRetISSQN = 1). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido retenção do ISSQN para o prestador do serviço que tenha algum regime especial de tributação na data de competência informada na DPS. nivel: '2' - codigo: E0594 regra: Quando o benefício municipal informado na DPS for do tipo "Isenção", não poderá ocorrer retenção do ISSQN (tpRetISSQN igual a 2 ou 3) ou seja, tpRetISSQN tem que ser igual a 1. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido retenção do ISSQN quando houver Benefício Municipal do tipo Isenção. nivel: '2' - codigo: E0596 regra: Quando o codigo de tributação nacional corresponder ao subitem 220101 da lista de serviços do Sistema Nacional NFS-e, não poderá ocorrer retenção do ISSQN (tpRetISSQN igual a 2 ou 3) ou seja, tpRetISSQN tem que ser igual a 1. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido retenção do ISSQN quando o serviço prestado corresponder ao subitem 220101 - Serviço de exploração de rodovia da lista de serviços do Sistema Nacional NFS-e. nivel: '2' - codigo: E0650 regra: Se o emitente da DPS for o tomador de serviço (tpEmit = 2) e o prestador for identificado por NIF ou, na falta do NIF informado, o endereço for no exterior e local da prestação no território brasileiro (cLocPrestacao é preenchido), então a retenção do imposto devido deve ser realizada obrigatoriamente pelo tomador (tpRetISSQN = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Em caso de importação de serviço pelo tomador, o ISSQN deve ser retido pelo tomador. nivel: '2' - codigo: E0652 regra: Se o emitente da DPS for o intermediário de serviço (tpEmit = 3) e o prestador for identificado por NIF ou, na falta do NIF informado, o endereço for no exterior e local da prestação no território brasileiro (cLocPrestacao é preenchido), então a retenção do imposto devido deve ser realizada obrigatoriamente pelo tomador (tpRetISSQN = 3). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Em caso de importação de serviço pelo intermediário, o ISSQN deve ser retido pelo intermediário. nivel: '2' - codigo: E0667 regra: Verificar se o CPF informado como tomador na DPS (NFSe/infNFSe/DPS/infDPS/toma/CPF) está previamente cadastrado para retenção do ISSQN na parametrização do município de incidência do imposto. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Município da incidência do ISSQN não autoriza que o CPF do tomador informado na DPS seja indicado para retenção deste imposto. nivel: '3' - codigo: E0670 regra: Verificar se o CPF informado como intermediário na DPS (NFSe/infNFSe/DPS/infDPS/interm/CPF) está previamente cadastrado para retenção na parametrização do município de incidência do imposto. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Município da incidência do ISSQN não autoriza que o CPF do intermediário informado na DPS seja indicado para retenção deste imposto. nivel: '3' - codigo: E0672 regra: Se o tomador emitente da DPS (tpEmit = 2) for estabelecido em município diferente do município de incidência do ISSQN, então não pode haver retenção (tpRetISSQN deve ser igual a 1). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não pode haver retenção do ISSQN se e o tomador for o emitente da DPS e estiver estabelecido em município diferente do município de incidência do ISSQN. nivel: '2' - codigo: E0673 regra: Se o intermediário emitente da DPS (tpEmit = 3) for estabelecido em município diferente do município de incidência do ISSQN, então não pode haver retenção (tpRetISSQN deve ser igual a 1). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não pode haver retenção do ISSQN se e o intermediário for o emitente da DPS e estiver estabelecido em município diferente do município de incidência do ISSQN. nivel: '2' trib_issqn: campo: trib_issqn sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: tribISSQN caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/tribISSQN elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Tributação do ISSQN sobre o serviço prestado: 1 - Operação tributável; 2 - Imunidade; 3 - Exportação de serviço; 4 - Não Incidência;' regras: - codigo: E0529 regra: Não é permitido ao emitente informar se tratar de uma situação de exportação de serviço (tribISSQN = 3) para os cenários 6, 10, 34, 38, 66, 80, conforme a planilha "EXPORTACAO_EMISSÃO_NFS-e". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O sistema considera este cenário para a prestação de serviço informada na DPS uma operação tributável. Não é permitido ao emitente da DPS informar que a prestação de serviço se trata de uma exportação de serviço. nivel: '2' - codigo: E0530 regra: Não é permitido ao emitente informar se tratar de uma situação de operação tributável (tribISSQN = 1) para os cenários 26, 54, 92, 96, 106, 110, conforme a planilha "EXPORTACAO_EMISSÃO_NFS-e". aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O sistema considera este cenário para a prestação de serviço informada na DPS uma exportação de serviço. Não é permitido ao emitente da DPS informar que a prestação de serviço se trata de uma operação tributável. nivel: '2' - codigo: E0532 regra: Quando o serviço prestado for 99.01.01 - Serviços sem a incidência de ISSQN e ICMS não há incidência do ISSQN (tribISSQN = 4). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O campo que informa sobre a tributação do ISSQN deve ser "4 - Não Incidência", quando houver o serviço prestado for 99.01.01 - Serviços sem a incidência de ISSQN e ICMS. nivel: '2' - codigo: E0539 regra: 'Quando qualquer subitem da lista de serviço nacional for incidente, conforme a parametrização do município de incidência do ISSQN, não é permitido informar não incidência do ISSQN, ou seja, os valores permitidos para o campo tribISSQN são: tribISSQN = 1, 2 ou 3.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não é permitido informar não incidência do ISSQN = 4 (Não Incidência) para qualquer subitem da lista nacional de serviço informado na DPS, se o subitem for incidente, conforme a parametrização do município de incidência do ISSQN. nivel: '2' - codigo: E0540 regra: 'Quando qualquer subitem da lista de serviço nacional for não incidente, conforme a parametrização do município de incidência do ISSQN, é obrigatório informar não incidência do ISSQN, ou seja, o valor permitido para o campo tribISSQN é: tribISSQN = 4.' aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não há incidência do ISSQN (tribISSQN = 4) pois a parametrização do muncípio de incidência do ISSQN indica que o código de serviço prestado, informado na DPS, não é incidente neste município. nivel: '2' tp_imunidade: campo: tp_imunidade sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: tpImunidade caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/tpImunidade elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: '1' descricao: 'Identificação da Imunidade do ISSQN – somente para o caso de Imunidade. Tipos de Imunidades: 0 - Imunidade (tipo não informado na nota de origem); 1 - Patrimônio, renda ou serviços, uns dos outros (CF88, Art 150, VI, a); 2 - Entidades religiosas e templos de qualquer culto, inclusive suas organizações assistenciais e beneficentes (CF88, Art 150, VI, b); 3 - Patrimônio, renda ou serviços dos partidos políticos, inclusive suas fundações, das entidades sindicais dos trabalhadores, das instituições de educação e de assistência social, sem fins lucrativos, atendidos os requisitos da lei (CF88, Art 150, VI, c); 4 - Livros, jornais, periódicos e o papel destinado a sua impressão (CF88, Art 150, VI, d); 5 - Fonogramas e videofonogramas musicais produzidos no Brasil contendo obras musicais ou literomusicais de autores brasileiros e/ou obras em geral interpretadas por artistas brasileiros bem como os suportes materiais ou arquivos digitais que os contenham, salvo na etapa de replicação industrial de mídias ópticas de leitura a laser. (CF88, Art 150, VI, e);' regras: - codigo: E0592 regra: Obrigatório e informado somente quando o campo referente à tributação do ISSQN for igual a 2 (tribISSQN = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O tipo de imunidade é obrigatório e deve ser informado somente quando o campo referente à tributação do ISSQN for igual a "2 - Imunidade". nivel: '2' - codigo: E0593 regra: Não permitido o valor "0 - Imunidade (tipo não informado na nota de origem)" na DPS quando utilizado os Emissores Públicos Nacionais para emissão de NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não permitido o valor "0 - Imunidade (tipo não informado na nota de origem)" na DPS quando utilizado os Emissores Públicos Nacionais para emissao de NFS-e. nivel: '2' issqn_immunity_type: campo: issqn_immunity_type sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/ campo: tpImunidade caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribMun/tpImunidade elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: '1' descricao: 'Identificação da Imunidade do ISSQN – somente para o caso de Imunidade. Tipos de Imunidades: 0 - Imunidade (tipo não informado na nota de origem); 1 - Patrimônio, renda ou serviços, uns dos outros (CF88, Art 150, VI, a); 2 - Entidades religiosas e templos de qualquer culto, inclusive suas organizações assistenciais e beneficentes (CF88, Art 150, VI, b); 3 - Patrimônio, renda ou serviços dos partidos políticos, inclusive suas fundações, das entidades sindicais dos trabalhadores, das instituições de educação e de assistência social, sem fins lucrativos, atendidos os requisitos da lei (CF88, Art 150, VI, c); 4 - Livros, jornais, periódicos e o papel destinado a sua impressão (CF88, Art 150, VI, d); 5 - Fonogramas e videofonogramas musicais produzidos no Brasil contendo obras musicais ou literomusicais de autores brasileiros e/ou obras em geral interpretadas por artistas brasileiros bem como os suportes materiais ou arquivos digitais que os contenham, salvo na etapa de replicação industrial de mídias ópticas de leitura a laser. (CF88, Art 150, VI, e);' regras: - codigo: E0592 regra: Obrigatório e informado somente quando o campo referente à tributação do ISSQN for igual a 2 (tribISSQN = 2). aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: O tipo de imunidade é obrigatório e deve ser informado somente quando o campo referente à tributação do ISSQN for igual a "2 - Imunidade". nivel: '2' - codigo: E0593 regra: Não permitido o valor "0 - Imunidade (tipo não informado na nota de origem)" na DPS quando utilizado os Emissores Públicos Nacionais para emissão de NFS-e. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Não permitido o valor "0 - Imunidade (tipo não informado na nota de origem)" na DPS quando utilizado os Emissores Públicos Nacionais para emissao de NFS-e. nivel: '2' comex_md_prestacao: campo: comex_md_prestacao sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/comExt/ campo: mdPrestacao caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/comExt/mdPrestacao elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Modo de Prestação: 0 - Desconhecido (tipo não informado na nota de origem); 1 - Transfronteiriço; 2 - Consumo no Brasil; 3 - Movimento Temporário de Pessoas Físicas; 4 - Consumo no Exterior;' regras: - codigo: E0333 regra: Se o valor do campo mdPrestacao for 0, então a DPS deve ser rejeitada. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Valor 0 para o modo de prestação não é permitido na Sefin do Sistema Nacional NFS-e. nivel: '2' comex_mec_af_prestador: campo: comex_mec_af_prestador sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/comExt/ campo: mecAFComexP caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/comExt/mecAFComexP elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '2' descricao: 'Mecanismo de apoio/fomento ao Comércio Exterior utilizado pelo prestador do serviço: 00 - Desconhecido (tipo não informado na nota de origem); 01 - Nenhum; 02 - ACC - Adiantamento sobre Contrato de Câmbio – Redução a Zero do IR e do IOF; 03 - ACE – Adiantamento sobre Cambiais Entregues - Redução a Zero do IR e do IOF; 04 - BNDES-Exim Pós-Embarque – Serviços; 05 - BNDES-Exim Pré-Embarque - Serviços; 06 - FGE - Fundo de Garantia à Exportação; 07 - PROEX - EQUALIZAÇÃO 08 - PROEX - Financiamento;' regras: - codigo: E0341 regra: Se o valor do campo mecAFComexP for 0, então a DPS deve ser rejeitada. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Valor 0 para o Mecanismo de apoio/fomento ao Comércio Exterior utilizado pelo prestador do serviço não é permitido na Sefin do Sistema Nacional NFS-e. nivel: '2' comex_mec_af_tomador: campo: comex_mec_af_tomador sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/comExt/ campo: mecAFComexT caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/comExt/mecAFComexT elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '2' descricao: 'Mecanismo de apoio/fomento ao Comércio Exterior utilizado pelo tomador do serviço: 00 - Desconhecido (tipo não informado na nota de origem); 01 - Nenhum; 02 - Adm. Pública e Repr. Internacional; 03 - Alugueis e Arrend. Mercantil de maquinas, equip., embarc. e aeronaves; 04 - Arrendamento Mercantil de aeronave para empresa de transporte aéreo público; 05 - Comissão a agentes externos na exportação; 06 - Despesas de armazenagem, mov. e transporte de carga no exterior; 07 - Eventos FIFA (subsidiária); 08 - Eventos FIFA; 09 - Fretes, arrendamentos de embarcações ou aeronaves e outros; 10 - Material Aeronáutico; 11 - Promoção de Bens no Exterior; 12 - Promoção de Dest. Turísticos Brasileiros; 13 - Promoção do Brasil no Exterior; 14 - Promoção Serviços no Exterior; 15 - RECINE; 16 - RECOPA; 17 - Registro e Manutenção de marcas, patentes e cultivares; 18 - REICOMP; 19 - REIDI; 20 - REPENEC; 21 - REPES; 22 - RETAERO; 23 - RETID; 24 - Royalties, Assistência Técnica, Científica e Assemelhados; 25 - Serviços de avaliação da conformidade vinculados aos Acordos da OMC; 26 - ZPE;' regras: - codigo: E0343 regra: Se o valor do campo mecAFComexT for 0, então a DPS deve ser rejeitada. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Valor 0 para o Mecanismo de apoio/fomento ao Comércio Exterior utilizado pelo tomador do serviço não é permitido na Sefin do Sistema Nacional NFS-e. nivel: '2' comex_mov_temp_bens: campo: comex_mov_temp_bens sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/comExt/ campo: movTempBens caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/comExt/movTempBens elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: 'Vínculo da Operação à Movimentação Temporária de Bens: 0 - Desconhecido (tipo não informado na nota de origem); 1 - Não; 2 - Vinculada - Declaração de Importação; 3 - Vinculada - Declaração de Exportação;' regras: - codigo: E0345 regra: Se o valor do campo movTempBens for 0, então a DPS deve ser rejeitada. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Valor 0 para o Vínculo da Operação à Movimentação Temporária de Bens não é permitido na Sefin do Sistema Nacional NFS-e. nivel: '2' comex_mdic: campo: comex_mdic sem_correspondencia: false motivo: null rejeita_se_errado: false leiaute: caminho: NFSe/infNFSe/DPS/infDPS/serv/comExt/ campo: mdic caminho_completo: NFSe/infNFSe/DPS/infDPS/serv/comExt/mdic elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: Indicador se a NFS-e deverá ser disponibilizada ao MDIC. 0 - Não enviar para o MDIC; 1 - Enviar para o MDIC; regras: [] issqn_tributation_confirmada_em: campo: issqn_tributation_confirmada_em sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é o registro de quando a Tributação ISSQN da configuração fiscal foi escolhida ou confirmada com o campo já indo na nota. Sem ele, o valor gravado antes de 31/10/2026 não vai na DPS.' rejeita_se_errado: false leiaute: null regras: [] cst: campo: cst sem_correspondencia: false motivo: null rejeita_se_errado: false leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/ campo: CST caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/CST elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '2' descricao: 'Código de Situação Tributária do PIS/COFINS (CST): 00 - Nenhum; 01 - Operação Tributável com Alíquota Básica; 02 - Operação Tributável com Alíquota Diferenciada; 03 - Operação Tributável com Alíquota por Unidade de Medida de Produto; 04 - Operação Tributável monofásica - Revenda a Alíquota Zero; 05 - Operação Tributável por Substituição Tributária; 06 - Operação Tributável a Alíquota Zero; 07 - Operação Isenta da Contribuição; 08 - Operação sem Incidência da Contribuição; 09 - Operação com Suspensão da Contribuição; 49 - Outras Operações de Saída; 50 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita Tributada no Mercado Interno; 51 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita Não-Tributada no Mercado Interno; 52 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita de Exportação; 53 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno; 54 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas no Mercado Interno e de Exportação; 55 - Operação com Direito a Crédito – Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação; 56 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno e de Exportação; 60 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita Tributada no Mercado Interno; 61 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita Não-Tributada no Mercado Interno; 62 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita de Exportação; 63 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno; 64 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas no Mercado Interno e de Exportação; 65 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Não-Tributadas no Mercado Interno e de Exportação; 66 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno e de Exportação; 67 - Crédito Presumido – Outras Operações; 70 - Operação de Aquisição sem Direito a Crédito; 71 - Operação de Aquisição com Isenção; 72 - Operação de Aquisição com Suspensão; 73 - Operação de Aquisição a Alíquota Zero; 74 - Operação de Aquisição sem Incidência da Contribuição; 75 - Operação de Aquisição por Substituição Tributária; 98 - Outras Operações de Entrada; 99 - Outras Operações;' regras: [] paliq_pis: campo: paliq_pis sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/ campo: pAliqPis caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/pAliqPis elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: 1-2V2 descricao: Alíquota do PIS, relativa à apuração própria (%). regras: - codigo: E0686 regra: Se a alíquota do Pis (pAliqPis) for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A alíquota do Pis deve ser igual ou maior que 0 e menor ou igual a 100%. nivel: '1' paliq_cofins: campo: paliq_cofins sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/ campo: pAliqCofins caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/piscofins/pAliqCofins elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: 1-2V2 descricao: Alíquota da COFINS, relativa à apuração própria (%). regras: - codigo: E0692 regra: Se a alíquota do Cofins (pAliqCofins) for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: A alíquota do Cofins deve ser igual ou maior que 0 e menor ou igual a 100%. nivel: '1' trib_type: campo: trib_type sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/ campo: indTotTrib caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/indTotTrib elemento: CE tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '1' descricao: Indicador de informação de valor total de tributos. Se informado indica que o emitente opta por não informar nenhum valor estimado para os Tributos (Decreto 8.264/2014). 0 - Não; regras: - codigo: E0712 regra: Se a situação do emitente da DPS perante o Simples Nacional na data de competência informada for ME/EPP, o choice indTotTrib nunca poderá ser informado. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Para ME/EPP indTotTrib nunca poderá ser informado. nivel: '1' - codigo: E0713 regra: Se a situação do emitente da DPS perante o Simples Nacional na data de competência informada for Não Optante, indTotTrib e pTotTribSN nunca poderá ser informado. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Para Não Optante do SN os campos, indicador de informação de valor total de tributos e percentual aproximado do total dos tributos da alíquota do Simples Nacional (%), não podem ser informado. nivel: '1' trib_sn: campo: trib_sn sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/ campo: pTotTribSN caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTribSN elemento: CE tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: 1-2V2 descricao: Valor percentual aproximado do total dos tributos da alíquota do Simples Nacional (%). regras: - codigo: E0710 regra: Se a situação do emitente da DPS perante o Simples Nacional na data de competência informada for MEI, o choice pTotTribSN nunca poderá ser informado. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Para MEI pTotTribSN nunca poderá ser informado. nivel: '1' trib_federal: campo: trib_federal sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/ campo: pTotTribFed caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/pTotTribFed elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: 1-2V2 descricao: Valor percentual total aproximado dos tributos federais (%). regras: - codigo: E0706 regra: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. nivel: '1' trib_estadual: campo: trib_estadual sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/ campo: pTotTribEst caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/pTotTribEst elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: 1-2V2 descricao: Valor percentual total aproximado dos tributos estaduais (%). regras: - codigo: E0707 regra: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. nivel: '1' trib_municipal: campo: trib_municipal sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/ campo: pTotTribMun caminho_completo: NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/pTotTrib/pTotTribMun elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: 1-2V2 descricao: Valor percentual total aproximado dos tributos municipais (%). regras: - codigo: E0708 regra: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Se a alíquota for informada, então deve ser igual ou maior que 0 e menor ou igual a 100%. nivel: '1' ibscbs_cst: campo: ibscbs_cst sem_correspondencia: false motivo: null rejeita_se_errado: false leiaute: caminho: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/ campo: CST caminho_completo: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/CST elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '3' descricao: Código de Situação Tributária do IBS e da CBS regras: [] ibscbs_cclasstrib: campo: ibscbs_cclasstrib sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/ campo: cClassTrib caminho_completo: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/cClassTrib elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '6' descricao: Código de Classificação Tributária do IBS e da CBS regras: - codigo: E0958 regra: Código da classificação tributária - cClassTrib informado não é suportado para as operações de prestação de serviços (validoParaSiglaDfeInformado = false) aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: cClassTrib para IBS/CBS incorreto para operação de prestação de serviços. nivel: '1' - codigo: E0959 regra: Código da classificação tributária - cClassTrib informado não pertence ao grupo do CST para IBS/CBS informado 3 primeiros dígitos do cClassTrib devem ser iguais ao CST aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: cClassTrib não pertence ao grupo CST indicado. nivel: '1' ibscbs_cindop: campo: ibscbs_cindop sem_correspondencia: false motivo: null rejeita_se_errado: true leiaute: caminho: NFSe/infNFSe/DPS/infDPS/IBSCBS/ campo: cIndOp caminho_completo: NFSe/infNFSe/DPS/infDPS/IBSCBS/cIndOp elemento: E tipo: N ocorrencia: 1-1 opcional_no_esquema: false tamanho: '6' descricao: Código indicador da operação de fornecimento, conforme tabela “código indicador de operação” regras: - codigo: E0901 regra: O código indicador da operação deve constar na tabela de códigos conforme ANEXO C. aplicacao: Obrig. efeito: Rej. rejeita: true mensagem: Código indicador da operação inexistente. nivel: '1' ibscbs_ccredpres: campo: ibscbs_ccredpres sem_correspondencia: false motivo: null rejeita_se_errado: false leiaute: caminho: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/ campo: cCredPres caminho_completo: NFSe/infNFSe/DPS/infDPS/IBSCBS/valores/trib/gIBSCBS/cCredPres elemento: E tipo: N ocorrencia: 0-1 opcional_no_esquema: true tamanho: '2' descricao: 'Código e classificação do crédito presumido: IBS e CBS.' regras: [] ps_onerosa: campo: ps_onerosa sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a pergunta "prestação de serviço onerosa?" do AnexoVIII (norteador, NT 004 §1.2), um dos dois eixos que derivam a SUGESTÃO de cIndOp/cClassTrib para o serviço. Não vai na DPS; quem vai é o cIndOp escolhido, e a escolha explícita vence a sugestão.' rejeita_se_errado: false leiaute: null regras: [] adq_exterior: campo: adq_exterior sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a pergunta "adquirente no exterior?" do AnexoVIII (norteador, NT 004 §1.2), um dos dois eixos que derivam a SUGESTÃO de cIndOp/cClassTrib para o serviço. Não vai na DPS; quem vai é o cIndOp escolhido, e a escolha explícita vence a sugestão. A combinação "não onerosa + adquirente no exterior" não é definida pelo anexo e não gera sugestão.' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_ir: campo: aliquota_retencao_ir sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. IRRF sobre a remuneração de serviços profissionais: 1,5% (RIR/2018, Decreto 9.580/2018). Não incide sobre todo serviço nem sobre todo tomador: confirme com o seu contador o que se aplica à sua atividade.' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_pis: campo: aliquota_retencao_pis sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. PIS/Pasep: 0,65%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_cofins: campo: aliquota_retencao_cofins sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. COFINS: 3,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_csll: campo: aliquota_retencao_csll sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. CSLL: 1,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_inss: campo: aliquota_retencao_inss sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. Retenção previdenciária: não há alíquota geral aplicável a todo serviço, e por isso a sugestão é zero. Quando a cessão de mão de obra ou a empreitada a exigirem, informe a alíquota do seu caso.' rejeita_se_errado: false leiaute: null regras: [] aliquota_retencao_others: campo: aliquota_retencao_others sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE, e o leiaute não tem campo para ela. A NT 007 agrega os valores retidos de PIS, COFINS e CSLL em `vRetCSLL`, e `pAliqPis`/`pAliqCofins` são da apuração própria, outro conceito. Outras retenções: campo livre, sem alíquota legal geral. A sugestão é zero justamente para que nada seja retido sem alguém ter decidido.' rejeita_se_errado: false leiaute: null regras: [] ir: campo: ir sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. IRRF sobre a remuneração de serviços profissionais: 1,5% (RIR/2018, Decreto 9.580/2018). Não incide sobre todo serviço nem sobre todo tomador: confirme com o seu contador o que se aplica à sua atividade.' rejeita_se_errado: false leiaute: null regras: [] pis: campo: pis sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. PIS/Pasep: 0,65%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] cofins: campo: cofins sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. COFINS: 3,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] csll: campo: csll sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. CSLL: 1,00%, uma das três parcelas da CSRF de 4,65% retida pela pessoa jurídica tomadora (Lei 10.833/2003, art. 30).' rejeita_se_errado: false leiaute: null regras: [] inss: campo: inss sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. Retenção previdenciária: não há alíquota geral aplicável a todo serviço, e por isso a sugestão é zero. Quando a cessão de mão de obra ou a empreitada a exigirem, informe a alíquota do seu caso.' rejeita_se_errado: false leiaute: null regras: [] others: campo: others sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a alíquota de RETENÇÃO NA FONTE sugerida pela filial ao modal de emissão, e o valor que vai à nota é o que o modal envia. Outras retenções: campo livre, sem alíquota legal geral. A sugestão é zero justamente para que nada seja retido sem alguém ter decidido.' rejeita_se_errado: false leiaute: null regras: [] certificate: campo: certificate sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: o certificado ICP-Brasil assina a DPS, não é campo dela. O leiaute descreve o conteúdo do documento, e a assinatura é governada pelo esquema de assinatura digital, não pelo ANEXO_I.' rejeita_se_errado: false leiaute: null regras: [] certificatePassword: campo: certificatePassword sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é a senha de leitura do arquivo PFX, dado local que nunca sai desta instalação.' rejeita_se_errado: false leiaute: null regras: [] certificate_holder: campo: certificate_holder sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é o titular lido do próprio .pfx aceito no upload, prova de qual certificado está configurado. O leiaute descreve o conteúdo da DPS, e o titular do certificado não é campo dela: quem assina é governado pelo esquema de assinatura digital.' rejeita_se_errado: false leiaute: null regras: [] certificate_cnpj: campo: certificate_cnpj sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é o CNPJ do titular lido do .pfx (OID 2.16.76.1.3.3), não o CNPJ do prestador da DPS. Confundir os dois é o erro que este campo existe para tornar visível: eles PODEM divergir, e é exatamente essa divergência que a tela mostra.' rejeita_se_errado: false leiaute: null regras: [] certificate_valid_from: campo: certificate_valid_from sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é o início da validade lido do .pfx. Governa se a instalação consegue assinar, não o conteúdo do documento assinado.' rejeita_se_errado: false leiaute: null regras: [] certificate_valid_to: campo: certificate_valid_to sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é o fim da validade lido do .pfx. Governa se a instalação consegue assinar, não o conteúdo do documento assinado.' rejeita_se_errado: false leiaute: null regras: [] logo: campo: logo sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: o logotipo é da apresentação impressa (DANFSe), cujo leiaute é a NT 008, e não do documento fiscal.' rejeita_se_errado: false leiaute: null regras: [] regime_tributario: campo: regime_tributario sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: é configuração desta instalação, não campo da DPS. Ela decide se o grupo IBSCBS é montado, e é o grupo inteiro que aparece ou não no documento, não um campo com valor.' rejeita_se_errado: false leiaute: null regras: [] cultural: campo: cultural sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: campo do padrão municipal (PBH), que não existe no leiaute nacional. O caminho municipal sai por completo (decisão D-12).' rejeita_se_errado: false leiaute: null regras: [] operationNature: campo: operationNature sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: campo do padrão municipal (PBH), que não existe no leiaute nacional. O caminho municipal sai por completo (decisão D-12).' rejeita_se_errado: false leiaute: null regras: [] operation_nature: campo: operation_nature sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: campo do padrão municipal (PBH), que não existe no leiaute nacional. O caminho municipal sai por completo (decisão D-12). Além disso é duplicata de `operationNature`: nada lê esta grafia, só a outra chega à emissão.' rejeita_se_errado: false leiaute: null regras: [] nfse_system: campo: nfse_system sem_correspondencia: true motivo: 'Sem correspondência no ANEXO_I: escolhe entre o padrão municipal e o nacional, eixo desta instalação e não campo da DPS. O caminho municipal sai por completo (decisão D-12) e com ele esta escolha.' rejeita_se_errado: false leiaute: null regras: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/fiscal-rps/ibs-cbs-tables: get: tags: - Configurações summary: Consultar tabelas de IBS/CBS — configurações operationId: business_get_configuration_fiscal_rps_tabelas_ibscbs description: 'Permissões exigidas na chave: (fiscal_rps.view ou fiscal_rps.emit ou categories.view ou categories.create ou categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar tabelas de IBS/CBS — configurações. content: application/json: schema: type: object properties: versao: type: string description: Versão da definição fiscal ou da política apresentada. origem: type: string description: Fonte da configuração ou do valor resolvido. cst: type: array items: $ref: '#/components/schemas/PublicContractFiscalTableCode' description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. classificacoes: type: array items: type: object properties: codigo: type: string description: Código de identificação da regra ou opção no catálogo consultado. cst: type: string description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. descricao: type: string description: Descrição pública do registro ou regra consultada. required: - codigo - cst - descricao description: Classificações tributárias disponíveis no catálogo fiscal. creditos_presumidos: type: array items: $ref: '#/components/schemas/PublicContractFiscalTableCode' description: Créditos presumidos do IBS/CBS compatíveis com a classificação. required: - versao - origem - cst - classificacoes - creditos_presumidos example: versao: 'publicacao 2026-10-30 (cClassTrib: maior DthPublicacao 2026-10-30; cCredPres: pagina TabelaCreditoPresumido baixada em 2026-10-31)' origem: https://dfe-portal.svrs.rs.gov.br/DFE/ClassificacaoTributaria (cClassTrib e CST) e https://dfe-portal.svrs.rs.gov.br/CFF/TabelaCreditoPresumido (cCredPres) cst: - codigo: '000' descricao: Tributação integral - codigo: '010' descricao: Tributação com alíquotas uniformes - codigo: '011' descricao: Tributação com alíquotas uniformes reduzidas - codigo: '200' descricao: Alíquota reduzida - codigo: '221' descricao: Alíquota fixa proporcional - codigo: '400' descricao: Isenção - codigo: '410' descricao: Imunidade e não incidência - codigo: '515' descricao: Diferimento com redução de alíquota - codigo: '550' descricao: Suspensão - codigo: '800' descricao: Transferência de crédito - codigo: '811' descricao: Ajustes - codigo: '820' descricao: Tributação em documento específico classificacoes: - codigo: '000001' cst: '000' descricao: Situações tributadas integralmente pelo IBS e CBS. - codigo: '000006' cst: '000' descricao: Situações tributadas integralmente pelo IBS e CBS realizadas por autônomo - codigo: '010001' cst: '010' descricao: Operações do FGTS não realizadas pela Caixa Econômica Federal, observado o art. 212 da Lei Complementar nº 214, de 2025. - codigo: '010002' cst: '010' descricao: Operações do serviço financeiro - codigo: '011003' cst: '011' descricao: Intermediação de planos de assistência à saúde, observado o art. 240 da Lei Complementar nº 214, de 2025. - codigo: '200001' cst: '200' descricao: Serviços de transporte de bens até as zonas de processamento de exportação e bens exportados a partir das zonas de processamento de exportação, observado o art. 103 da Lei Complementar n 214, de 2025. - codigo: '200004' cst: '200' descricao: Fornecimento de dispositivos médicos com a especificação das respectivas classificações da NCM/SH previstas no Anexo XII da Lei Complementar nº 214, de 2025, observado o art. 144 da Lei Complementar nº 214, de 2025. - codigo: '200005' cst: '200' descricao: Fornecimento de dispositivos médicos com a especificação das respectivas classificações da NCM/SH previstas no Anexo IV da Lei Complementar nº 214, de 2025, quando adquiridos por órgãos da administração pública direta, autarquias, fundações públicas e entidades de saúde imunes, observado o art. 144 da Lei Complementar nº 214, de 2025. - codigo: '200006' cst: '200' descricao: Situação de emergência de saúde pública reconhecida pelo Poder Legislativo federal, estadual, distrital ou municipal competente, ato conjunto do Ministro da Fazenda e do Comitê Gestor do IBS poderá ser editado, a qualquer momento, para incluir dispositivos não listados no Anexo XII da Lei Complementar nº 214, de 2025, limitada a vigência do benefício ao período e à localidade da emergência de saúde pública, observado o art. 144 da Lei Complementar nº 214, de 2025. - codigo: '200007' cst: '200' descricao: Fornecimento dos dispositivos de acessibilidade próprios para pessoas com deficiência relacionados no Anexo XIII da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH, observado o art. 145 da Lei Complementar nº 214, de 2025. - codigo: '200008' cst: '200' descricao: Fornecimento dos dispositivos de acessibilidade próprios para pessoas com deficiência relacionados no Anexo V da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH, quando adquiridos por órgãos da administração pública direta, autarquias, fundações públicas e entidades imunes, observado o art. 145 da Lei Complementar nº 214, de 2025. - codigo: '200016' cst: '200' descricao: Prestação de serviços de pesquisa e desenvolvimento por Instituição Científica, Tecnológica e de Inovação (ICT) sem fins lucrativos para a administração pública direta, autarquias e fundações públicas ou para o contribuinte sujeito ao regime regular do IBS e da CBS, observado o disposto no art. 156 da Lei Complementar nº 214, de 2025. - codigo: '200017' cst: '200' descricao: Operações relacionadas ao FGTS, considerando aquelas necessárias à aplicação da Lei nº 8.036, de 1990, realizadas pelo Conselho Curador ou Secretaria Executiva do FGTS, observado o art. 212 da Lei Complementar nº 214, de 2025. - codigo: '200019' cst: '200' descricao: Importador dos serviços financeiros que seja contribuinte e tenha direito de apropriação de créditos na aquisição do mesmo serviço financeiro no País, observado o art. 231 da Lei Complementar nº 214, de 2025. - codigo: '200020' cst: '200' descricao: Operação praticada por sociedades cooperativas optantes por regime específico do IBS e CBS, quando o associado destinar bem ou serviço à cooperativa de que participa, e a cooperativa fornecer bem ou serviço ao associado sujeito ao regime regular do IBS e da CBS, observado o art. 271 da Lei Complementar nº 214, de 2025. - codigo: '200021' cst: '200' descricao: Serviços de transporte público coletivo de passageiros ferroviário e hidroviário urbanos, semiurbanos e metropolitanos, observado o art. 285 da Lei Complementar nº 214, de 2025. - codigo: '200025' cst: '200' descricao: Fornecimento dos serviços de educação relacionados ao Programa Universidade para Todos (Prouni), instituído pela Lei nº 11.096, de 13 de janeiro de 2005, observado o art. 308 da Lei Complementar nº 214, de 2025. - codigo: '200026' cst: '200' descricao: Locação de imóveis localizados nas zonas reabilitadas, pelo prazo de 5 (cinco) anos, contado da data de expedição do habite-se, e relacionados a projetos de reabilitação urbana de zonas históricas e de áreas críticas de recuperação e reconversão urbanística dos Municípios ou do Distrito Federal, a serem delimitadas por lei municipal ou distrital, observado o art. 158 da Lei Complementar nº 214, de 2025. - codigo: '200027' cst: '200' descricao: Operações de locação, cessão onerosa e arrendamento de bens imóveis, observado o art. 261 da Lei Complementar nº 214, de 2025. - codigo: '200028' cst: '200' descricao: Fornecimento dos serviços de educação relacionados no Anexo II da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da Nomenclatura Brasileira de Serviços, Intangíveis e Outras Operações que Produzam Variações no Patrimônio (NBS), observado o art. 129 da Lei Complementar nº 214, de 2025. - codigo: '200029' cst: '200' descricao: Fornecimento dos serviços de saúde humana relacionados no Anexo III da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NBS, observado o art. 130 da Lei Complementar nº 214, de 2025. - codigo: '200030' cst: '200' descricao: Venda dos dispositivos médicos relacionados no Anexo IV da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH, observado o art. 131 da Lei Complementar nº 214, de 2025. - codigo: '200031' cst: '200' descricao: Fornecimento dos dispositivos de acessibilidade próprios para pessoas com deficiência relacionados no Anexo V da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH, observado o art. 132 da Lei Complementar nº 214, de 2025. - codigo: '200037' cst: '200' descricao: Fornecimento de serviços ambientais de conservação ou recuperação da vegetação nativa, mesmo que fornecidos sob a forma de manejo sustentável de sistemas agrícolas, agroflorestais e agrossilvopastoris, em conformidade com as definições e requisitos da legislação específica, observado o art. 137 da Lei Complementar nº 214, de 2025. - codigo: '200038' cst: '200' descricao: Fornecimento dos insumos agropecuários e aquícolas relacionados no Anexo IX da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH e da NBS, observado o art. 138 da Lei Complementar nº 214, de 2025. - codigo: '200039' cst: '200' descricao: Fornecimento dos bens e serviços listados no Anexo X da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NCM/SH e NBS, nos casos relacionados com produções nacionais artísticas, culturais, de eventos, jornalísticas e audiovisuais, observado o art. 139 da Lei Complementar nº 214, de 2025. - codigo: '200040' cst: '200' descricao: 'Fornec dos seguintes serv de comunic instit à admin púb direta, autarq e fund púb: serviços direcionados ao planej, criação, programação e manutenção de páginas eletrônicas da admin pública, ao monitor e gestão de suas redes sociais e à otimização de páginas e canais digitais para mecanismos de buscas e produção de mensagens, infográficos, painéis interativos e conteúdo institucional, serviços de relações com a imprensa, que reúnem estrat org para promover e reforçar a comunicação dos órgãos e das entidades contratantes com seus públicos de interesse, por meio da interação com prof da imprensa, e serviços de relações públicas, que compreendem o esforço de comunic planej, coeso e contínuo que tem por obj estab adequada percepção da atuação e dos obj instituc, a partir do estímulo à compreensão mútua e da manut de padrões de relac e fluxos de inf entre os órgãos e as entidades contrat e seus públicos de interesse, no País e no exterior, obs o art. 140 da Lei Compl nº 214, de 2025' - codigo: '200041' cst: '200' descricao: 'Operações relacionadas às seguintes atividades desportivas: fornecimento de serviço de educação desportiva, classificado no código 1.2205.12.00 da NBS, e gestão e exploração do desporto por associações e clubes esportivos filiados ao órgão estadual ou federal responsável pela coordenação dos desportos, inclusive por meio de venda de ingressos para eventos desportivos, fornecimento oneroso ou não de bens e serviços, inclusive ingressos, por meio de programas de sócio-torcedor, cessão dos direitos desportivos dos atletas e transferência de atletas para outra entidade desportiva ou seu retorno à atividade em outra entidade desportiva, observado o art. 141 da Lei Complementar nº 214, de 2025.' - codigo: '200042' cst: '200' descricao: 'Operações relacionadas às seguintes atividades desportivas: gestão e exploração do desporto por associações e clubes esportivos filiados ao órgão estadual ou federal responsável pela coordenação dos desportos, observado o art. 141 da Lei Complementar nº 214, de 2025.' - codigo: '200043' cst: '200' descricao: Fornecimento à administração pública direta, autarquias e fundações púbicas dos serviços e dos bens relativos à soberania e à segurança nacional, à segurança da informação e à segurança cibernética relacionados no Anexo XI da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NBS e da NCM/SH, observado o art. 142 da Lei Complementar nº 214, de 2025. - codigo: '200044' cst: '200' descricao: Operações e prestações de serviços de segurança da informação e segurança cibernética desenvolvidos por sociedade que tenha sócio brasileiro com o mínimo de 20% (vinte por cento) do seu capital social, relacionados no Anexo XI da Lei Complementar nº 214, de 2025, com a especificação das respectivas classificações da NBS e da NCM/SH, observado o art. 142 da Lei Complementar nº 214, de 2025. - codigo: '200045' cst: '200' descricao: Operações relacionadas a projetos de reabilitação urbana de zonas históricas e de áreas críticas de recuperação e reconversão urbanística dos Municípios ou do Distrito Federal, a serem delimitadas por lei municipal ou distrital, observado o art. 158 da Lei Complementar nº 214, de 2025. - codigo: '200046' cst: '200' descricao: Operações com bens imóveis, observado o art. 261 da Lei Complementar nº 214, de 2025. - codigo: '200048' cst: '200' descricao: Hotelaria, Parques de Diversão e Parques Temáticos, observado o art. 281 da Lei Complementar nº 214, de 2025. - codigo: '200051' cst: '200' descricao: Agências de Turismo, observado o art. 289 da Lei Complementar nº 214, de 2025. - codigo: '200052' cst: '200' descricao: 'Prestação de serviços das seguintes profissões intelectuais de natureza científica, literária ou artística, submetidas à fiscalização por conselho profissional: administradores, advogados, arquitetos e urbanistas, assistentes sociais, bibliotecários, biólogos, contabilistas, economistas, economistas domésticos, profissionais de educação física, engenheiros e agrônomos, estatísticos, médicos veterinários e zootecnistas, museólogos, químicos, profissionais de relações públicas, técnicos industriais e técnicos agrícolas, observado o art. 127 da Lei Complementar nº 214, de 2025.' - codigo: '200054' cst: '200' descricao: Fornecimento de bem material pela cooperativa de produção agropecuária a associado não sujeito ao regime regular do IBS e da CBS com anulação de créditos referentes ao bem fornecido, observado o art. 271 da Lei Complementar nº 214, de 2025. - codigo: '200055' cst: '200' descricao: Fornecimento dos serviços com redução de alíquota de 60% realizado por autônomo, observado o art. 128 da Lei Complementar nº 214, de 2025. - codigo: '200056' cst: '200' descricao: Fornecimento dos serviços com redução de alíquota de 30% realizado por autônomo, observado o art. 127 da Lei Complementar nº 214, de 2025. - codigo: '221001' cst: '221' descricao: Locação, cessão onerosa ou arrendamento de bem imóvel com alíquota sobre a receita bruta, observado o art. 487 da Lei Complementar nº 214, de 2025. - codigo: '400001' cst: '400' descricao: Fornecimento de serviços de transporte público coletivo de passageiros rodoviário e metroviário de caráter urbano, semiurbano e metropolitano, sob regime de autorização, permissão ou concessão pública, observado o art. 157 da Lei Complementar nº 214, de 2025. - codigo: '410001' cst: '410' descricao: Fornecimento de bonificações quando constem do respectivo documento fiscal e que não dependam de evento posterior, observado o art. 5º da Lei Complementar nº 214, de 2025. - codigo: '410003' cst: '410' descricao: Doações e amostras grátis que não tenham por objeto bens ou serviços que tenham permitido a apropriação de créditos pelo doador, observado o art. 6º da Lei Complementar nº 214, de 2025. - codigo: '410004' cst: '410' descricao: Exportações de bens e serviços, observado o art. 8º da Lei Complementar nº 214, de 2025. - codigo: '410005' cst: '410' descricao: Fornecimentos realizados pela União, pelos Estados, pelo Distrito Federal e pelos Municípios, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410006' cst: '410' descricao: Fornecimentos realizados por entidades religiosas e templos de qualquer culto, inclusive suas organizações assistenciais e beneficentes, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410007' cst: '410' descricao: Fornecimentos realizados por partidos políticos, inclusive suas fundações, entidades sindicais dos trabalhadores e instituições de educação e de assistência social, sem fins lucrativos, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410008' cst: '410' descricao: Fornecimentos de livros, jornais, periódicos e do papel destinado a sua impressão, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410009' cst: '410' descricao: Fornecimentos de fonogramas e videofonogramas musicais produzidos no Brasil contendo obras musicais ou literomusicais de autores brasileiros e/ou obras em geral interpretadas por artistas brasileiros, bem como os suportes materiais ou arquivos digitais que os contenham, salvo na etapa de replicação industrial de mídias ópticas de leitura a laser, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410010' cst: '410' descricao: Fornecimentos de serviço de comunicação nas modalidades de radiodifusão sonora e de sons e imagens de recepção livre e gratuita, observado o art. 9º da Lei Complementar nº 214, de 2025. - codigo: '410012' cst: '410' descricao: Fornecimento de condomínio edilício não optante pelo regime regular, observado o art. 26 da Lei Complementar nº 214, de 2025. - codigo: '410014' cst: '410' descricao: Fornecimento de produtor rural não contribuinte, observado o art. 164 da Lei Complementar nº 214, de 2025. - codigo: '410015' cst: '410' descricao: Fornecimento por transportador autônomo não contribuinte, observado o art. 169 da Lei Complementar nº 214, de 2025. - codigo: '410026' cst: '410' descricao: Doações e amostras grátis sem contraprestação em benefício do doador, com anulação de crédito apropriados pelo doador referente ao fornecimento doado, observado o art. 6º da Lei Complementar nº 214, de 2025. - codigo: '410027' cst: '410' descricao: Fornecimento de bens e serviços, desde que vinculados direta e exclusivamente à exportação de bens materiais ou associados à entrega no exterior de bens materiais, observado o art. 6º da Lei Complementar nº 214, de 2025. - codigo: '410033' cst: '410' descricao: Operações com bens imóveis, inclusive operações com direitos reais sobre bens imóveis, realizadas por Fundos de Investimento Imobiliário (FII) e Fundos de Investimento nas Cadeias Produtivas do Agronegócio (Fiagro), observado o art. 26 da Lei Complementar nº 214, de 2025. - codigo: '410035' cst: '410' descricao: Fornecimento realizado por nanoempreendedor, observado o art. 26 da Lei Complementar nº 214, de 2025. - codigo: '410999' cst: '410' descricao: Operações não onerosas sem previsão de tributação, não especificadas anteriormente, observado o art. 4º da Lei Complementar nº 214, de 2025. - codigo: '515001' cst: '515' descricao: Operações, sujeitas a diferimento, com insumos agropecuários e aquícolas, observado o art. 138 da Lei Complementar nº 214, de 2025. - codigo: '550016' cst: '550' descricao: Regime Especial de Incentivos para o Desenvolvimento da Infraestrutura - Reidi, observado o art. 106 da Lei Complementar nº 214, de 2025. - codigo: '550022' cst: '550' descricao: Regime Especial de Incentivos para a Produção de Hidrogênio de Baixa Emissão de Carbono (Rehidro), observado o art. 106 da Lei Complementar nº 214, de 2025. - codigo: '800001' cst: '800' descricao: Fusão, cisão ou incorporação, observado o art. 55 da Lei Complementar nº 214, de 2025. - codigo: '800002' cst: '800' descricao: Transferência de crédito do associado, inclusive as cooperativas singulares, para cooperativa de que participa das operações antecedentes às operações em que fornece bens e serviços e os créditos presumidos, observado o art. 272 da Lei Complementar nº 214, de 2025. - codigo: '811001' cst: '811' descricao: "Anulação de crédito proporcional ao valor das operações imunes e isentas, observado\ \ o art. 51 da Lei Complementar nº 214, de 2025.\r\n" - codigo: '811002' cst: '811' descricao: "Débitos de notas fiscais não processadas na apuração, observado o art. 45 da Lei Complementar\ \ nº 214, de 2025.\r\n" - codigo: '811003' cst: '811' descricao: "Débitos apurados após o desenquadramento do regime Simples Nacional, observado o art.\ \ 41 da Lei Complementar nº 214, de 2025.\r\n" - codigo: '820001' cst: '820' descricao: Documento com informações de fornecimento de serviços de planos de assistência à saúde elencados no art. 234 da Lei Complementar nº 214, de 2025, mas com tributação realizada por outro meio - codigo: '820002' cst: '820' descricao: Documento com informações de fornecimento de serviços de planos de assinstência funerária, mas com tributação realizada por outro meio, observado o art. 236 da Lei Complementar nº 214, de 2025. - codigo: '820003' cst: '820' descricao: Documento com informações de fornecimento de serviços de planos de assinstência à saúde de animais domésticos, mas com tributação realizada por outro meio, observado o art. 243 da Lei Complementar nº 214, de 2025. - codigo: '820004' cst: '820' descricao: Documento com informações de prestação de serviços de consursos de prognósticos, mas com tributação realizada por outro meio, observado o art. 248 da Lei Complementar nº 214, de 2025. - codigo: '820006' cst: '820' descricao: "Documento com informações de fornecimento de serviços de exploração de via, mas com\ \ tributação realizada por outro meio, observado o art. 11 da Lei Complementar nº 214, de 2025.\r\ \n" - codigo: '820007' cst: '820' descricao: Documento com informações de fornecimento de serviços financeiros, mas com tributação realizada por outro meio, observado o art. 181 da Lei Complementar nº 214, de 2025. - codigo: '820009' cst: '820' descricao: Fornecimentos declarados e tributados em outro documento, observado o art. 60 da Lei Complementar nº 214, de 2025. creditos_presumidos: - codigo: '01' descricao: Crédito presumido da aquisição de bens e serviços de produtor rural e produtor rural integrado não contribuinte, observado o art. 168 da Lei Complementar nº 214, de 2025. - codigo: '02' descricao: Crédito presumido da aquisição de serviço de transportador autônomo de carga pessoa física não contribuinte, observado o art. 169 da Lei Complementar nº 214, de 2025. - codigo: '03' descricao: Crédito presumido da aquisição de resíduos e demais materiais destinados à reciclagem, reutilização ou logística reversa adquiridos de pessoa física, cooperativa ou outra forma de organização popular, observado o art. 170 da Lei Complementar nº 214, de 2025. - codigo: '04' descricao: Crédito presumido da aquisição de bens móveis usados de pessoa física não contribuinte para revenda, observado o art. 171 da Lei Complementar nº 214, de 2025. - codigo: '05' descricao: Crédito presumido no regime automotivo, observado o art. 311 da Lei Complementar nº 214, de 2025. - codigo: '06' descricao: Crédito presumido no regime automotivo, observado o art. 312 da Lei Complementar nº 214, de 2025. - codigo: '07' descricao: Crédito presumido na aquisição por contribuinte na Zona Franca de Manaus, observado o art. 444 da Lei Complementar nº 214, de 2025. - codigo: 08 descricao: Crédito presumido na aquisição por contribuinte na Zona Franca de Manaus, observado o art. 447 da Lei Complementar nº 214, de 2025. - codigo: 09 descricao: Crédito presumido na aquisição por contribuinte na Zona Franca de Manaus, observado o art. 449 da Lei Complementar nº 214, de 2025. - codigo: '10' descricao: Crédito presumido na aquisição por contribuinte na Zona Franca de Manaus, observado o art. 450 da Lei Complementar nº 214, de 2025. - codigo: '11' descricao: Crédito presumido na aquisição por contribuinte na Área de Livre Comércio, observado o art. 462 da Lei Complementar nº 214, de 2025. - codigo: '12' descricao: Crédito presumido na aquisição por contribuinte na Área de Livre Comércio, observado o art. 465 da Lei Complementar nº 214, de 2025. - codigo: '13' descricao: Crédito presumido na aquisição pela indústria na Área de Livre Comércio, observado o art. 467 da Lei Complementar nº 214, de 2025. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/payment-activation/credentials/{method}: post: tags: - Configurações summary: Vincular credencial de recebimento — configurações operationId: business_post_configuration_payment_activation_credentials_method description: 'Permissões exigidas na chave: (bank_slip.configure ou card_receiving.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Substitua os textos de exemplo pelas credenciais reais do processador obtidas pelo responsável da empresa. Não são credenciais utilizáveis e não devem ser registradas em logs.' parameters: - name: method in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: credencial: SUBSTITUA_CREDENCIAL_PJBANK chave: SUBSTITUA_CHAVE_PJBANK schema: type: object properties: credencial: type: string maxLength: 255 description: Credencial do serviço externo utilizada na integração. Trate como segredo. chave: type: string maxLength: 255 description: Chave de acesso do documento ou credencial, conforme o recurso. Trate credenciais como segredo. chave_webhook: type: string maxLength: 255 description: Segredo utilizado para verificar notificações do provedor na configuração interna da integração. required: - credencial - chave responses: '201': description: Vincular credencial de recebimento — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractPaymentActivation' example: transfer_account: null boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo fantasy_name: null cnpj: 00000000000191 email: contato@example.invalid phone: null address: null registration_profile: null commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: null payment_pix_fee: null payment_settlement_days: null enrolled: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/payment-activation/link/activation: put: tags: - Configurações summary: Ativar link de pagamento — configurações operationId: business_post_configuration_payment_activation_link_activate description: 'Permissões exigidas na chave: (payment_links.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '201': description: Ativar link de pagamento — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractPaymentActivation' example: transfer_account: null boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo fantasy_name: null cnpj: 00000000000191 email: contato@example.invalid phone: null address: null registration_profile: null commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: null payment_pix_fee: null payment_settlement_days: null enrolled: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Configurações summary: Desativar link de pagamento — configurações operationId: business_post_configuration_payment_activation_link_deactivate description: 'Permissões exigidas na chave: (payment_links.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '201': description: Desativar link de pagamento — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractPaymentActivation' example: transfer_account: null boleto: method: boleto provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card_pending_documents: true automatic_pix_available: false link: module: true active: false company: name: Empresa Exemplo fantasy_name: null cnpj: 00000000000191 email: contato@example.invalid phone: null address: null registration_profile: null commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: null payment_pix_fee: null payment_settlement_days: null enrolled: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/payment-activation/methods/{method}: put: tags: - Configurações summary: Alterar meio de recebimento — configurações operationId: business_put_configuration_payment_activation_methods_method description: 'Permissões exigidas na chave: (bank_slip.configure ou card_receiving.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: method in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: active: false schema: type: object properties: active: description: Indica se o registro está ativo para uso pela empresa. type: boolean required: - active responses: '200': description: Alterar meio de recebimento — configurações. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPaymentActivation' example: transfer_account: null boleto: method: boleto provider: pjbank module: true active: false self_service: true registered: true manual_credentials: true pix: method: pix provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card: method: card provider: pjbank module: true active: true self_service: true registered: true manual_credentials: true card_pending_documents: true automatic_pix_available: false link: module: true active: true company: name: Empresa Exemplo fantasy_name: null cnpj: 00000000000191 email: contato@example.invalid phone: null address: null registration_profile: null commercial_terms: plan_name: Plano Exemplo payment_boleto_fee: null payment_pix_fee: null payment_settlement_days: null enrolled: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/payment-link/branding: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/configuration/payment-link/branding\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"logo=@${ARQUIVO_LOGO}\"" tags: - Configurações summary: Atualizar identidade do link de pagamento — configurações operationId: business_post_configuration_payment_link_branding description: 'Permissões exigidas na chave: (payment_links.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: false content: multipart/form-data: schema: type: object properties: logo: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 2048.' remove_logo: description: Quando verdadeiro, solicita a remoção da imagem de marca atualmente configurada. type: boolean color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' display_name: description: Token de escolha; não é o nome resolvido da empresa. type: string nullable: true enum: - legal_name - fantasy_name message: description: Mensagem legível que explica o resultado da operação. type: string nullable: true maxLength: 200 support_email: type: string format: email nullable: true maxLength: 120 description: Endereço de e-mail para atendimento ao pagador no link de pagamento. support_phone: description: Telefone de atendimento apresentado ao pagador no link de pagamento. type: string nullable: true maxLength: 20 responses: '201': description: Atualizar identidade do link de pagamento — configurações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractPaymentLinkConfiguration' example: available_methods: - boleto - pix - card default_methods: - pix preselected_method: pix branding: logo_url: null color: '#245A81' display_name: Empresa Exemplo message: Obrigado pela preferência. support_email: contato@example.invalid support_phone: null merge: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/regime-tributario: get: tags: - Configurações summary: Consultar regime tributário — configurações operationId: business_get_configuration_regime_tributario description: 'Permissões exigidas na chave: (fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar regime tributário — configurações. content: application/json: schema: type: object properties: regime: type: string description: Regime tributário da empresa utilizado na configuração fiscal. cst: type: string nullable: true description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. cClassTrib: type: string nullable: true description: Código de classificação tributária IBS/CBS do catálogo fiscal. cIndOp: type: string nullable: true description: Código do indicador da operação IBS/CBS do catálogo fiscal. cCredPres: type: string nullable: true description: Código do crédito presumido IBS/CBS aplicável à operação. required: - regime - cst - cClassTrib - cIndOp - cCredPres example: regime: tradicional cst: null cClassTrib: null cIndOp: null cCredPres: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Configurações summary: Atualizar regime tributário — configurações operationId: business_put_configuration_regime_tributario description: 'Permissões exigidas na chave: (fiscal_rps.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: regime: tradicional schema: type: object properties: regime: description: Regime tributário da empresa utilizado na configuração fiscal. type: string enum: - tradicional - ibs_cbs cst: description: Fallback legado. Tradicional grava null. Em ibs_cbs, qualquer código exige cst/cClassTrib/cIndOp juntos; tabelas oficiais validadas. type: string nullable: true pattern: ^[0-9]{3}$ cClassTrib: description: Fallback legado. Tradicional grava null. Em ibs_cbs, qualquer código exige cst/cClassTrib/cIndOp juntos; tabelas oficiais validadas. type: string nullable: true pattern: ^[0-9]{6}$ cIndOp: description: Fallback legado. Tradicional grava null. Em ibs_cbs, qualquer código exige cst/cClassTrib/cIndOp juntos; tabelas oficiais validadas. type: string nullable: true pattern: ^[0-9]{6}$ cCredPres: description: Fallback legado. Tradicional grava null. Em ibs_cbs, qualquer código exige cst/cClassTrib/cIndOp juntos; tabelas oficiais validadas. type: string nullable: true pattern: ^[0-9]{2}$ required: - regime responses: '200': description: Atualizar regime tributário — configurações. A resposta informa o resultado da atualização solicitada. content: application/json: schema: type: object properties: regime: type: string description: Regime tributário da empresa utilizado na configuração fiscal. cst: type: string nullable: true description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. cClassTrib: type: string nullable: true description: Código de classificação tributária IBS/CBS do catálogo fiscal. cIndOp: type: string nullable: true description: Código do indicador da operação IBS/CBS do catálogo fiscal. cCredPres: type: string nullable: true description: Código do crédito presumido IBS/CBS aplicável à operação. required: - regime - cst - cClassTrib - cIndOp - cCredPres example: regime: tradicional cst: null cClassTrib: null cIndOp: null cCredPres: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /configuration/template-layout: get: tags: - Configurações summary: Consultar identidade visual — configurações operationId: business_get_configuration_template_layout description: 'Permissões exigidas na chave: (layout.edit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar identidade visual — configurações. content: application/json: schema: type: object properties: logo: type: string nullable: true description: 'Limite do arquivo em KiB: max 102400.' color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' required: - logo - color example: logo: null color: '#245A81' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/configuration/template-layout\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"logo=@${ARQUIVO_LOGO}\"" tags: - Configurações summary: Atualizar identidade visual — configurações operationId: business_post_configuration_template_layout description: 'Permissões exigidas na chave: (layout.edit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: false content: multipart/form-data: schema: type: object properties: logo: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' color: description: Cor hexadecimal ou nome simples; até 30 caracteres; formato do request. type: string nullable: true maxLength: 30 pattern: ^(#[0-9A-Fa-f]{3,8}|[A-Za-z]{3,20})$ responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '204': description: Apresentação do modelo atualizada; resposta sem corpo. /contracts: get: tags: - Contratos summary: Listar — contratos operationId: business_get_contracts description: 'Permissões exigidas na chave: (contracts.view). vigente/nao_vigente consideram somente ready_for_finalization/completed. Rascunhos, enviados, recusados e cancelados ficam fora de ambos. Os filtros não particionam toda a listagem.' parameters: - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - draft - sending - awaiting_signatures - awaiting_review - awaiting_company - awaiting_company_review - ready_for_finalization - completed - expired - rejected - cancelled - description: Tipo de pessoa ou entidade vinculada ao contrato; informe junto com contractable_id. name: contractable_type in: query required: false schema: type: string nullable: true - description: UUID da pessoa ou entidade vinculada ao contrato; informe junto com contractable_type. name: contractable_id in: query required: false schema: type: string format: uuid nullable: true - description: Situação de vigência utilizada para filtrar os contratos. name: vigencia in: query required: false schema: type: string nullable: true enum: - vigente - nao_vigente - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 180 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer nullable: true minimum: 1 maximum: 100 - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer nullable: true minimum: 1 responses: '200': description: Listar — contratos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractContract' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total example: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/contracts?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/contracts per_page: 10 to: 1 total: 1 data: - id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: null status: draft version: 1 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: null validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' first_page_url: https://empresa-exemplo.invalid/public-api/v1/contracts?page=1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/contracts?page=1 next_page_url: null prev_page_url: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Contratos summary: Criar — contratos operationId: business_post_contracts description: 'Permissões exigidas na chave: (contracts.view) e (contracts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: contractable_type: client contractable_id: c4e59b71-71df-5c1b-829a-65a3a45b9e12 vigencia_inicio_modo: data vigencia_fim_modo: data title: Contrato de consultoria vigencia_inicio_data: '2026-11-01' vigencia_fim_data: '2027-11-01' schema: type: object properties: contractable_type: description: 'Tipo de pessoa ou entidade vinculada ao contrato; informe junto com contractable_id. Opções: `client`, `provider`, `employee`, `intern`, `partner`.' type: string enum: - client - provider - employee - intern - partner contractable_id: description: UUID da pessoa ou entidade vinculada ao contrato; informe junto com contractable_type. type: string format: uuid vigencia_inicio_modo: description: 'Critério para definir o início da vigência do contrato, conforme as opções aceitas. Opções: `data`, `na_conclusao`.' type: string enum: - data - na_conclusao vigencia_inicio_data: type: string format: date description: Data de início da vigência do contrato, quando exigida pelo modo selecionado. vigencia_fim_modo: description: 'Critério para definir o fim da vigência do contrato, conforme as opções aceitas. Opções: `data`, `indeterminado`.' type: string enum: - data - indeterminado vigencia_fim_data: type: string format: date description: Obrigatória se vigencia_fim_modo=data; proibida em indeterminado. Quando início é data, fim deve ser igual ou posterior. invitation_days: description: Prazo em dias utilizado para a validade dos convites de assinatura. type: integer minimum: 1 maximum: 365 title: description: Título pelo qual o contrato ou documento será apresentado aos participantes. type: string maxLength: 180 mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `simple`, `extended`, `icp_brasil`.' type: string enum: - simple - extended - icp_brasil signers: description: Participantes que devem assinar o contrato e seus dados de identificação. type: array items: type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 180 document: description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. type: string email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 254 phone: type: string description: Número de telefone do contato, com DDD quando nacional. additionalProperties: false required: - name - document - email - phone minItems: 1 maxItems: 70 placements: description: Posições dos campos de assinatura nas páginas do documento. type: array items: type: object properties: signer_id: description: Identificador do signatário ao qual a posição de assinatura pertence. Identificação no formato UUID. type: string format: uuid page: description: Número da página a consultar ou posicionar no documento, conforme a operação. type: integer minimum: 1 maximum: 1000 x: description: Coordenada horizontal da posição da assinatura na página do documento. type: number minimum: 0 maximum: 1 y: description: Coordenada vertical da posição da assinatura na página do documento. type: number minimum: 0 maximum: 1 width: description: Largura da área de assinatura na página do documento. type: number maximum: 1 height: description: Altura da área de assinatura na página do documento. type: number maximum: 1 additionalProperties: false required: - signer_id - page - x - y - width - height required: - contractable_type - contractable_id - vigencia_inicio_modo - vigencia_fim_modo - title allOf: - oneOf: - required: - vigencia_inicio_data properties: vigencia_inicio_modo: enum: - data description: 'Critério para definir o início da vigência do contrato, conforme as opções aceitas. Opções: `data`.' - properties: vigencia_inicio_modo: enum: - na_conclusao description: 'Critério para definir o início da vigência do contrato, conforme as opções aceitas. Opções: `na_conclusao`.' not: required: - vigencia_inicio_data - oneOf: - required: - vigencia_fim_data properties: vigencia_fim_modo: enum: - data description: 'Critério para definir o fim da vigência do contrato, conforme as opções aceitas. Opções: `data`.' - properties: vigencia_fim_modo: enum: - indeterminado description: 'Critério para definir o fim da vigência do contrato, conforme as opções aceitas. Opções: `indeterminado`.' not: required: - vigencia_fim_data responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: null status: draft version: 1 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: null validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/settings: get: tags: - Contratos summary: Consultar — contratos operationId: business_get_contracts_settings description: 'Permissões exigidas na chave: (contracts.settings). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar — contratos. content: application/json: schema: $ref: '#/components/schemas/PublicContractContractSettings' example: enabled: true company_signers: - name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' pricing_acknowledged: true capabilities: icp_validation: false sending: true storage_configured: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Contratos summary: Atualizar — contratos operationId: business_put_contracts_settings description: 'Permissões exigidas na chave: (contracts.settings). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: enabled: false pricing_acknowledged: false company_signers: [] schema: type: object properties: enabled: description: Ativa ou desativa o recurso configurado nesta operação. type: boolean pricing_acknowledged: description: Confirma ciência do custo informado antes de solicitar a operação cobrada. type: boolean company_signers: description: Chave sempre presente, array; [] permitido quando enabled=false. enabled=true exige pelo menos um signatário e pricing_acknowledged=true. type: array items: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 120 document: description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. type: string email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 254 phone: type: string description: Número de telefone do contato, com DDD quando nacional. additionalProperties: false required: - name - document - email - phone maxItems: 30 nullable: false required: - enabled - pricing_acknowledged - company_signers allOf: - anyOf: - properties: enabled: enum: - false description: 'Ativa ou desativa o recurso configurado nesta operação. Opções: `False`.' - properties: enabled: enum: - true description: 'Ativa ou desativa o recurso configurado nesta operação. Opções: `True`.' company_signers: minItems: 1 description: Representantes da empresa que participarão da assinatura do contrato. pricing_acknowledged: enum: - true description: 'Confirma ciência do custo informado antes de solicitar a operação cobrada. Opções: `True`.' responses: '200': description: Atualizar — contratos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractContractSettings' example: enabled: true company_signers: - name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' pricing_acknowledged: true capabilities: icp_validation: false sending: true storage_configured: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/{contract}: get: tags: - Contratos summary: Consultar — contratos operationId: business_get_contracts_contract description: 'Permissões exigidas na chave: (contracts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — contratos. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: null status: draft version: 1 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: null validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Contratos summary: Atualizar — contratos operationId: business_put_contracts_contract description: 'Permissões exigidas na chave: (contracts.view) e (contracts.update). Exige estado editável: cancelado é 422 errors.contract; em estado elegível, versão desatualizada é 409. Estado é validado antes da versão.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: version: 1 schema: type: object properties: contractable_type: type: string enum: - client - provider - employee - intern - partner description: 'Tipo de pessoa ou entidade vinculada ao contrato; informe junto com contractable_id. Opções: `client`, `provider`, `employee`, `intern`, `partner`.' contractable_id: type: string format: uuid description: UUID da pessoa ou entidade vinculada ao contrato; informe junto com contractable_type. vigencia_inicio_modo: type: string enum: - data - na_conclusao description: 'Critério para definir o início da vigência do contrato, conforme as opções aceitas. Opções: `data`, `na_conclusao`.' vigencia_inicio_data: type: string format: date description: Data de início da vigência do contrato, quando exigida pelo modo selecionado. vigencia_fim_modo: type: string enum: - data - indeterminado description: 'Critério para definir o fim da vigência do contrato, conforme as opções aceitas. Opções: `data`, `indeterminado`.' vigencia_fim_data: type: string format: date description: Data final da vigência do contrato, quando exigida pelo modo selecionado. invitation_days: description: Prazo em dias utilizado para a validade dos convites de assinatura. type: integer minimum: 1 maximum: 365 title: description: Título pelo qual o contrato ou documento será apresentado aos participantes. type: string maxLength: 180 mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `simple`, `extended`, `icp_brasil`.' type: string enum: - simple - extended - icp_brasil version: description: Versão do recurso utilizada para identificar alterações concorrentes. type: integer minimum: 0 refresh_company_signers: description: Solicita atualizar os representantes da empresa na preparação do contrato. type: boolean signers: description: Participantes que devem assinar o contrato e seus dados de identificação. type: array items: type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 180 document: description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. type: string email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 254 phone: type: string description: Número de telefone do contato, com DDD quando nacional. additionalProperties: false required: - name - document - email - phone minItems: 1 maxItems: 70 placements: description: Posições dos campos de assinatura nas páginas do documento. type: array items: type: object properties: signer_id: description: Identificador do signatário ao qual a posição de assinatura pertence. Identificação no formato UUID. type: string format: uuid page: description: Número da página a consultar ou posicionar no documento, conforme a operação. type: integer minimum: 1 maximum: 1000 x: description: Coordenada horizontal da posição da assinatura na página do documento. type: number minimum: 0 maximum: 1 y: description: Coordenada vertical da posição da assinatura na página do documento. type: number minimum: 0 maximum: 1 width: description: Largura da área de assinatura na página do documento. type: number maximum: 1 height: description: Altura da área de assinatura na página do documento. type: number maximum: 1 additionalProperties: false required: - signer_id - page - x - y - width - height maxItems: 500 required: - version responses: '200': description: Atualizar — contratos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal revisado mode: null status: draft version: 2 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: null validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/cancellations: post: tags: - Contratos summary: Cancelar — contratos operationId: business_post_contracts_contract_cancel description: 'Permissões exigidas na chave: (contracts.view) e (contracts.cancel). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: version: 1 schema: type: object properties: version: description: Versão do recurso utilizada para identificar alterações concorrentes. type: integer minimum: 0 required: - version responses: '200': description: Cancelar — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: null status: cancelled version: 2 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: null validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/evidence-package: get: tags: - Contratos summary: Baixar pacote de evidências — contratos operationId: business_get_contracts_contract_evidence_package description: 'Permissões exigidas na chave: (contracts.view) e (contracts.evidence). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar pacote de evidências — contratos. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/{contract}/evidence-pdf: get: tags: - Contratos summary: Baixar evidências em PDF — contratos operationId: business_get_contracts_contract_evidence_pdf description: 'Permissões exigidas na chave: (contracts.view) e (contracts.evidence). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar evidências em PDF — contratos. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/{contract}/final-pdf: get: tags: - Contratos summary: Baixar PDF final — contratos operationId: business_get_contracts_contract_final_pdf description: 'Permissões exigidas na chave: (contracts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar PDF final — contratos. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/{contract}/finalizations: post: tags: - Contratos summary: Finalizar — contratos operationId: business_post_contracts_contract_finalize description: 'Permissões exigidas na chave: (contracts.view) e (contracts.send). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Finalizar — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: simple status: completed version: 3 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000012 role: external name: Cliente Exemplo document: '11144477735' email: cliente@example.invalid phone: '5531999990000' signed_at: '2026-10-29T12:00:00.000000Z' verification_recovery_available: false review_status: approved signature_level: null signature_trust_set: null - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: '2026-10-29T12:00:00.000000Z' verification_recovery_available: false review_status: approved signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: '2026-10-29T12:00:00.000000Z' artifacts: final_pdf: true evidence_pdf: true evidence_package: true finalization: error: null delivery_summary: pending: 2 sent: 0 failed: 0 concluded_at: '2026-10-29T12:00:00.000000Z' placements: [] document: sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa size: 2048 validator_code: ABCDEFGHJKLMNPQRSTUVWXYZ quote: total_credits: 100 incomplete: false breakdown: - service: contract_simple quantity: 2 unit_credits: 50 total_credits: 100 capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/pdf: get: tags: - Contratos summary: Baixar PDF — contratos operationId: business_get_contracts_contract_pdf description: 'Permissões exigidas na chave: (contracts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar PDF — contratos. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/contracts/${CONTRACT_ID}/pdf\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"file=@${ARQUIVO_FILE}\" \\\n --form-string \"version=${CAMPO_VERSION}\"" tags: - Contratos summary: Enviar PDF — contratos operationId: business_post_contracts_contract_pdf description: 'Permissões exigidas na chave: (contracts.view) e (contracts.update). PDF só pode ser alterado em estado editável. Cancelado retorna 422 errors.contract sem substituição. Em estado elegível, versão desatualizada gera 409.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: 'Limite do arquivo em KiB: max 20480.' version: description: Versão do recurso utilizada para identificar alterações concorrentes. type: integer minimum: 0 required: - file - version responses: '200': description: Enviar PDF — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: null status: draft version: 2 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa size: 2048 validator_code: null quote: total_credits: 0 incomplete: true breakdown: [] capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/delivery-retries: post: tags: - Contratos summary: Repetir entrega — contratos operationId: business_post_contracts_contract_retry_delivery description: 'Permissões exigidas na chave: (contracts.view) e (contracts.send). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Esta ação pode disparar comunicação aos signatários.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Repetir entrega — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: simple status: completed version: 3 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000012 role: external name: Cliente Exemplo document: '11144477735' email: cliente@example.invalid phone: '5531999990000' signed_at: '2026-10-29T12:00:00.000000Z' verification_recovery_available: false review_status: approved signature_level: null signature_trust_set: null - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: '2026-10-29T12:00:00.000000Z' verification_recovery_available: false review_status: approved signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: '2026-10-29T12:00:00.000000Z' artifacts: final_pdf: true evidence_pdf: true evidence_package: true finalization: error: null delivery_summary: pending: 2 sent: 0 failed: 0 concluded_at: '2026-10-29T12:00:00.000000Z' placements: [] document: sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa size: 2048 validator_code: ABCDEFGHJKLMNPQRSTUVWXYZ quote: total_credits: 100 incomplete: false breakdown: - service: contract_simple quantity: 2 unit_credits: 50 total_credits: 100 capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/deliveries: post: tags: - Contratos summary: Enviar para assinatura — contratos operationId: business_post_contracts_contract_send description: 'Permissões exigidas na chave: (contracts.view) e (contracts.send). Antes do débito/envio: escolher mode, cadastrar signatário externo, confirmar orçamento e preparar PDF. Fora de icp_brasil exige posições de todos os signatários; ausência retorna 422 errors.placements antes de cobrar/enviar.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: idempotency_key: bad17fda-e555-51d9-bf57-b64c2ee80992 version: 1 expected_total_credits: 1 schema: type: object properties: idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. Identificação no formato UUID. type: string format: uuid version: description: Versão do recurso utilizada para identificar alterações concorrentes. type: integer minimum: 1 expected_total_credits: description: Total de créditos esperado pelo solicitante, usado para verificar o custo antes de confirmar. type: integer minimum: 1 maximum: 7500 required: - idempotency_key - version - expected_total_credits responses: '200': description: Enviar para assinatura — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: simple status: awaiting_signatures version: 3 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000012 role: external name: Cliente Exemplo document: '11144477735' email: cliente@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa size: 2048 validator_code: ABCDEFGHJKLMNPQRSTUVWXYZ quote: total_credits: 100 incomplete: false breakdown: - service: contract_simple quantity: 2 unit_credits: 50 total_credits: 100 capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/signers/{signer}/identity/{file}: get: tags: - Contratos summary: Baixar arquivo de identidade — contratos operationId: business_get_contracts_contract_signers_signer_identity_file description: 'Permissões exigidas na chave: (contracts.review ou contracts.evidence). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: signer in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: file in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar arquivo de identidade — contratos. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary video/mp4: schema: type: string format: binary video/webm: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /contracts/{contract}/signers/{signer}/verification-resets: post: tags: - Contratos summary: Reiniciar verificação do signatário — contratos operationId: business_post_contracts_contract_signers_signer_reset_verification description: 'Permissões exigidas na chave: (contracts.view) e (contracts.send). Reinicia verificação apenas para signatário próprio elegível, com PDF aceito/accepted_path/accepted_sha256 e expires_at futuro. Rascunho e outros casos inelegíveis podem retornar 404, sem promessa de 409 universal.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: signer in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Reiniciar verificação do signatário — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContract' example: id: 70000000-0000-4000-8000-000000000010 title: Contrato de consultoria mensal mode: simple status: awaiting_signatures version: 3 contractable_type: client contractable_id: 70000000-0000-4000-8000-000000000005 contractable: id: 70000000-0000-4000-8000-000000000005 nome: Cliente Exemplo signers: - id: 70000000-0000-4000-8000-000000000012 role: external name: Cliente Exemplo document: '11144477735' email: cliente@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null - id: 70000000-0000-4000-8000-000000000011 role: company name: Representante Exemplo document: '52998224725' email: representante@example.invalid phone: '5531999990000' signed_at: null verification_recovery_available: false review_status: pending signature_level: null signature_trust_set: null signature_level: null vigencia: inicio_modo: na_conclusao inicio_data: null fim_modo: indeterminado fim_data: null invitation_days: 30 finalized_at: null artifacts: final_pdf: false evidence_pdf: false evidence_package: false finalization: error: null delivery_summary: pending: 0 sent: 0 failed: 0 concluded_at: null placements: [] document: sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa size: 2048 validator_code: ABCDEFGHJKLMNPQRSTUVWXYZ quote: total_credits: 100 incomplete: false breakdown: - service: contract_simple quantity: 2 unit_credits: 50 total_credits: 100 capabilities: send: true reason: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /contracts/{contract}/signers/{signer}/review: get: tags: - Contratos summary: Consultar — contratos operationId: business_get_contracts_contract_signers_signer_review description: 'Permissões exigidas na chave: (contracts.review ou contracts.evidence). Consulta revisão de signatário próprio somente na modalidade extended. Em simple esta consulta retorna 404.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: signer in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — contratos. content: application/json: schema: $ref: '#/components/schemas/PublicContractContractReview' example: review_revision: 1a39789800fc70acbf5e72b2456e804cbc5e49abec900e0d8c22580e543efba3 signer: id: 70000000-0000-4000-8000-000000000012 name: Cliente Exemplo review_status: pending signed: true files: - id: 70000000-0000-4000-8000-000000000030 kind: document mime: image/jpeg size: 120000 - id: 70000000-0000-4000-8000-000000000031 kind: selfie mime: image/jpeg size: 85000 history: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Contratos summary: Decidir revisão de identidade — contratos operationId: business_post_contracts_contract_signers_signer_review description: 'Permissões exigidas na chave: (contracts.review ou contracts.evidence) e (contracts.review). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Leia a revisão atual antes de enviar review_revision. O hash ilustrativo não confirma a revisão de nenhum contrato real.' parameters: - name: contract in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: signer in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: decision: resubmit reason: Documento ilegível review_revision: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa schema: type: object properties: decision: description: 'Decisão tomada na análise; utilize um dos valores aceitos no enum. Opções: `approve`, `resubmit`, `reject`.' type: string enum: - approve - resubmit - reject reason: type: string nullable: true maxLength: 2000 description: Obrigatório para reject/resubmit; approve dispensa motivo. review_revision: type: string description: Revisão da análise que está sendo confirmada; evita aplicar decisões sobre dados desatualizados. required: - decision - review_revision allOf: - anyOf: - properties: decision: enum: - approve description: 'Decisão tomada na análise; utilize um dos valores aceitos no enum. Opções: `approve`.' - required: - reason properties: decision: enum: - reject - resubmit description: 'Decisão tomada na análise; utilize um dos valores aceitos no enum. Opções: `reject`, `resubmit`.' reason: type: string nullable: false minLength: 1 description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. responses: '200': description: Decidir revisão de identidade — contratos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractContractReview' example: review_revision: 7172a27490e6b8022992b9ffef13664b87b46bec0c1c07393e3caaf1c695b548 signer: id: 70000000-0000-4000-8000-000000000012 name: Cliente Exemplo review_status: approved signed: true files: - id: 70000000-0000-4000-8000-000000000030 kind: document mime: image/jpeg size: 120000 - id: 70000000-0000-4000-8000-000000000031 kind: selfie mime: image/jpeg size: 85000 history: - decision: approve reason: Documento e selfie conferidos. created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cost-centers/{cost_center}: put: tags: - Centros de custo summary: Atualizar — centros de custo operationId: business_put_cost_centers_cost_center description: 'Permissões exigidas na chave: (categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cost_center in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 150 active: description: Indica se o registro está ativo para uso pela empresa. type: boolean required: - name responses: '200': description: Atualizar — centros de custo. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractCostCenter' example: id: 10000000-0000-4000-8000-000000000004 name: Unidade de atendimento active: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents-categories: get: tags: - Perfis de documentos summary: Listar — perfis de documentos operationId: business_get_documents_categories description: 'Permissões exigidas na chave: (document_profiles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — perfis de documentos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDocumentCategory' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000009 name: Cliente slug: cliente created_at: '2026-10-20T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/documents-categories?page=1 last: https://empresa-exemplo.invalid/public-api/v1/documents-categories?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/documents-categories?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/documents-categories per_page: 25 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 25 /documents-categories/{document_category}: get: tags: - Perfis de documentos summary: Consultar — perfis de documentos operationId: business_get_documents_categories_document_category description: 'Permissões exigidas na chave: (document_profiles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document_category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — perfis de documentos. content: application/json: schema: $ref: '#/components/schemas/PublicContractDocumentCategory' example: id: 10000000-0000-4000-8000-000000000009 name: Cliente slug: cliente created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents-categories/{document_category}/profiles: get: tags: - Perfis de documentos summary: Listar perfis — perfis de documentos operationId: business_get_documents_categories_document_category_profiles description: 'Permissões exigidas na chave: (document_profiles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document_category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar perfis — perfis de documentos. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractDocumentProfile' example: - id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000009 name: Comprovante de identificação description: Identificação para cadastro fictício type: PF required: true created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents-profiles: get: tags: - Perfis de documentos summary: Listar — perfis de documentos operationId: business_get_documents_profiles description: 'Permissões exigidas na chave: (document_profiles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — perfis de documentos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDocumentProfile' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000009 name: Comprovante de identificação description: Identificação para cadastro fictício type: PF required: true created_at: '2026-10-20T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/documents-profiles?page=1 last: https://empresa-exemplo.invalid/public-api/v1/documents-profiles?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/documents-profiles?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/documents-profiles per_page: 25 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 25 post: tags: - Perfis de documentos summary: Criar — perfis de documentos operationId: business_post_documents_profiles description: 'Permissões exigidas na chave: (document_profiles.view) e (document_profiles.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Contrato social type: PJ document_category_id: 00000000-0000-4000-8000-000000000001 required: 1 schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 description: description: Explicação da finalidade deste perfil de documentos e de sua utilização no cadastro. type: string nullable: true maxLength: 500 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string required: description: Indica se o documento ou informação é obrigatório para concluir o cadastro. type: integer document_category_id: description: UUID da categoria documental à qual o documento pertence. type: string format: uuid required: - name - type - document_category_id responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractDocumentProfile' example: id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000009 name: Comprovante de identificação description: Identificação para cadastro fictício type: PJ required: true created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents-profiles/{document_profile}: get: tags: - Perfis de documentos summary: Consultar — perfis de documentos operationId: business_get_documents_profiles_document_profile description: 'Permissões exigidas na chave: (document_profiles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document_profile in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — perfis de documentos. content: application/json: schema: $ref: '#/components/schemas/PublicContractDocumentProfile' example: id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000009 name: Comprovante de identificação description: Identificação para cadastro fictício type: PF required: true created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Perfis de documentos summary: Atualizar — perfis de documentos operationId: business_put_documents_profiles_document_profile description: 'Permissões exigidas na chave: (document_profiles.view) e (document_profiles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document_profile in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Contrato social type: PJ document_category_id: 00000000-0000-4000-8000-000000000001 required: 1 schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 description: description: Explicação da finalidade deste perfil de documentos e de sua utilização no cadastro. type: string nullable: true maxLength: 500 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string required: description: Indica se o documento ou informação é obrigatório para concluir o cadastro. type: integer document_category_id: description: UUID da categoria documental à qual o documento pertence. type: string format: uuid required: - name - type - document_category_id responses: '200': description: Atualizar — perfis de documentos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractDocumentProfile' example: id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000009 name: Comprovante de identificação description: Identificação para cadastro fictício type: PJ required: true created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Perfis de documentos summary: Excluir — perfis de documentos operationId: business_delete_documents_profiles_document_profile description: 'Permissões exigidas na chave: (document_profiles.view) e (document_profiles.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document_profile in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — perfis de documentos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents/attachment/{document}: delete: tags: - Documentos summary: Excluir — documentos operationId: business_delete_documents_attachment_document description: 'Permissões exigidas na chave: (documents.view) e (documents.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — documentos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /documents/{document}: delete: tags: - Documentos summary: Excluir — documentos operationId: business_delete_documents_document description: 'Permissões exigidas na chave: (documents.view) e (documents.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: document in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — documentos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /email-types: get: tags: - Localidades e contatos summary: Listar — localidades e contatos operationId: business_get_email_types description: 'Permissões exigidas na chave: (email_types.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — localidades e contatos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractContactType' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa sistema: false links: first: https://empresa-exemplo.invalid/public-api/v1/email-types?page=1 last: https://empresa-exemplo.invalid/public-api/v1/email-types?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/email-types?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/email-types per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 post: tags: - Localidades e contatos summary: Criar — localidades e contatos operationId: business_post_email_types description: 'Permissões exigidas na chave: (email_types.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Consultoria Exemplo description: Consultoria de outubro schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 20 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string maxLength: 100 required: - name - description responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractContactType' example: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa sistema: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /email-types/{email_type}: get: tags: - Localidades e contatos summary: Consultar — localidades e contatos operationId: business_get_email_types_email_type description: 'Permissões exigidas na chave: (email_types.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: email_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — localidades e contatos. content: application/json: schema: $ref: '#/components/schemas/PublicContractContactType' example: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa sistema: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Localidades e contatos summary: Atualizar — localidades e contatos operationId: business_put_email_types_email_type description: 'Permissões exigidas na chave: (email_types.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: email_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo description: Consultoria de outubro schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 20 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string maxLength: 100 required: - name - description responses: '200': description: Atualizar — localidades e contatos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractContactType' example: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa sistema: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' patch: tags: - Localidades e contatos summary: Atualizar — localidades e contatos operationId: business_patch_email_types_email_type description: 'Permissões exigidas na chave: (email_types.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: email_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo description: Consultoria de outubro schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 20 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string maxLength: 100 required: - name - description responses: '200': description: Atualizar — localidades e contatos. A resposta informa o resultado da alteração solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractContactType' example: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa sistema: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Localidades e contatos summary: Excluir — localidades e contatos operationId: business_delete_email_types_email_type description: 'Permissões exigidas na chave: (email_types.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: email_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — localidades e contatos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/accounts/{type}/{id}: get: tags: - Governança summary: Consultar análise da conta — governança operationId: business_get_governance_accounts_type_id description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar análise da conta — governança. content: application/json: schema: type: object properties: eligible: type: boolean description: Indica se o registro atende aos critérios de participação da operação. snapshot: $ref: '#/components/schemas/PublicContractGovernanceSnapshot' description: Retrato dos dados materiais e evidências disponíveis no momento da avaliação. checks: type: object additionalProperties: $ref: '#/components/schemas/PublicContractGovernanceCheck' x-map-reason: AntifraudEngine::evaluate indexa checks pelo código do catálogo de regras; todos os valores seguem baseCheck. description: Verificações realizadas, identificadas pelo código da regra. risk: $ref: '#/components/schemas/PublicContractGovernanceRisk' description: Pontuação, prioridade e cobertura da avaliação de risco. policy_version: type: string description: Versão da política de governança aplicada ao resultado. results: type: array items: $ref: '#/components/schemas/PublicContractGovernanceEvaluation' description: Resultado produzido pela execução ou pelo cálculo consultado. occurrences: type: array items: $ref: '#/components/schemas/PublicContractGovernanceOccurrence' description: Ocorrências de governança identificadas no conjunto ou registro analisado. required: - eligible - snapshot - checks - risk - policy_version - results - occurrences example: eligible: true snapshot: account_type: payable account_id: 30000000-0000-4000-8000-000000000014 evaluated_at: '2026-10-29T12:00:00+00:00' amount: '150.00' balance: '0.00' currency: BRL currency_basis: ERP monetário em BRL; movimentos em outra moeda ficam fora da cobertura. status: paid due_date: '2026-10-20' created_at: '2026-10-01T12:00:00+00:00' party: id: null type: null document: null category_id: null document_number: null document_refs: [] installment: 1 installments: 1 recurrence_id: null documents: missing payments: [] facts: [] limitations: - Cobertura limitada a registros existentes no ERP; ausência de consulta externa não comprova regularidade. - Anexos presentes não equivalem a documentos avaliados. Alocação fiscal por parcela não disponível no vínculo genérico de lote. extraction: null rule_facts: [] revision: e931398104648e05cf4278891aee14dbf1e7a7628d195e4bc4378fe8f230b0ec material_revision: b1b64b54b2cde29c5b2a53930121011d85f0e9e238f3028c3fe7fcd8642cca97 policy_version: 30000000-0000-4000-8000-000000000050 checks: C01: rule_id: C01 rule_code: C01 rule_version: '6' title: Possível repetição de conta summary: Contas ativas distintas têm a mesma parte, documento não vazio, posição da parcela e valor dentro da tolerância, excluídas competências recorrentes distintas. status: disabled priority: low weight: 55 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C02: rule_id: C02 rule_code: C02 rule_version: '6' title: Soma de baixas supera valor do registro OFX summary: A soma dos valores de pagamentos distintos vinculados ao mesmo registro OFX excede seu valor absoluto, com composição completa do grupo e sem repetir vínculos. status: disabled priority: low weight: 80 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C03: rule_id: C03 rule_code: C03 rule_version: '6' title: Estado da conta incompatível com o saldo summary: Conta paga tem saldo positivo acima da tolerância. status: disabled priority: low weight: 50 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C04: rule_id: C04 rule_code: C04 rule_version: '6' title: Sentido bancário incompatível com a conta summary: Movimento direto, confirmado e em BRL tem entrada para conta a pagar ou saída para conta a receber, sem classificação de transferência interna. status: disabled priority: low weight: 70 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C05: rule_id: C05 rule_code: C05 rule_version: '6' title: Valor da baixa difere do movimento bancário summary: O valor bruto registrado da baixa difere do valor absoluto do movimento bancário direto, confirmado em BRL e com correspondência um para um. status: disabled priority: low weight: 65 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C06: rule_id: C06 rule_code: C06 rule_version: '6' title: Saldo registrado difere do cálculo das baixas summary: O saldo da conta não cancelada difere de valor nominal menos pagamentos efetivos, com saldo mínimo zero. status: disabled priority: low weight: 60 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C07: rule_id: C07 rule_code: C07 rule_version: '6' title: Principal baixado acima do valor da conta summary: A soma dos pagamentos efetivos calculada pelo sistema excede o valor nominal da conta além da tolerância. status: disabled priority: low weight: 40 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C08: rule_id: C08 rule_code: C08 rule_version: '6' title: Valor ou parte alterados após pagamento summary: Um registro histórico preservado anterior já continha pagamento e registra valor ou parte diferente do estado atual dentro da janela. status: disabled priority: low weight: 55 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C09: rule_id: C09 rule_code: C09 rule_version: '6' title: Anexo retirado após pagamento summary: Um anexo presente em registro histórico preservado com pagamento deixou de constar no estado atual dentro da janela. status: disabled priority: low weight: 30 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C10: rule_id: C10 rule_code: C10 rule_version: '6' title: Valor acima do padrão comparável summary: O valor atual supera o múltiplo da mediana de uma amostra histórica independente da mesma parte, categoria, direção e moeda. status: disabled priority: low weight: 25 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C11: rule_id: C11 rule_code: C11 rule_version: '6' title: Caixa da baixa difere do movimento bancário summary: O caixa da baixa e o caixa do movimento bancário direto e confirmado estão presentes e são diferentes. status: disabled priority: low weight: 65 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C12: rule_id: C12 rule_code: C12 rule_version: '6' title: Comprovante reutilizado em pagamentos summary: O mesmo identificador do comprovante não vazio está associado a pagamentos de IDs distintos. status: disabled priority: low weight: 30 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' C13: rule_id: C13 rule_code: C13 rule_version: '6' title: Baixa conciliada por justificativa summary: Conta paga em que toda baixa elegível está conciliada e ao menos uma baixa foi conciliada por justificativa do usuário (OFX ou Open Finance), sem vínculo com lançamento do extrato. status: disabled priority: low weight: 70 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' P01: rule_id: P01 rule_code: P01 rule_version: '6' title: Destinatário bancário diferente do cadastro summary: O CPF ou CNPJ íntegro, válido e não mascarado do destinatário bancário difere do documento da parte credora. status: disabled priority: low weight: 70 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' P03: rule_id: P03 rule_code: P03 rule_version: '6' title: Destino bancário compartilhado entre fornecedores summary: 'Fornecedores distintos têm o mesmo destino completo de cadastro: chave Pix de formato identificável ou banco, agência e conta normalizados preservando zeros significativos.' status: disabled priority: low weight: 30 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' P04: rule_id: P04 rule_code: P04 rule_version: '6' title: Pagamento ao próprio operador summary: A pessoa destinatária da conta a pagar coincide com funcionário, estagiário ou sócio associado ao criador da conta ou ao usuário de uma baixa. status: disabled priority: low weight: 10 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' P05: rule_id: P05 rule_code: P05 rule_version: '6' title: Valor do boleto difere do documento summary: O valor fechado de boleto bancário validado e suportado difere do valor nominal equivalente da leitura vigente do documento. status: disabled priority: low weight: 70 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' R02: rule_id: R02 rule_code: R02 rule_version: '6' title: Pagador bancário diferente do cadastro summary: O CPF ou CNPJ íntegro, válido e não mascarado do pagador bancário difere do documento do devedor. status: not_applicable priority: low weight: 30 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' R03: rule_id: R03 rule_code: R03 rule_version: '6' title: Desconto acima do percentual analítico summary: 'O desconto concedido supera o percentual configurado do valor bruto registrado positivo da baixa: desconto vezes 100 maior que valor bruto vezes percentual.' status: not_applicable priority: low weight: 35 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' R06: rule_id: R06 rule_code: R06 rule_version: '6' title: Identificador E2E repetido em instruções summary: Instruções Pix distintas marcadas como liquidadas compartilham o mesmo identificador E2E não vazio. status: not_applicable priority: low weight: 80 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' R07: rule_id: R07 rule_code: R07 rule_version: '6' title: Múltiplas autorizações de cartão no mesmo link summary: O mesmo link de pagamento tem identificadores de transação distintos e não vazios em estado autorizado ou liquidado. status: not_applicable priority: low weight: 75 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' R08: rule_id: R08 rule_code: R08 rule_version: '6' title: Nota fiscal com valor diferente do recebido summary: O valor líquido da NFS-e autorizada vinculada (serviços menos retenções) difere do principal recebido nas contas quitadas ligadas à nota, sem juros e multa, além da tolerância. Desconto (concedido ou obtido) não compõe o principal recebido nem reduz o valor esperado. status: not_applicable priority: low weight: 70 score: 0 policy_version: 30000000-0000-4000-8000-000000000050 facts: [] evidence_refs: [] subject_refs: [] limitations: [] independent_event_key: null material_evidence_fingerprint: null engine: traditional evaluated_at: '2026-10-29T12:00:00+00:00' risk: score: 0 priority: low coverage: evaluated: 0 applicable: 0 not_evaluated: 0 contributions: [] policy_version: 30000000-0000-4000-8000-000000000050 results: [] occurrences: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/accounts/{type}/{id}/analyses: post: tags: - Governança summary: Analisar conta — governança operationId: business_post_governance_accounts_type_id_analyze description: 'Permissões exigidas na chave: (governance.view). Análise exige conta quitada elegível. Conta aberta/provisionada/estornada retorna 404, ainda que o detalhe da conta esteja acessível.' parameters: - name: type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: idempotency_key: integracao-exemplo-2026-001 schema: type: object properties: idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. type: string maxLength: 128 required: - idempotency_key responses: '200': description: Analisar conta — governança. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernanceAnalysis' example: status: completed operation_id: null requested_engine: ai effective_engine: traditional fallback_reason: disabled evaluation_id: 30000000-0000-4000-8000-000000000040 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Tipo ou identificador de rota malformado, recusado pelas restrições de tipo (payable/receivable) e UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /governance/dashboard: get: tags: - Governança summary: Consultar painel — governança operationId: business_get_governance_dashboard description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Por direção, além de reconciliation, documentation, payment_evidence e fiscal, devolve review (count, total_count, percent: contas quitadas do período sem ocorrência aberta; percent nulo sem contas quitadas) e documentation_missing (count, total_count: contas do período sem nenhum anexo, nem na conta nem nas baixas). Também devolve reconciled (count, total_count: contas com baixa elegível cujas baixas estão todas conciliadas, mesmo critério da trava de ocorrência; reconciliation permanece inalterado).' parameters: - description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: from in: query required: false schema: type: string format: date - description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: to in: query required: false schema: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Tipo de relatório de governança a consultar. name: report in: query required: false schema: type: string description: Tipo de relatório de governança a consultar. - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string enum: - new - seen - analyzed - description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. name: account_type in: query required: false schema: type: string enum: - payable - receivable - description: Código da regra de governança cujas ocorrências serão consultadas. name: rule_code in: query required: false schema: type: string maxLength: 80 - description: Prioridade das ocorrências a incluir na consulta. name: priority in: query required: false schema: type: string enum: - low - medium - high - critical - description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. name: outcome in: query required: false schema: type: string enum: - legitimate - corrected - inconclusive - confirmed - description: Identificador do usuário responsável por acompanhar a ocorrência. name: assigned_to in: query required: false schema: type: string format: uuid responses: '200': description: Consultar painel — governança. content: application/json: schema: type: object properties: period: type: object properties: to: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. currency: type: string description: Código da moeda da movimentação, como BRL para real brasileiro. from: type: string format: date description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. required: - from - to - currency description: Período de referência dos dados apresentados. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. payable: type: object properties: reconciliation: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. buckets: type: object properties: full: type: integer description: Registros integralmente cobertos pelo critério de conciliação. partial: type: integer description: Registros com cobertura ou conciliação parcial. none: type: integer description: Registros sem cobertura identificada pelo critério apresentado. undetermined: type: integer description: Registros cuja cobertura não pôde ser determinada. required: - full - partial - none - undetermined description: Distribuição dos registros entre estados de cobertura ou conciliação. provenance: oneOf: - type: object additionalProperties: type: string x-map-reason: Metrics::summarize soma valores por bank_source dos pagamentos elegíveis. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Procedência da informação utilizada na sugestão ou cálculo. exclusions: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. reasons: type: array items: type: string description: Motivo ou motivos que explicam a decisão apresentada. required: - count - amount - reasons description: Registros excluídos da base de cálculo e seus motivos. undetermined_amount: type: string description: Valor cuja cobertura não pôde ser determinada com as evidências existentes. required: - count - total_count - amount - total_amount - percent_count - percent_amount - buckets - provenance - exclusions - undetermined_amount description: Resumo da cobertura de conciliação ou do vínculo registrado. documentation: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. evaluated_count: type: integer description: Quantidade de registros com avaliação disponível. required: - count - total_count - amount - total_amount - percent_count - percent_amount - evaluated_count description: Situação da documentação da obrigação financeira. payment_evidence: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. buckets: type: object properties: receipt: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. bank: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Dados da instituição financeira vinculada ao recurso. both: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Pagamentos que possuem evidência bancária e comprovante compatível. none: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Registros sem cobertura identificada pelo critério apresentado. undetermined: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Registros cuja cobertura não pôde ser determinada. required: - receipt - bank - both - none - undetermined description: Distribuição dos registros entre estados de cobertura ou conciliação. required: - count - total_count - amount - total_amount - percent_count - percent_amount - buckets description: Indicadores de comprovação das liquidações por banco e recibo. fiscal: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. undetermined_principal_count: type: integer description: Quantidade de pagamentos cuja parcela principal não pôde ser determinada. undetermined_amount: type: string description: Valor cuja cobertura não pôde ser determinada com as evidências existentes. uncovered_amount: type: string description: Valor da base fiscal que permanece sem cobertura identificada. determined_base: type: string description: Parcela da base monetária cuja cobertura fiscal pôde ser determinada. required: - count - total_count - amount - total_amount - percent_count - percent_amount - undetermined_principal_count - undetermined_amount - uncovered_amount - determined_base description: Indicadores de cobertura fiscal do conjunto analisado. reconciled: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. required: - count - total_count description: Indica se a conta já foi conciliada. review: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. percent: type: number nullable: true description: Percentual calculado para o indicador apresentado. required: - count - total_count - percent description: Indicadores ou registro da conferência humana realizada. documentation_missing: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. required: - count - total_count description: Contas sem documento da obrigação ou comprovante registrado. required: - reconciliation - documentation - payment_evidence - fiscal - reconciled - review - documentation_missing description: Contas a pagar ou indicadores dessa direção financeira. receivable: type: object properties: reconciliation: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. buckets: type: object properties: full: type: integer description: Registros integralmente cobertos pelo critério de conciliação. partial: type: integer description: Registros com cobertura ou conciliação parcial. none: type: integer description: Registros sem cobertura identificada pelo critério apresentado. undetermined: type: integer description: Registros cuja cobertura não pôde ser determinada. required: - full - partial - none - undetermined description: Distribuição dos registros entre estados de cobertura ou conciliação. provenance: oneOf: - type: object additionalProperties: type: string x-map-reason: Metrics::summarize soma valores por bank_source dos pagamentos elegíveis. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Procedência da informação utilizada na sugestão ou cálculo. exclusions: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. reasons: type: array items: type: string description: Motivo ou motivos que explicam a decisão apresentada. required: - count - amount - reasons description: Registros excluídos da base de cálculo e seus motivos. undetermined_amount: type: string description: Valor cuja cobertura não pôde ser determinada com as evidências existentes. required: - count - total_count - amount - total_amount - percent_count - percent_amount - buckets - provenance - exclusions - undetermined_amount description: Resumo da cobertura de conciliação ou do vínculo registrado. documentation: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. evaluated_count: type: integer description: Quantidade de registros com avaliação disponível. required: - count - total_count - amount - total_amount - percent_count - percent_amount - evaluated_count description: Situação da documentação da obrigação financeira. payment_evidence: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. buckets: type: object properties: receipt: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. bank: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Dados da instituição financeira vinculada ao recurso. both: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Pagamentos que possuem evidência bancária e comprovante compatível. none: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Registros sem cobertura identificada pelo critério apresentado. undetermined: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - count - amount description: Registros cuja cobertura não pôde ser determinada. required: - receipt - bank - both - none - undetermined description: Distribuição dos registros entre estados de cobertura ou conciliação. required: - count - total_count - amount - total_amount - percent_count - percent_amount - buckets description: Indicadores de comprovação das liquidações por banco e recibo. fiscal: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. undetermined_principal_count: type: integer description: Quantidade de pagamentos cuja parcela principal não pôde ser determinada. undetermined_amount: type: string description: Valor cuja cobertura não pôde ser determinada com as evidências existentes. uncovered_amount: type: string description: Valor da base fiscal que permanece sem cobertura identificada. determined_base: type: string description: Parcela da base monetária cuja cobertura fiscal pôde ser determinada. required: - count - total_count - amount - total_amount - percent_count - percent_amount - undetermined_principal_count - undetermined_amount - uncovered_amount - determined_base description: Indicadores de cobertura fiscal do conjunto analisado. reconciled: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. required: - count - total_count description: Indica se a conta já foi conciliada. review: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. percent: type: number nullable: true description: Percentual calculado para o indicador apresentado. required: - count - total_count - percent description: Indicadores ou registro da conferência humana realizada. documentation_missing: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. required: - count - total_count description: Contas sem documento da obrigação ou comprovante registrado. required: - reconciliation - documentation - payment_evidence - fiscal - reconciled - review - documentation_missing description: Contas a receber ou indicadores dessa direção financeira. occurrences: type: object properties: new: type: integer description: Quantidade de ocorrências ainda sem revisão registrada. seen: type: integer description: Quantidade de ocorrências que já receberam a marcação de visualizadas. analyzed: type: integer description: Quantidade ou estado das ocorrências cuja análise foi registrada, conforme o contexto. required: - new - seen - analyzed description: Ocorrências de governança identificadas no conjunto ou registro analisado. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. availability: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. data_ready: type: boolean description: Indica se a instituição já disponibilizou dados para consulta. last_checked_at: type: string nullable: true format: date-time description: Instante da consulta mais recente ao estado da conexão. required: - id - provider - data_ready - last_checked_at description: Registros de disponibilidade das conexões consultadas pela governança. risk_summary: type: object properties: open: type: integer description: Quantidade de ocorrências abertas ou estado aberto do recurso, conforme a representação. high_priority: type: integer description: Quantidade de ocorrências abertas classificadas como altas ou críticas. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. coverage: type: object properties: evaluated: type: integer description: Quantidade de verificações efetivamente avaliadas. applicable: type: integer description: Quantidade de verificações aplicáveis ao universo analisado. not_evaluated: type: integer description: Quantidade de verificações aplicáveis que não puderam ser avaliadas. required: - evaluated - applicable - not_evaluated description: Cobertura efetivamente medida na leitura ou avaliação. coverage_evaluated_at: type: string nullable: true format: date-time description: Instante da avaliação mais recente incluída no cálculo da cobertura. required: - open - high_priority - amount - coverage - coverage_evaluated_at description: Resumo das ocorrências abertas, valores envolvidos e cobertura medida. rule_counts: type: object properties: total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. payable: type: integer description: Contas a pagar ou indicadores dessa direção financeira. receivable: type: integer description: Contas a receber ou indicadores dessa direção financeira. enabled: type: integer description: Ativa ou desativa o recurso configurado nesta operação. required: - total - payable - receivable - enabled description: Quantidades de regras totais, habilitadas e aplicáveis por direção financeira. required: - period - updated_at - payable - receivable - occurrences - limitations - availability - risk_summary - rule_counts example: period: from: '2026-10-01' to: '2026-10-29' currency: BRL updated_at: '2026-10-29T12:00:00+00:00' payable: reconciliation: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null buckets: full: 0 partial: 0 none: 0 undetermined: 0 provenance: [] exclusions: count: 0 amount: '0.00' reasons: - internal_transfer - money undetermined_amount: '0.00' documentation: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null evaluated_count: 0 payment_evidence: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null buckets: receipt: count: 0 amount: '0.00' bank: count: 0 amount: '0.00' both: count: 0 amount: '0.00' none: count: 0 amount: '0.00' undetermined: count: 0 amount: '0.00' fiscal: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null undetermined_principal_count: 0 undetermined_amount: '0.00' uncovered_amount: '0.00' determined_base: '0.00' reconciled: count: 0 total_count: 0 review: count: 0 total_count: 0 percent: null documentation_missing: count: 0 total_count: 0 receivable: reconciliation: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null buckets: full: 0 partial: 0 none: 0 undetermined: 0 provenance: [] exclusions: count: 0 amount: '0.00' reasons: - internal_transfer - money undetermined_amount: '0.00' documentation: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null evaluated_count: 0 payment_evidence: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null buckets: receipt: count: 0 amount: '0.00' bank: count: 0 amount: '0.00' both: count: 0 amount: '0.00' none: count: 0 amount: '0.00' undetermined: count: 0 amount: '0.00' fiscal: count: 0 total_count: 0 amount: '0.00' total_amount: '0.00' percent_count: null percent_amount: null undetermined_principal_count: 0 undetermined_amount: '0.00' uncovered_amount: '0.00' determined_base: '0.00' reconciled: count: 0 total_count: 0 review: count: 0 total_count: 0 percent: null documentation_missing: count: 0 total_count: 0 occurrences: new: 0 seen: 0 analyzed: 0 limitations: - Quantidades de conciliação consideram contas com liquidação no período. - Documentos e comprovantes sem avaliação não contam como compatíveis. - Alocação fiscal genérica de lote permanece indeterminada. - Cobertura reflete as avaliações registradas na configuração atual. Mudanças em contas relacionadas e passagem do tempo serão verificadas no próximo reprocessamento, inclusive na rotina diária. availability: [] risk_summary: open: 0 high_priority: 0 amount: '0.00' coverage: evaluated: 0 applicable: 0 not_evaluated: 0 coverage_evaluated_at: null rule_counts: total: 22 payable: 17 receivable: 18 enabled: 21 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/occurrences: get: tags: - Governança summary: Listar ocorrências — governança operationId: business_get_governance_occurrences description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: from in: query required: false schema: type: string format: date - description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: to in: query required: false schema: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Tipo de relatório de governança a consultar. name: report in: query required: false schema: type: string description: Tipo de relatório de governança a consultar. - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string enum: - new - seen - analyzed - description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. name: account_type in: query required: false schema: type: string enum: - payable - receivable - description: Código da regra de governança cujas ocorrências serão consultadas. name: rule_code in: query required: false schema: type: string maxLength: 80 - description: Prioridade das ocorrências a incluir na consulta. name: priority in: query required: false schema: type: string enum: - low - medium - high - critical - description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. name: outcome in: query required: false schema: type: string enum: - legitimate - corrected - inconclusive - confirmed - description: Identificador do usuário responsável por acompanhar a ocorrência. name: assigned_to in: query required: false schema: type: string format: uuid responses: '200': description: Listar ocorrências — governança. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractGovernanceOccurrenceListing' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total example: current_page: 1 data: - id: 30000000-0000-4000-8000-000000000013 account_type: payable account_id: 30000000-0000-4000-8000-000000000014 engine: traditional rule_code: C01 rule_version: legacy independent_event_key: 8f8a478c70764a892f6aec747c85868d4dde16c9b49fb4010fc2dabd628a8a80 fingerprint: a4011013aed2cc80db9ca32bbaa5cdf3491c187eb4cfe2014bf870d327aa70d7 previous_occurrence_id: null evaluation_id: 30000000-0000-4000-8000-000000000040 title: Conferir comprovante summary: Conferência pendente do documento de exemplo. amount: '150.00' score: 55 weight: 55 priority: high policy_version: default evidence: [] limitations: [] created_at: '2026-10-29T12:00:00.000000Z' status: new outcome: null assigned_to: null events: [] triggered_rules: [] original_score: 0 original_priority: medium original_policy_version: legacy score_measured: true ordering_note: null rule_codes: - C01 effective_rule_codes: - C01 active_rule_codes: - C01 first_review_at: null seconds_to_first_review: null first_page_url: https://empresa-exemplo.invalid/public-api/v1/governance/occurrences?page=1 from: 1 last_page: 1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/governance/occurrences?page=1 links: - url: null label: '« Previous' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/governance/occurrences?page=1 label: '1' page: 1 active: true - url: null label: Next » page: null active: false next_page_url: null path: https://empresa-exemplo.invalid/public-api/v1/governance/occurrences per_page: 25 prev_page_url: null to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/occurrences/{id}: get: tags: - Governança summary: Consultar ocorrência — governança operationId: business_get_governance_occurrences_id description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar ocorrência — governança. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernanceOccurrence' example: id: 30000000-0000-4000-8000-000000000013 account_type: payable account_id: 30000000-0000-4000-8000-000000000014 engine: traditional rule_code: C01 rule_version: legacy independent_event_key: 8f8a478c70764a892f6aec747c85868d4dde16c9b49fb4010fc2dabd628a8a80 fingerprint: a4011013aed2cc80db9ca32bbaa5cdf3491c187eb4cfe2014bf870d327aa70d7 previous_occurrence_id: null evaluation_id: 30000000-0000-4000-8000-000000000040 title: Conferir comprovante summary: Conferência pendente do documento de exemplo. amount: '150.00' score: 55 weight: 55 priority: high policy_version: default evidence: [] limitations: [] created_at: '2026-10-29T12:00:00.000000Z' status: new outcome: null assigned_to: null events: [] triggered_rules: [] original_score: 0 original_priority: medium original_policy_version: legacy score_measured: true ordering_note: null rule_codes: - C01 effective_rule_codes: - C01 active_rule_codes: - C01 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/occurrences/{id}/status: post: tags: - Governança summary: Revisar — governança operationId: business_post_governance_occurrences_id_status description: 'Permissões exigidas na chave: (governance.view) e (governance.review). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: status: seen schema: type: object properties: status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `seen`, `analyzed`.' type: string enum: - seen - analyzed note: description: Anotação de acompanhamento ou justificativa da decisão registrada. type: string nullable: true maxLength: 5000 outcome: type: string nullable: true enum: - legitimate - corrected - inconclusive - confirmed description: 'Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. Opções: `legitimate`, `corrected`, `inconclusive`, `confirmed`.' assigned_to: description: Identificador do usuário responsável por acompanhar a ocorrência. Identificação no formato UUID. type: string format: uuid nullable: true required: - status responses: '200': description: Revisar — governança. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernanceOccurrence' example: id: 30000000-0000-4000-8000-000000000013 account_type: payable account_id: 30000000-0000-4000-8000-000000000014 engine: traditional rule_code: C01 rule_version: legacy independent_event_key: 8f8a478c70764a892f6aec747c85868d4dde16c9b49fb4010fc2dabd628a8a80 fingerprint: a4011013aed2cc80db9ca32bbaa5cdf3491c187eb4cfe2014bf870d327aa70d7 previous_occurrence_id: null evaluation_id: 30000000-0000-4000-8000-000000000040 title: Conferir comprovante summary: Conferência pendente do documento de exemplo. amount: '150.00' score: 55 weight: 55 priority: high policy_version: default evidence: [] limitations: [] created_at: '2026-10-29T12:00:00.000000Z' status: seen outcome: null assigned_to: null events: - id: 30000000-0000-4000-8000-000000000041 occurrence_id: 30000000-0000-4000-8000-000000000013 actor_id: 30000000-0000-4000-8000-000000000042 status: seen note: Conferência iniciada. outcome: null assigned_to: null created_at: '2026-10-29T12:00:00.000000Z' triggered_rules: [] original_score: 0 original_priority: medium original_policy_version: legacy score_measured: true ordering_note: null rule_codes: - C01 effective_rule_codes: - C01 active_rule_codes: - C01 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /governance/policy: put: tags: - Governança summary: Publicar política — governança operationId: business_put_governance_policy description: 'Permissões exigidas na chave: (governance.view) e (governance.configure). Publica somente quando o mapa normalizado de regras muda. Com mapa idêntico devolve a política atual, preservando version, created_at e note; alterar apenas note não publica uma revisão. expected_version protege contra concorrência e versão desatualizada gera 409.' requestBody: required: true content: application/json: example: rules: C01: enabled: true weight: 55 parameters: amount_tolerance: '0.01' overrides: [] C02: enabled: true weight: 80 parameters: amount_tolerance: '0.01' overrides: [] C03: enabled: true weight: 50 parameters: amount_tolerance: '0.01' overrides: [] C04: enabled: true weight: 70 parameters: [] overrides: [] C05: enabled: true weight: 65 parameters: amount_tolerance: '0.01' overrides: [] C06: enabled: true weight: 60 parameters: amount_tolerance: '0.01' overrides: [] C07: enabled: true weight: 40 parameters: amount_tolerance: '0.01' overrides: [] C08: enabled: true weight: 55 parameters: window_days: 30 overrides: [] C09: enabled: true weight: 30 parameters: window_days: 30 overrides: [] C10: enabled: true weight: 25 parameters: lookback_days: 180 min_samples: 5 multiplier: '3.00' overrides: [] C11: enabled: true weight: 65 parameters: [] overrides: [] C12: enabled: true weight: 30 parameters: [] overrides: [] C13: enabled: true weight: 70 parameters: [] overrides: [] P01: enabled: true weight: 70 parameters: [] overrides: [] P03: enabled: true weight: 30 parameters: [] overrides: [] P04: enabled: false weight: 10 parameters: [] overrides: [] P05: enabled: true weight: 70 parameters: amount_tolerance: '0.01' overrides: [] R02: enabled: true weight: 30 parameters: [] overrides: [] R03: enabled: true weight: 35 parameters: max_discount_percent: '20.00' overrides: [] R06: enabled: true weight: 80 parameters: [] overrides: [] R07: enabled: true weight: 75 parameters: [] overrides: [] R08: enabled: true weight: 70 parameters: amount_tolerance: '1.00' overrides: [] expected_version: default note: Conferência dos parâmetros do catálogo. schema: type: object properties: expected_version: description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. type: string maxLength: 64 rules: description: Configuração completa por código das regras do catálogo de governança; obtenha o catálogo atual antes de publicar ou simular. type: object additionalProperties: true note: description: Anotação de acompanhamento ou justificativa da decisão registrada. type: string nullable: true maxLength: 2000 required: - expected_version - rules responses: '200': description: Publicar política — governança. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernancePolicy' example: rules: C01: enabled: true weight: 55 parameters: amount_tolerance: '0.0100' overrides: [] C02: enabled: true weight: 80 parameters: amount_tolerance: '0.0100' overrides: [] C03: enabled: true weight: 50 parameters: amount_tolerance: '0.0100' overrides: [] C04: enabled: true weight: 70 parameters: [] overrides: [] C05: enabled: true weight: 65 parameters: amount_tolerance: '0.0100' overrides: [] C06: enabled: true weight: 60 parameters: amount_tolerance: '0.0100' overrides: [] C07: enabled: true weight: 40 parameters: amount_tolerance: '0.0100' overrides: [] C08: enabled: true weight: 55 parameters: window_days: 30 overrides: [] C09: enabled: true weight: 30 parameters: window_days: 30 overrides: [] C10: enabled: true weight: 25 parameters: lookback_days: 180 min_samples: 5 multiplier: '3.0000' overrides: [] C11: enabled: true weight: 65 parameters: [] overrides: [] C12: enabled: true weight: 30 parameters: [] overrides: [] C13: enabled: true weight: 70 parameters: [] overrides: [] P01: enabled: true weight: 70 parameters: [] overrides: [] P03: enabled: true weight: 30 parameters: [] overrides: [] P04: enabled: false weight: 10 parameters: [] overrides: [] P05: enabled: true weight: 70 parameters: amount_tolerance: '0.0100' overrides: [] R02: enabled: true weight: 30 parameters: [] overrides: [] R03: enabled: true weight: 35 parameters: max_discount_percent: '20.0000' overrides: [] R06: enabled: true weight: 80 parameters: [] overrides: [] R07: enabled: true weight: 75 parameters: [] overrides: [] R08: enabled: true weight: 70 parameters: amount_tolerance: '1.0000' overrides: [] version: 30000000-0000-4000-8000-000000000060 created_at: '2026-10-29T12:00:00.000000Z' actor_id: 30000000-0000-4000-8000-000000000042 note: Publicação inicial da política de exemplo. actor_name: Pessoa Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/policy/history: get: tags: - Governança summary: Consultar histórico — governança operationId: business_get_governance_policy_history description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar histórico — governança. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractGovernancePolicy' example: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/reports: get: tags: - Governança summary: Consultar relatórios — governança operationId: business_get_governance_reports description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: from in: query required: false schema: type: string format: date - description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: to in: query required: false schema: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Tipo de relatório de governança a consultar. name: report in: query required: false schema: type: string description: Tipo de relatório de governança a consultar. - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string enum: - new - seen - analyzed - description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. name: account_type in: query required: false schema: type: string enum: - payable - receivable - description: Código da regra de governança cujas ocorrências serão consultadas. name: rule_code in: query required: false schema: type: string maxLength: 80 - description: Prioridade das ocorrências a incluir na consulta. name: priority in: query required: false schema: type: string enum: - low - medium - high - critical - description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. name: outcome in: query required: false schema: type: string enum: - legitimate - corrected - inconclusive - confirmed - description: Identificador do usuário responsável por acompanhar a ocorrência. name: assigned_to in: query required: false schema: type: string format: uuid responses: '200': description: Consultar relatórios — governança. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractGovernanceReportRow' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. report: type: string description: Código do relatório de consulta selecionado. period: type: object properties: from: type: string format: date description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. to: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. required: - from - to description: Período de referência dos dados apresentados. totals: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. fiscal: type: object properties: count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. total_amount: type: string description: Valor total calculado para o conjunto apresentado. percent_count: type: string nullable: true description: Percentual de registros que atendem ao critério do indicador. percent_amount: type: string nullable: true description: Percentual monetário coberto em relação à base mensurável. undetermined_principal_count: type: integer description: Quantidade de pagamentos cuja parcela principal não pôde ser determinada. undetermined_amount: type: string description: Valor cuja cobertura não pôde ser determinada com as evidências existentes. uncovered_amount: type: string description: Valor da base fiscal que permanece sem cobertura identificada. determined_base: type: string description: Parcela da base monetária cuja cobertura fiscal pôde ser determinada. required: - count - total_count - amount - total_amount - percent_count - percent_amount - undetermined_principal_count - undetermined_amount - uncovered_amount - determined_base description: Indicadores de cobertura fiscal do conjunto analisado. credits: type: integer description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. unmeasured_count: type: integer description: Quantidade de análises cujo consumo de créditos não pôde ser medido. measured_since: type: string nullable: true format: date-time description: Início do histórico efetivamente medido pela funcionalidade. distinct_accounts: type: integer description: Quantidade de contas distintas consideradas no resultado. required: - count - amount description: Totais consolidados dos registros apresentados. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total - report - period - totals - limitations - status example: current_page: 1 data: [] first_page_url: https://empresa-exemplo.invalid/public-api/v1/governance/reports?page=1 from: null last_page: 1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/governance/reports?page=1 links: - url: null label: '« Previous' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/governance/reports?page=1 label: '1' active: true page: 1 - url: null label: Next » active: false page: null next_page_url: null path: https://empresa-exemplo.invalid/public-api/v1/governance/reports per_page: 25 prev_page_url: null to: null total: 0 report: R01 period: from: '2026-10-01' to: '2026-10-29' totals: count: 0 amount: '0.00' limitations: - Intervalos bancários não comprovam cobertura integral do período. status: partial '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/reports/catalog: get: tags: - Governança summary: Consultar catálogo de relatórios — governança operationId: business_get_governance_reports_catalog description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar catálogo de relatórios — governança. content: application/json: schema: type: array items: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. read_only: type: boolean description: Indica que a consulta não altera registros financeiros. required: - id - name - status - limitations - read_only example: - id: R01 name: Liquidações sem conciliação status: partial limitations: - Intervalos bancários não comprovam cobertura integral do período. read_only: true - id: R02 name: Procedência e qualidade da conciliação status: partial limitations: - Procedência não é prova de legitimidade; grupos sem alocação ficam indeterminados. read_only: true - id: R03 name: Documentação da obrigação status: partial limitations: - Presença de anexo não comprova compatibilidade documental. read_only: true - id: R04 name: Comprovação de liquidação status: partial limitations: - Comprovantes não avaliados permanecem separados de ausência de pagamento. read_only: true - id: R05 name: Cobertura fiscal identificada status: partial limitations: - Relação genérica com lote fiscal não permite alocar por parcela. read_only: true - id: R06 name: Cobertura fiscal parcial e pendências status: partial limitations: - Sem alocação fiscal explícita não há diferença comprovada. read_only: true - id: R07 name: Valores fora do padrão comparável status: partial limitations: - Amostra independente por parte, natureza e moeda; parcelas não multiplicam a amostra. read_only: true - id: R08 name: Componentes financeiros fora do padrão status: partial limitations: - Faltam itens, unidade e base comparável estruturados. read_only: true - id: R09 name: Prazos incomuns status: partial limitations: - Falta política de tolerância e cadeia de renegociação estruturada. read_only: true - id: R10 name: Destinos novos ou alterados status: partial limitations: - Falta histórico versionado de destinos autorizados. read_only: true - id: R11 name: Concentração e frequência por parte status: available limitations: - Volume observado não mede volume de serviço ou sazonalidade. read_only: true - id: R12 name: Identidade e papel documental status: partial limitations: - Identidades ausentes ou mascaradas não comprovam incompatibilidade. read_only: true - id: R13 name: Datas e competência status: partial limitations: - Vencimento futuro é normal; emissão e competência documental não foram inferidas. read_only: true - id: R14 name: Banco sem vínculo e obrigação em aberto status: partial limitations: - Coincidências são candidatos para investigação, nunca conciliação automática. read_only: true - id: R15 name: Alterações materiais após conciliação status: partial limitations: - Compara revisões observadas pela Governança; histórico anterior não medido. read_only: true - id: R16 name: Frequência de alterações materiais status: partial limitations: - Conta revisões materiais da Governança; histórico anterior não medido. read_only: true - id: R17 name: Candidatos a duplicidade documental status: partial limitations: - Reuso de anexo ou número não prova duplicidade de obrigação. read_only: true - id: R18 name: Referência contratual e documentação complementar status: not_evaluated limitations: - Falta política contratual estruturada e vigente. read_only: true - id: R19 name: Contradições no conjunto documental status: partial limitations: - Compara somente campos do mesmo papel e identidade comprovados. read_only: true - id: R20 name: Cobertura cadastral da parte status: available limitations: - Cadastro incompleto não implica irregularidade. read_only: true - id: R21 name: Exclusões e classificações status: partial limitations: - Reembolso e adiantamento não são inferidos de texto livre. read_only: true - id: R22 name: Histórico e tempo de revisão status: available limitations: - Analisada não significa regular; valores envolvidos não são prejuízo. read_only: true - id: R23 name: Cobertura técnica da extração status: partial limitations: - Dados de extração disponíveis no farol a pagar; sem processamento adicional. read_only: true - id: R24 name: Consumo Premium e fallback status: partial limitations: - Somente análises registradas desde a implantação; IA não implica conformidade. read_only: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/rules: get: tags: - Governança summary: Consultar regras — governança operationId: business_get_governance_rules description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar regras — governança. content: application/json: schema: type: object properties: rules: type: array items: $ref: '#/components/schemas/PublicContractGovernanceRuleDefinition' description: Regras configuradas para analisar ou processar os registros desta operação. policy: $ref: '#/components/schemas/PublicContractGovernancePolicy' description: Configuração de governança usada na avaliação. required: - rules - policy example: rules: - code: C01 title: Possível repetição de conta description: Contas ativas distintas têm a mesma parte, documento não vazio, posição da parcela e valor dentro da tolerância, excluídas competências recorrentes distintas. category: shared account_types: - payable - receivable default_enabled: true default_weight: 55 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Parte exata, documento normalizado e valor decimal - Parcela e competência das contas comparadas exceptions: - Parcelas distintas - Competências recorrentes distintas - Renegociação ou substituição legítima examples: alert: Duas contas do mesmo fornecedor repetem documento, parcela e R$ 500. legitimate: Duas mensalidades de R$ 500 pertencem a competências distintas. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C02 title: Soma de baixas supera valor do registro OFX description: A soma dos valores de pagamentos distintos vinculados ao mesmo registro OFX excede seu valor absoluto, com composição completa do grupo e sem repetir vínculos. category: shared account_types: - payable - receivable default_enabled: true default_weight: 80 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Registro OFX e seu valor - Todos os pagamentos vinculados, identificados por ID exceptions: - Vínculos repetidos do mesmo pagamento - Rateio cuja soma cabe no registro examples: alert: Um registro OFX de 500 está ligado a pagamentos distintos de 400 e 300. legitimate: Dois vínculos do mesmo pagamento de 500 são contados uma vez. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx - https://www.bcb.gov.br/meubc/faqs/p/vitima-fez-um-pix-e-caiu-em-um-golpe legacy_rule_codes: [] - code: C03 title: Estado da conta incompatível com o saldo description: Conta paga tem saldo positivo acima da tolerância. category: shared account_types: - payable - receivable default_enabled: true default_weight: 50 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Estado e saldo persistidos exceptions: - Conta cancelada - Atualização concorrente ou correção de migração examples: alert: A conta está marcada como paga e conserva saldo de R$ 200. legitimate: Uma conta cancelada conserva seu histórico de valores. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C04 title: Sentido bancário incompatível com a conta description: Movimento direto, confirmado e em BRL tem entrada para conta a pagar ou saída para conta a receber, sem classificação de transferência interna. category: shared account_types: - payable - receivable default_enabled: true default_weight: 70 parameters: [] required_data: - Movimento direto confirmado, em reais e com direção explícita - Natureza, disposição operacional e caixa para excluir transferências exceptions: - Transferência interna identificada - Movimento pendente ou ignorado examples: alert: Uma conta a pagar está vinculada a uma entrada bancária confirmada. legitimate: Uma transferência entre caixas internos é excluída. source_urls: - https://www.bcb.gov.br/meubc/faqs/p/vitima-fez-um-pix-e-caiu-em-um-golpe - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C05 title: Valor da baixa difere do movimento bancário description: O valor bruto registrado da baixa difere do valor absoluto do movimento bancário direto, confirmado em BRL e com correspondência um para um. category: shared account_types: - payable - receivable default_enabled: true default_weight: 65 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Valor bruto registrado da baixa e movimento direto confirmado em BRL - Correspondência completa de um pagamento para um movimento exceptions: - Movimento agregado ou rateado não comparável - Tarifa ou ajuste explica diferença operacional examples: alert: Baixa bruta de R$ 550 está ligada diretamente a movimento de R$ 500. legitimate: Um movimento agregado de R$ 1.000 atende duas baixas e não permite comparação direta. source_urls: - https://www.bcb.gov.br/meubc/faqs/p/vitima-fez-um-pix-e-caiu-em-um-golpe - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C06 title: Saldo registrado difere do cálculo das baixas description: O saldo da conta não cancelada difere de valor nominal menos pagamentos efetivos, com saldo mínimo zero. category: shared account_types: - payable - receivable default_enabled: true default_weight: 60 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Valor nominal e saldo persistido - Componentes completos do cálculo oficial do saldo exceptions: - Pagamento associado a várias contas sem rateio conhecido - Atualização ou migração em regularização examples: alert: Valor nominal de R$ 500 e principal baixado de R$ 200 deixam saldo registrado de R$ 100. legitimate: Juros e descontos são tratados pela mesma fórmula usada pelo sistema. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C07 title: Principal baixado acima do valor da conta description: A soma dos pagamentos efetivos calculada pelo sistema excede o valor nominal da conta além da tolerância. category: shared account_types: - payable - receivable default_enabled: true default_weight: 40 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Valor nominal da conta - Pagamentos efetivos com todos os componentes e alocação conhecida exceptions: - Recebimento a maior admitido pelo sistema - Excesso destinado a regularização operacional examples: alert: Uma conta de R$ 1.000 acumula R$ 1.100 de principal efetivo. legitimate: O cliente pagou a maior e o excedente será tratado pela equipe. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C08 title: Valor ou parte alterados após pagamento description: Um registro histórico preservado anterior já continha pagamento e registra valor ou parte diferente do estado atual dentro da janela. category: shared account_types: - payable - receivable default_enabled: true default_weight: 55 parameters: window_days: label: Janela de alterações type: integer default: 30 min: 1 max: 730 unit: dias required_data: - Registro histórico preservado, comparável e com pagamento - Valor e identidade da parte antes e depois exceptions: - Correção legítima do cadastro ou do valor - Ausência de registro histórico anterior impede avaliação examples: alert: Após registro histórico com pagamento, o valor passou de R$ 1.000 para R$ 2.000. legitimate: A equipe corrigiu o fornecedor selecionado equivocadamente. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C09 title: Anexo retirado após pagamento description: Um anexo presente em registro histórico preservado com pagamento deixou de constar no estado atual dentro da janela. category: shared account_types: - payable - receivable default_enabled: true default_weight: 30 parameters: window_days: label: Janela de retirada type: integer default: 30 min: 1 max: 730 unit: dias required_data: - Registro histórico preservado com pagamento e referências dos anexos - Identificadores dos anexos atuais exceptions: - Substituição de arquivo ilegível - Remoção legítima de anexo incorreto examples: alert: O identificador do comprovante presente após o pagamento não consta mais na conta. legitimate: Um comprovante ilegível foi substituído por arquivo correto. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C10 title: Valor acima do padrão comparável description: O valor atual supera o múltiplo da mediana de uma amostra histórica independente da mesma parte, categoria, direção e moeda. category: shared account_types: - payable - receivable default_enabled: true default_weight: 25 parameters: lookback_days: label: Histórico comparável type: integer default: 180 min: 7 max: 1095 unit: dias min_samples: label: Amostra mínima independente type: integer default: 5 min: 5 max: 1000 unit: observações multiplier: label: Múltiplo da mediana type: decimal default: '3.00' min: '1.10' max: '100.00' unit: vezes required_data: - Histórico comparável na janela - Amostra mínima sem multiplicar parcelas ou recorrências do mesmo documento exceptions: - Sazonalidade ou alteração real de volume - Amostra insuficiente impede avaliação examples: alert: Com mediana de R$ 100 em amostra suficiente, a conta de R$ 1.000 supera o múltiplo 3. legitimate: Uma compra anual tem valor maior que as compras mensais. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C11 title: Caixa da baixa difere do movimento bancário description: O caixa da baixa e o caixa do movimento bancário direto e confirmado estão presentes e são diferentes. category: shared account_types: - payable - receivable default_enabled: true default_weight: 65 parameters: [] required_data: - Identificador do caixa da baixa preenchido - Identificador do caixa do movimento preenchido e estado confirmado exceptions: - Vínculo ao caixa incorreto em regularização - Ausência de qualquer identificador impede comparação examples: alert: Baixa no caixa A está ligada a movimento confirmado do caixa B. legitimate: Baixa e movimento apontam o mesmo caixa. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx - https://www.bcb.gov.br/meubc/faqs/p/vitima-fez-um-pix-e-caiu-em-um-golpe legacy_rule_codes: [] - code: C12 title: Comprovante reutilizado em pagamentos description: O mesmo identificador do comprovante não vazio está associado a pagamentos de IDs distintos. category: shared account_types: - payable - receivable default_enabled: true default_weight: 30 parameters: [] required_data: - Identificador do anexo de comprovante - Pagamentos distintos associados ao anexo exceptions: - Comprovante agregado de vários pagamentos - Vários vínculos do mesmo pagamento examples: alert: Pagamentos distintos de R$ 100 usam o mesmo anexo. legitimate: Um comprovante de lote documenta legitimamente vários pagamentos. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: C13 title: Baixa conciliada por justificativa description: Conta paga em que toda baixa elegível está conciliada e ao menos uma baixa foi conciliada por justificativa do usuário (OFX ou Open Finance), sem vínculo com lançamento do extrato. category: shared account_types: - payable - receivable default_enabled: true default_weight: 70 parameters: [] required_data: - Baixa conciliada por justificativa, com motivo, autor, data e origem - Conta paga com todas as baixas elegíveis conciliadas exceptions: - Diferença de tarifa ou centavos explicada - Extrato indisponível por falha de sincronização do banco examples: alert: A baixa de R$ 800 não tem movimento no extrato e foi conciliada com a justificativa "banco não exibiu o lançamento". legitimate: A baixa tem vínculo com o movimento do extrato e não depende de justificativa. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: P01 title: Destinatário bancário diferente do cadastro description: O CPF ou CNPJ íntegro, válido e não mascarado do destinatário bancário difere do documento da parte credora. category: payable account_types: - payable default_enabled: true default_weight: 70 parameters: [] required_data: - Documento válido e integral do destinatário - Documento válido e integral da parte credora exata exceptions: - Cessão ou pagamento a terceiro legítimo - Matriz e filial ou tesouraria de grupo examples: alert: O CNPJ do destinatário do pagamento difere do CNPJ do fornecedor cadastrado. legitimate: Uma cessão legítima faz o pagamento chegar a terceiro. source_urls: - https://www.fbi.gov/how-we-can-help-you/common-frauds-and-scams/business-email-compromise legacy_rule_codes: [] - code: P03 title: Destino bancário compartilhado entre fornecedores description: 'Fornecedores distintos têm o mesmo destino completo de cadastro: chave Pix de formato identificável ou banco, agência e conta normalizados preservando zeros significativos.' category: payable account_types: - payable default_enabled: true default_weight: 30 parameters: [] required_data: - Destinos completos do cadastro de fornecedores - Identificadores distintos de fornecedor exceptions: - Tesouraria central de grupo - Cadastro de conta de arrecadação compartilhada examples: alert: Dois fornecedores distintos têm a mesma chave Pix integral cadastrada. legitimate: Duas filiais utilizam a mesma tesouraria. source_urls: - https://www.fbi.gov/how-we-can-help-you/common-frauds-and-scams/business-email-compromise - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: P04 title: Pagamento ao próprio operador description: A pessoa destinatária da conta a pagar coincide com funcionário, estagiário ou sócio associado ao criador da conta ou ao usuário de uma baixa. category: payable account_types: - payable default_enabled: false default_weight: 10 parameters: [] required_data: - Pessoa destinatária da conta - Pessoa associada ao usuário criador da conta ou operador da baixa exceptions: - Folha de pagamento - Reembolso ao funcionário - Pró-labore de sócio examples: alert: A conta destinada ao funcionário A foi criada ou baixada pelo usuário associado a A. legitimate: O operador recebe seu salário ou um reembolso legítimo. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: P05 title: Valor do boleto difere do documento description: O valor fechado de boleto bancário validado e suportado difere do valor nominal equivalente da leitura vigente do documento. category: payable account_types: - payable default_enabled: true default_weight: 70 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '0.01' min: '0.00' max: '1000.00' unit: BRL required_data: - Boleto bancário com código validado e valor fechado - Leitura vigente com valor nominal equivalente exceptions: - Boleto de valor aberto - Código de arrecadação ou Pix sem decodificação equivalente examples: alert: Boleto validado codifica R$ 900 e o mesmo documento informa R$ 100. legitimate: Boleto de valor aberto não permite concluir divergência monetária. source_urls: - https://www.bcb.gov.br/meubc/faqs/p/vitima-fez-um-pix-e-caiu-em-um-golpe - https://www.fbi.gov/how-we-can-help-you/common-frauds-and-scams/business-email-compromise legacy_rule_codes: [] - code: R02 title: Pagador bancário diferente do cadastro description: O CPF ou CNPJ íntegro, válido e não mascarado do pagador bancário difere do documento do devedor. category: receivable account_types: - receivable default_enabled: true default_weight: 30 parameters: [] required_data: - Documento válido e integral do pagador - Documento válido e integral do devedor exato exceptions: - Pagamento legítimo por terceiro - Pagamento pela matriz ou empresa do grupo examples: alert: O CNPJ do pagador difere do CNPJ do cliente cadastrado. legitimate: A matriz paga a obrigação de uma filial. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: R03 title: Desconto acima do percentual analítico description: 'O desconto concedido supera o percentual configurado do valor bruto registrado positivo da baixa: desconto vezes 100 maior que valor bruto vezes percentual.' category: receivable account_types: - receivable default_enabled: true default_weight: 35 parameters: max_discount_percent: label: Percentual analítico de desconto type: decimal default: '20.00' min: '0.00' max: '100.00' unit: '%' required_data: - Valor bruto positivo da baixa - Valor do desconto concedido exceptions: - Campanha ou acordo legítimo - Critério analítico não representa política comercial examples: alert: Desconto de R$ 30 em valor bruto registrado de R$ 100 supera parâmetro de 20%. legitimate: Um acordo comercial concede desconto de 30% e merece apenas conferência. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: R06 title: Identificador E2E repetido em instruções description: Instruções Pix distintas marcadas como liquidadas compartilham o mesmo identificador E2E não vazio. category: receivable account_types: - receivable default_enabled: true default_weight: 80 parameters: [] required_data: - Identificadores distintos de instruções Pix marcadas liquidadas - Mesmo identificador E2E preenchido exceptions: - Vários vínculos da mesma instrução não são duplicidade - Revisão operacional de registros duplicados examples: alert: Duas instruções diferentes marcadas liquidadas repetem o mesmo E2E. legitimate: Uma única instrução ligada a várias contas continua sendo um só registro. source_urls: - https://github.com/bacen/pix-api/blob/master/openapi.yaml - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: R07 title: Múltiplas autorizações de cartão no mesmo link description: O mesmo link de pagamento tem identificadores de transação distintos e não vazios em estado autorizado ou liquidado. category: receivable account_types: - receivable default_enabled: true default_weight: 75 parameters: [] required_data: - Mesmo link de pagamento - Identificadores de transação distintos preenchidos e estados autorizado ou liquidado exceptions: - Operações independentes legítimas no mesmo link - Tentativas repetidas com o mesmo identificador de transação contam uma vez examples: alert: O mesmo link reúne duas autorizações com identificadores de transação diferentes. legitimate: Repetições técnicas do mesmo identificador de transação representam uma única autorização. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] - code: R08 title: Nota fiscal com valor diferente do recebido description: O valor líquido da NFS-e autorizada vinculada (serviços menos retenções) difere do principal recebido nas contas quitadas ligadas à nota, sem juros e multa, além da tolerância. Desconto (concedido ou obtido) não compõe o principal recebido nem reduz o valor esperado. category: receivable account_types: - receivable default_enabled: true default_weight: 70 parameters: amount_tolerance: label: Tolerância monetária type: decimal default: '1.00' min: '0.00' max: '1000.00' unit: BRL required_data: - NFS-e autorizada e vigente com valor líquido estruturado - Contas vinculadas à nota todas quitadas e baixas com alocação conhecida exceptions: - Retenções do tomador já descontadas do valor líquido da nota - Juros e multa, que não compõem o principal - Nota substituída ou cancelada, fora da comparação examples: alert: Nota de R$ 1.000,00 líquida, conta recebida com R$ 800,00 de principal. legitimate: Nota de R$ 1.000,00 com R$ 50,00 de ISS retido e conta recebida com R$ 950,00. source_urls: - https://legacy.acfe.com/fraudrisktools-tests.aspx legacy_rule_codes: [] policy: version: default rules: C01: enabled: true weight: 55 parameters: amount_tolerance: '0.01' overrides: [] C02: enabled: true weight: 80 parameters: amount_tolerance: '0.01' overrides: [] C03: enabled: true weight: 50 parameters: amount_tolerance: '0.01' overrides: [] C04: enabled: true weight: 70 parameters: [] overrides: [] C05: enabled: true weight: 65 parameters: amount_tolerance: '0.01' overrides: [] C06: enabled: true weight: 60 parameters: amount_tolerance: '0.01' overrides: [] C07: enabled: true weight: 40 parameters: amount_tolerance: '0.01' overrides: [] C08: enabled: true weight: 55 parameters: window_days: 30 overrides: [] C09: enabled: true weight: 30 parameters: window_days: 30 overrides: [] C10: enabled: true weight: 25 parameters: lookback_days: 180 min_samples: 5 multiplier: '3.00' overrides: [] C11: enabled: true weight: 65 parameters: [] overrides: [] C12: enabled: true weight: 30 parameters: [] overrides: [] C13: enabled: true weight: 70 parameters: [] overrides: [] P01: enabled: true weight: 70 parameters: [] overrides: [] P03: enabled: true weight: 30 parameters: [] overrides: [] P04: enabled: false weight: 10 parameters: [] overrides: [] P05: enabled: true weight: 70 parameters: amount_tolerance: '0.01' overrides: [] R02: enabled: true weight: 30 parameters: [] overrides: [] R03: enabled: true weight: 35 parameters: max_discount_percent: '20.00' overrides: [] R06: enabled: true weight: 80 parameters: [] overrides: [] R07: enabled: true weight: 75 parameters: [] overrides: [] R08: enabled: true weight: 70 parameters: amount_tolerance: '1.00' overrides: [] created_at: null actor_id: null actor_name: null note: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/runs: post: tags: - Governança summary: Iniciar execução — governança operationId: business_post_governance_runs description: 'Permissões exigidas na chave: (governance.view) e (governance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: idempotency_key: bad17fda-e555-51d9-bf57-b64c2ee80992 schema: type: object properties: account_type: description: 'Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable from: description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. type: string format: date to: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. Identificação no formato UUID. type: string format: uuid required: - idempotency_key responses: '200': description: Iniciar execução — governança. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernanceRun' example: id: 30000000-0000-4000-8000-000000000012 status: queued mode: traditional created_at: '2026-10-29T12:00:00.000000Z' finished_at: null error: null processed: 0 total: 0 failed_count: 0 fallback_count: 0 skipped_count: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' get: tags: - Governança summary: Listar execuções — governança operationId: business_get_governance_runs description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar execuções — governança. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractGovernanceRun' example: - id: 30000000-0000-4000-8000-000000000012 status: queued mode: traditional created_at: '2026-10-29T12:00:00.000000Z' finished_at: null error: null processed: 0 total: 0 failed_count: 0 fallback_count: 0 skipped_count: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/runs/{id}: get: tags: - Governança summary: Consultar execução — governança operationId: business_get_governance_runs_id description: 'Permissões exigidas na chave: (governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar execução — governança. content: application/json: schema: $ref: '#/components/schemas/PublicContractGovernanceRun' example: id: 30000000-0000-4000-8000-000000000012 status: queued mode: traditional created_at: '2026-10-29T12:00:00.000000Z' finished_at: null error: null processed: 0 total: 0 failed_count: 0 fallback_count: 0 skipped_count: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /governance/simulations: post: tags: - Governança summary: Simular política — governança operationId: business_post_governance_simulate description: 'Permissões exigidas na chave: (governance.view) e (governance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Envie o mapa completo das regras do catálogo atual. A simulação do exemplo considera o período informado e não publica a política.' requestBody: required: true content: application/json: example: rules: C01: enabled: true weight: 55 parameters: amount_tolerance: '0.01' overrides: [] C02: enabled: true weight: 80 parameters: amount_tolerance: '0.01' overrides: [] C03: enabled: true weight: 50 parameters: amount_tolerance: '0.01' overrides: [] C04: enabled: true weight: 70 parameters: [] overrides: [] C05: enabled: true weight: 65 parameters: amount_tolerance: '0.01' overrides: [] C06: enabled: true weight: 60 parameters: amount_tolerance: '0.01' overrides: [] C07: enabled: true weight: 40 parameters: amount_tolerance: '0.01' overrides: [] C08: enabled: true weight: 55 parameters: window_days: 30 overrides: [] C09: enabled: true weight: 30 parameters: window_days: 30 overrides: [] C10: enabled: true weight: 25 parameters: lookback_days: 180 min_samples: 5 multiplier: '3.00' overrides: [] C11: enabled: true weight: 65 parameters: [] overrides: [] C12: enabled: true weight: 30 parameters: [] overrides: [] C13: enabled: true weight: 70 parameters: [] overrides: [] P01: enabled: true weight: 70 parameters: [] overrides: [] P03: enabled: true weight: 30 parameters: [] overrides: [] P04: enabled: false weight: 10 parameters: [] overrides: [] P05: enabled: true weight: 70 parameters: amount_tolerance: '0.01' overrides: [] R02: enabled: true weight: 30 parameters: [] overrides: [] R03: enabled: true weight: 35 parameters: max_discount_percent: '20.00' overrides: [] R06: enabled: true weight: 80 parameters: [] overrides: [] R07: enabled: true weight: 75 parameters: [] overrides: [] R08: enabled: true weight: 70 parameters: amount_tolerance: '1.00' overrides: [] account_type: payable from: '2026-10-01' to: '2026-10-29' limit: 10 schema: type: object properties: rules: description: Configuração completa por código das regras do catálogo de governança; obtenha o catálogo atual antes de publicar ou simular. type: object additionalProperties: true account_type: description: 'Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable from: description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. type: string format: date to: type: string format: date description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. limit: description: Quantidade máxima de registros solicitada nesta consulta. type: integer minimum: 1 maximum: 200 required: - rules responses: '200': description: Simular política — governança. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: evaluated_accounts: type: integer description: Quantidade de contas examinadas na simulação. total_accounts: type: integer description: Quantidade total de contas elegíveis no universo da simulação. truncated: type: boolean description: Indica se o limite da amostra impediu examinar todas as contas elegíveis. occurrences: type: integer description: Ocorrências de governança identificadas no conjunto ou registro analisado. coverage: type: object properties: evaluated: type: integer description: Quantidade de verificações efetivamente avaliadas. applicable: type: integer description: Quantidade de verificações aplicáveis ao universo analisado. not_evaluated: type: integer description: Quantidade de verificações aplicáveis que não puderam ser avaliadas. required: - evaluated - applicable - not_evaluated description: Cobertura efetivamente medida na leitura ou avaliação. rules: type: array items: type: object properties: code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. evaluated: type: integer description: Quantidade de verificações efetivamente avaliadas. matched: type: integer description: Itens para os quais foi encontrada correspondência com registros existentes. not_evaluated: type: integer description: Quantidade de verificações aplicáveis que não puderam ser avaliadas. required: - code - evaluated - matched - not_evaluated description: Regras configuradas para analisar ou processar os registros desta operação. examples: type: array items: type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. rule_code: type: string description: Código da regra de governança associada à avaliação. rule_codes: type: array items: type: string description: Códigos das regras que contribuíram para a ocorrência. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. summary: type: string description: Resumo legível da situação ou avaliação do recurso. score: type: integer description: Nota da avaliação; nula fora do status complete. priority: type: string description: Prioridade atribuída à ocorrência ou avaliação. evidence_refs: type: array items: type: string description: Referências às fontes usadas na avaliação. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. required: - account_type - account_id - rule_code - rule_codes - title - summary - score - priority - evidence_refs - limitations description: Exemplos de ocorrências encontrados dentro do limite da simulação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. required: - evaluated_accounts - total_accounts - truncated - occurrences - coverage - rules - examples - policy_version - limitations example: evaluated_accounts: 0 total_accounts: 0 truncated: false occurrences: 0 coverage: evaluated: 0 applicable: 0 not_evaluated: 0 rules: - code: C01 evaluated: 0 matched: 0 not_evaluated: 0 - code: C02 evaluated: 0 matched: 0 not_evaluated: 0 - code: C03 evaluated: 0 matched: 0 not_evaluated: 0 - code: C04 evaluated: 0 matched: 0 not_evaluated: 0 - code: C05 evaluated: 0 matched: 0 not_evaluated: 0 - code: C06 evaluated: 0 matched: 0 not_evaluated: 0 - code: C07 evaluated: 0 matched: 0 not_evaluated: 0 - code: C08 evaluated: 0 matched: 0 not_evaluated: 0 - code: C09 evaluated: 0 matched: 0 not_evaluated: 0 - code: C10 evaluated: 0 matched: 0 not_evaluated: 0 - code: C11 evaluated: 0 matched: 0 not_evaluated: 0 - code: C12 evaluated: 0 matched: 0 not_evaluated: 0 - code: C13 evaluated: 0 matched: 0 not_evaluated: 0 - code: P01 evaluated: 0 matched: 0 not_evaluated: 0 - code: P03 evaluated: 0 matched: 0 not_evaluated: 0 - code: P04 evaluated: 0 matched: 0 not_evaluated: 0 - code: P05 evaluated: 0 matched: 0 not_evaluated: 0 - code: R02 evaluated: 0 matched: 0 not_evaluated: 0 - code: R03 evaluated: 0 matched: 0 not_evaluated: 0 - code: R06 evaluated: 0 matched: 0 not_evaluated: 0 - code: R07 evaluated: 0 matched: 0 not_evaluated: 0 - code: R08 evaluated: 0 matched: 0 not_evaluated: 0 examples: [] policy_version: draft:d2a86c51fcb793682de198f2b174c854a8a032521714e030bfe2fa6d04 limitations: - Amostra limitada a 200 contas, ordenadas por direção e identificador; os exemplos mostram até 10 ocorrências. - A simulação usa somente regras tradicionais e os dados disponíveis; não executa IA, notificações ou alterações financeiras. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notification-workflows: get: tags: - Réguas de cobrança summary: Listar — réguas de cobrança operationId: business_get_notification_workflows description: 'Permissões exigidas na chave: (workflows.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — réguas de cobrança. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractWorkflowSummary' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000020 name: Régua de cobrança em elaboração description: Rascunho sem sequência configurada active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 0 needs_rps: false links: first: https://empresa-exemplo.invalid/public-api/v1/notification-workflows?page=1 last: https://empresa-exemplo.invalid/public-api/v1/notification-workflows?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/notification-workflows?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/notification-workflows per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. post: tags: - Réguas de cobrança summary: Criar — réguas de cobrança operationId: business_post_notification_workflows description: 'Permissões exigidas na chave: (workflows.view) e (workflows.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: properties: name: Consultoria Exemplo schema: type: object properties: properties: description: Informações estruturadas complementares associadas ao recurso. type: object items: {} properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 255 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true required: - name sequence: description: Posição do item dentro da sequência de parcelas ou lançamentos. type: array items: {} nullable: true required: - properties responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractWorkflow' example: properties: id: 70000000-0000-4000-8000-000000000020 name: Régua de cobrança em elaboração description: Rascunho sem sequência configurada active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 0 sequence: [] linked_account: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notification-workflows/{workflow}: get: tags: - Réguas de cobrança summary: Consultar — réguas de cobrança operationId: business_get_notification_workflows_workflow description: 'Permissões exigidas na chave: (workflows.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: workflow in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — réguas de cobrança. content: application/json: schema: $ref: '#/components/schemas/PublicContractWorkflow' example: properties: id: 70000000-0000-4000-8000-000000000020 name: Régua de cobrança em elaboração description: Rascunho sem sequência configurada active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 0 sequence: [] linked_account: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Réguas de cobrança summary: Atualizar — réguas de cobrança operationId: business_put_notification_workflows_workflow description: 'Permissões exigidas na chave: (workflows.view) e (workflows.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: workflow in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: properties: name: Consultoria Exemplo schema: type: object properties: properties: description: Informações estruturadas complementares associadas ao recurso. type: object items: {} properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 255 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true required: - name sequence: description: Posição do item dentro da sequência de parcelas ou lançamentos. type: array items: {} nullable: true required: - properties responses: '200': description: Atualizar — réguas de cobrança. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractWorkflow' example: properties: id: 70000000-0000-4000-8000-000000000020 name: Régua de cobrança em elaboração description: Rascunho sem sequência configurada active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 0 sequence: [] linked_account: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Réguas de cobrança summary: Excluir — réguas de cobrança operationId: business_delete_notification_workflows_workflow description: 'Permissões exigidas na chave: (workflows.view) e (workflows.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: workflow in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — réguas de cobrança. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notification-workflows/{workflow}/copies: post: tags: - Réguas de cobrança summary: Duplicar — réguas de cobrança operationId: business_post_notification_workflows_workflow_duplicate description: 'Permissões exigidas na chave: (workflows.view) e (workflows.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: workflow in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '201': description: Cópia da régua criada; a nova régua fica inicialmente inativa. content: application/json: schema: $ref: '#/components/schemas/PublicContractWorkflow' example: properties: id: 70000000-0000-4000-8000-000000000021 name: Régua de cobrança em elaboração (Cópia) description: Rascunho sem sequência configurada active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 0 sequence: [] linked_account: [] /open-finance/connections: get: tags: - Open Finance summary: Listar — open finance operationId: business_get_open_finance_conexoes description: 'Permissões exigidas na chave: (open_finance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — open finance. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceConnection' example: - id: 30000000-0000-4000-8000-000000000011 instituicao_id: banco-exemplo instituicao: Banco Exemplo status: authorized produtos: - ACCOUNT inclui_conta: true inclui_cartao: false documento_final: null documento_da_empresa: null substitui_conexao_id: null pronta_para_consulta: true autorizacao_url: null autorizacao_expira_em: null ultima_verificacao: '2026-10-29T12:00:00+00:00' contas: - id: 30000000-0000-4000-8000-000000000010 external_id: conta-exemplo source_account_key: exemplo:conta-001 banco: '001' agencia: '0001' numero: 12345-6 moeda: BRL cashbox_id: 30000000-0000-4000-8000-000000000001 ativa: true sincronizada_ate: null ultima_sincronizacao: null ultima_falha: null ultimo_erro: null quarentena: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Open Finance summary: Criar — open finance operationId: business_post_open_finance_conexoes description: 'Permissões exigidas na chave: (open_finance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A conexão pode exigir consentimento no fluxo da instituição financeira. ### Exemplo e pré-condições Substitua institution_id pelo identificador do catálogo de instituições. CPF é do operador; nunca envie senha, OTP ou token bancário.' requestBody: required: true content: application/json: example: institution_id: INST-1 cpf: 390.533.447-05 schema: type: object properties: institution_id: description: Identificador da instituição financeira associada ao registro. type: string maxLength: 64 cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 20 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string nullable: true maxLength: 24 required: - institution_id - cpf responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractOpenFinanceConnection' example: id: 30000000-0000-4000-8000-000000000011 instituicao_id: banco-exemplo instituicao: Banco Exemplo status: awaiting_authorization produtos: - ACCOUNT - CREDIT_CARD_ACCOUNT inclui_conta: true inclui_cartao: true documento_final: 0191 documento_da_empresa: true substitui_conexao_id: null pronta_para_consulta: false autorizacao_url: https://banco-exemplo.invalid/autorizar/exemplo autorizacao_expira_em: '2026-10-29T12:15:00+00:00' ultima_verificacao: '2026-10-29T12:00:00+00:00' contas: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /open-finance/connections/{conexao}: delete: tags: - Open Finance summary: Excluir — open finance operationId: business_delete_open_finance_conexoes_conexao description: 'Permissões exigidas na chave: (open_finance.configure). Revoga a conexão e interrompe a entrada de dados novos. Não apaga a conexão nem o histórico já ingerido ou conciliado; a conexão permanece com status revoked. Sucesso público: 204 sem corpo.' parameters: - name: conexao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — open finance. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /open-finance/connections/{conexao}/refreshes: post: tags: - Open Finance summary: Atualizar conexão — open finance operationId: business_post_open_finance_conexoes_conexao_atualizar description: 'Permissões exigidas na chave: (open_finance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A conexão pode exigir consentimento no fluxo da instituição financeira.' parameters: - name: conexao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Atualizar conexão — open finance. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractOpenFinanceConnection' example: id: 30000000-0000-4000-8000-000000000011 instituicao_id: banco-exemplo instituicao: Banco Exemplo status: authorized produtos: - ACCOUNT inclui_conta: true inclui_cartao: false documento_final: null documento_da_empresa: null substitui_conexao_id: null pronta_para_consulta: true autorizacao_url: null autorizacao_expira_em: null ultima_verificacao: '2026-10-29T12:00:00+00:00' contas: - id: 30000000-0000-4000-8000-000000000010 external_id: conta-exemplo source_account_key: exemplo:conta-001 banco: '001' agencia: '0001' numero: 12345-6 moeda: BRL cashbox_id: 30000000-0000-4000-8000-000000000001 ativa: true sincronizada_ate: null ultima_sincronizacao: null ultima_falha: null ultimo_erro: null quarentena: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /open-finance/connections/{conexao}/accounts/{conta}: put: tags: - Open Finance summary: Vincular conta bancária — open finance operationId: business_put_open_finance_conexoes_conexao_contas_conta description: 'Permissões exigidas na chave: (open_finance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A conexão pode exigir consentimento no fluxo da instituição financeira.' parameters: - name: conexao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: conta in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: cashbox_id: null active: false schema: type: object properties: cashbox_id: description: 'Chave obrigatória. null desvincula; UUID de caixa existente na empresa vincula. Omitir não preserva: retorna 422.' type: string format: uuid nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean required: - cashbox_id responses: '200': description: Vincular conta bancária — open finance. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractOpenFinanceAccount' example: id: 30000000-0000-4000-8000-000000000010 external_id: conta-exemplo source_account_key: exemplo:conta-001 banco: '001' agencia: '0001' numero: 12345-6 moeda: BRL cashbox_id: 30000000-0000-4000-8000-000000000001 ativa: true sincronizada_ate: null ultima_sincronizacao: null ultima_falha: null ultimo_erro: null quarentena: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /open-finance/connections/{conexao}/synchronizations: post: tags: - Open Finance summary: Sincronizar conexão — open finance operationId: business_post_open_finance_conexoes_conexao_sincronizar description: 'Permissões exigidas na chave: (open_finance.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A conexão pode exigir consentimento no fluxo da instituição financeira.' parameters: - name: conexao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '202': description: Sincronização enfileirada; a aceitação não indica conclusão. content: application/json: schema: type: object properties: enfileirada: type: boolean description: Indica que a execução aguarda processamento na fila. required: - enfileirada example: enfileirada: true /open-finance/institutions: get: tags: - Open Finance summary: Listar instituições — open finance operationId: business_get_open_finance_instituicoes description: 'Permissões exigidas na chave: (open_finance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar instituições — open finance. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceInstitution' example: - id: banco-exemplo nome: Banco Exemplo operacional: true escopo: both documentos_aceitos: - CPF - CNPJ logo_url: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /open-finance/movements: get: tags: - Open Finance summary: Listar movimentos — open finance operationId: business_get_open_finance_movimentos description: 'Permissões exigidas na chave: (open_finance.view). Histórico dos movimentos trazidos pelo Open Finance, em todas as situações: o movimento já lançado, amarrado, conciliado ou descartado continua na lista, e o campo situation informa em que pé ele está. Somente leitura; não consulta o provedor. Ordenado do mais recente para o mais antigo. Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cashbox_id in: query required: false description: Filtra pelo caixa. schema: type: string format: uuid - name: date_from in: query required: false description: Data inicial (inclusive), no formato AAAA-MM-DD. schema: type: string format: date - name: date_to in: query required: false description: Data final (inclusive), no formato AAAA-MM-DD. Não pode ser anterior a date_from. schema: type: string format: date - name: direction in: query required: false description: inflow é entrada; outflow é saída. schema: type: string enum: - inflow - outflow - name: situation in: query required: false description: 'Situação do movimento. pending: efetivado no banco e sem desfecho no sistema, ou seja, falta lançar. launched: virou baixa. linked: amarrado a uma conta em aberto, ainda sem baixa. reconciled: entrou numa conciliação confirmada. discarded: descartado. adjustment: classificado como ajuste. awaiting_bank: provisório, ainda não efetivado no banco.' schema: type: string enum: - pending - launched - linked - reconciled - discarded - adjustment - awaiting_bank - name: search in: query required: false description: Texto contido na descrição, no nome ou no documento da contraparte. schema: type: string maxLength: 200 - name: page in: query required: false schema: type: string default: '1' description: 'Resolvedor preservado: 0, negativos e texto não inteiro caem na página 1; não é validação 422.' - name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 25 description: Validação real de 1 a 100; fora da faixa/texto é 422. responses: '200': description: Listar movimentos — open finance. content: application/json: example: data: [] links: first: https://empresa.example.com/public-api/v1/open-finance/movements?page=1 last: https://empresa.example.com/public-api/v1/open-finance/movements?page=1 prev: null next: null meta: current_page: 1 from: null last_page: 1 path: https://empresa.example.com/public-api/v1/open-finance/movements per_page: 25 to: null total: 0 links: [] schema: $ref: '#/components/schemas/OpenFinanceMovementPage' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /phone-types: get: tags: - Localidades e contatos summary: Listar — localidades e contatos operationId: business_get_phone_types description: 'Permissões exigidas na chave: (phone_types.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — localidades e contatos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractContactType' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000007 name: Contato administrativo description: Contato da equipe administrativa sistema: false links: first: https://empresa-exemplo.invalid/public-api/v1/phone-types?page=1 last: https://empresa-exemplo.invalid/public-api/v1/phone-types?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/phone-types?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/phone-types per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; ausente ou vazio usa o padrão da listagem. schema: type: integer minimum: 1 default: 10 post: tags: - Localidades e contatos summary: Criar — localidades e contatos operationId: business_post_phone_types description: 'Permissões exigidas na chave: (phone_types.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Consultoria Exemplo schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 100 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string nullable: true maxLength: 500 active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true required: - name responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractPhoneTypeRaw' example: id: 10000000-0000-4000-8000-000000000007 name: Contato administrativo description: Contato da equipe administrativa active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /phone-types/{phone_type}: get: tags: - Localidades e contatos summary: Consultar — localidades e contatos operationId: business_get_phone_types_phone_type description: 'Permissões exigidas na chave: (phone_types.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: phone_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — localidades e contatos. content: application/json: schema: $ref: '#/components/schemas/PublicContractPhoneTypeRaw' example: id: 10000000-0000-4000-8000-000000000007 name: Contato administrativo description: Contato da equipe administrativa active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Localidades e contatos summary: Atualizar — localidades e contatos operationId: business_put_phone_types_phone_type description: 'Permissões exigidas na chave: (phone_types.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: phone_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 100 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string nullable: true maxLength: 500 active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true required: - name responses: '200': description: Atualizar — localidades e contatos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPhoneTypeRaw' example: id: 10000000-0000-4000-8000-000000000007 name: Contato administrativo description: Contato da equipe administrativa active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' patch: tags: - Localidades e contatos summary: Atualizar — localidades e contatos operationId: business_patch_phone_types_phone_type description: 'Permissões exigidas na chave: (phone_types.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: phone_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Consultoria Exemplo schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 100 description: description: Explicação da classificação de contato e de quando utilizá-la. type: string nullable: true maxLength: 500 active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true required: - name responses: '200': description: Atualizar — localidades e contatos. A resposta informa o resultado da alteração solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractPhoneTypeRaw' example: id: 10000000-0000-4000-8000-000000000007 name: Contato administrativo description: Contato da equipe administrativa active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Localidades e contatos summary: Excluir — localidades e contatos operationId: business_delete_phone_types_phone_type description: 'Permissões exigidas na chave: (phone_types.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: phone_type in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — localidades e contatos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank: get: tags: - Conciliação summary: Listar — conciliação operationId: business_get_recons_bank description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — conciliação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractBankReconciliation' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 30000000-0000-4000-8000-000000000002 cashbox: id: 30000000-0000-4000-8000-000000000001 name: Caixa Exemplo start_amount: '1000.00' amount: '1150.00' default: false active: true editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cashbox_id: 30000000-0000-4000-8000-000000000001 status: ongoing origin: manual alert_level: warning overdue: false closed_at: null progress: payments_progress: 0 ofx_progress: 0 global_progress: 0 date: '2026-10-01T00:00:00.000000Z' created_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/reconciliations/bank?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reconciliations/bank?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reconciliations/bank?page=1 label: '1' page: 1 active: true - url: null label: Next » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reconciliations/bank per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. /reconciliations/bank/{recon}: get: tags: - Conciliação summary: Consultar — conciliação operationId: business_get_recons_bank_recon description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — conciliação. content: application/json: schema: $ref: '#/components/schemas/PublicContractBankReconciliation' example: id: 30000000-0000-4000-8000-000000000002 cashbox: id: 30000000-0000-4000-8000-000000000001 name: Caixa Exemplo start_amount: '1000.00' amount: '1150.00' default: false active: true editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cashbox_id: 30000000-0000-4000-8000-000000000001 status: ongoing origin: manual alert_level: warning overdue: false closed_at: null progress: payments_progress: 0.0 ofx_progress: 0.0 global_progress: 0.0 date: '2026-10-01T00:00:00.000000Z' created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx: get: tags: - Conciliação summary: Listar — conciliação operationId: business_get_recons_bank_recon_ofx description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar — conciliação. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractBankReconOfx' example: - id: 30000000-0000-4000-8000-000000000003 bank_recon: id: 30000000-0000-4000-8000-000000000002 cashbox: id: 30000000-0000-4000-8000-000000000001 name: Caixa Exemplo start_amount: '1000.00' amount: '1150.00' default: false active: true editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cashbox_id: 30000000-0000-4000-8000-000000000001 status: ongoing origin: manual alert_level: warning overdue: false closed_at: null progress: payments_progress: 0.0 ofx_progress: 0.0 global_progress: 0.0 date: '2026-10-01T00:00:00.000000Z' created_at: '2026-10-29T12:00:00.000000Z' status: in_progress start: '2026-10-01T00:00:00.000000Z' end: '2026-10-29T00:00:00.000000Z' progress: progress: 0.0 linked: 0 total: 1 justified: 0 timezone: America/Sao_Paulo transactions: - id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/reconciliations/bank/${RECON_ID}/ofx\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"ofx=@${ARQUIVO_OFX}\"" tags: - Conciliação summary: Criar — conciliação operationId: business_post_recons_bank_recon_ofx description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: ofx: description: Arquivo OFX contendo as movimentações bancárias para importação. type: string format: binary required: - ofx responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawOfx' example: id: 30000000-0000-4000-8000-000000000003 bank_recon_id: 30000000-0000-4000-8000-000000000002 attachment_id: 30000000-0000-4000-8000-000000000005 status: in_progress start: '2026-10-01T00:00:00.000000Z' end: '2026-10-29T00:00:00.000000Z' timezone: America/Sao_Paulo transactions: - id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}: get: tags: - Conciliação summary: Consultar — conciliação operationId: business_get_recons_bank_recon_ofx_ofx description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — conciliação. content: application/json: schema: type: object properties: ofx: $ref: '#/components/schemas/PublicContractViewOfxModel' description: Arquivo OFX contendo as movimentações bancárias para importação. receivable: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractPaymentToOfx' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPaymentToOfx' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Contas a receber ou indicadores dessa direção financeira. payable: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractPaymentToOfx' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPaymentToOfx' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Contas a pagar ou indicadores dessa direção financeira. required: - ofx - receivable - payable example: ofx: id: 30000000-0000-4000-8000-000000000003 bank_recon_id: 30000000-0000-4000-8000-000000000002 attachment_id: 30000000-0000-4000-8000-000000000005 status: in_progress start: '2026-10-01T00:00:00.000000Z' end: '2026-10-29T00:00:00.000000Z' timezone: America/Sao_Paulo transactions: - id: 30000000-0000-4000-8000-000000000004 amount: '150.00' check_number: null date: '2026-10-20T00:00:00.000000Z' justification: null memo: Recebimento de serviço name: Cliente Exemplo ofx_id: 30000000-0000-4000-8000-000000000003 sic: null timezone: America/Sao_Paulo type: CREDIT unique: EXEMPLO-OFX-001 link: null groupItem: null recon_justification: null ofx_transaction_id: null groups: [] receivable: [] payable: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Conciliação summary: Excluir — conciliação operationId: business_delete_recons_bank_recon_ofx_ofx description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — conciliação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/groups: get: tags: - Conciliação summary: Listar — conciliação operationId: business_get_recons_bank_recon_ofx_ofx_groups description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar — conciliação. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractOfxGroup' example: - id: 30000000-0000-4000-8000-000000000006 type: ofx dir: in name: Recebimentos Exemplo total: '150.00' items: - id: 30000000-0000-4000-8000-000000000007 ofx_group_id: 30000000-0000-4000-8000-000000000006 groupable_type: App\Models\Tenant\Recon\Bank\OfxTransaction groupable: id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null link: null paymentLink: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Conciliação summary: Criar — conciliação operationId: business_post_recons_bank_recon_ofx_ofx_groups description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: type: payment dir: in schema: type: object properties: entities: description: Cadastros ou tipos de entidade incluídos na seleção desta operação. type: array items: {} type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `payment`, `ofx`.' type: string enum: - payment - ofx dir: description: 'Diretório selecionado na estrutura de arquivos da empresa. Opções: `in`, `out`.' type: string enum: - in - out required: - type - dir responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractOfxGroup' example: id: 30000000-0000-4000-8000-000000000006 type: payment dir: in name: Recebimentos Exemplo total: '150.00' items: - id: 30000000-0000-4000-8000-000000000007 ofx_group_id: 30000000-0000-4000-8000-000000000006 groupable_type: App\Models\Tenant\Recon\Bank\OfxTransaction groupable: id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null link: null paymentLink: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/groups/{group}: get: tags: - Conciliação summary: Consultar — conciliação operationId: business_get_recons_bank_recon_ofx_ofx_groups_group description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: group in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — conciliação. content: application/json: schema: $ref: '#/components/schemas/PublicContractOfxGroup' example: id: 30000000-0000-4000-8000-000000000006 type: ofx dir: in name: Recebimentos Exemplo total: '150.00' items: - id: 30000000-0000-4000-8000-000000000007 ofx_group_id: 30000000-0000-4000-8000-000000000006 groupable_type: App\Models\Tenant\Recon\Bank\OfxTransaction groupable: id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null link: null paymentLink: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Conciliação summary: Excluir — conciliação operationId: business_delete_recons_bank_recon_ofx_ofx_groups_group description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: group in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — conciliação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/groups/{group}/items: post: tags: - Conciliação summary: Criar — conciliação operationId: business_post_recons_bank_recon_ofx_ofx_groups_group_items description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Os identificadores de grupo e entidade devem vir da consulta da conciliação vigente. O exemplo seleciona uma única entidade existente.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: group in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: false content: application/json: example: entity_id: 00000000-0000-4000-8000-000000000001 multiple: false schema: type: object properties: entity_id: type: string description: Identificador do cadastro selecionado para vincular ou executar a operação. multiple: description: Permite selecionar ou processar mais de um item na mesma operação. type: boolean entities: description: Cadastros ou tipos de entidade incluídos na seleção desta operação. type: array items: {} responses: '201': description: Registro criado. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractOfxGroupItem' - $ref: '#/components/schemas/PublicContractOfxGroup' example: id: 30000000-0000-4000-8000-000000000007 ofx_group_id: 30000000-0000-4000-8000-000000000006 groupable_type: App\Models\Tenant\Recon\Bank\OfxTransaction groupable: id: 30000000-0000-4000-8000-000000000004 ofx_id: 30000000-0000-4000-8000-000000000003 unique: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço amount: '150.00' type: CREDIT date: '2026-10-20T00:00:00.000000Z' timezone: America/Sao_Paulo sic: null check_number: null justification: null ofx_transaction_id: null link: null group_item: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/groups/{group}/items/{item}: delete: tags: - Conciliação summary: Excluir — conciliação operationId: business_delete_recons_bank_recon_ofx_ofx_groups_group_items_item description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: group in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: item in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — conciliação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/links: post: tags: - Conciliação summary: Criar — conciliação operationId: business_post_recons_bank_recon_ofx_ofx_links description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Os dois vínculos do exemplo referenciam registros já existentes: uma transação OFX e um pagamento. Não use identificadores de outra empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: false content: application/json: example: ofx_link: type: single id: 00000000-0000-4000-8000-000000000001 payment_link: type: single id: 00000000-0000-4000-8000-000000000002 multiple: false justification: Vínculo conferido no extrato. schema: type: object properties: ofx_link: type: object items: {} description: Identificador ou endereço do arquivo OFX selecionado para a conciliação. properties: type: type: string enum: - group - single description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `group`, `single`.' id: type: string description: Identificador único do registro no recurso consultado. payment_link: type: object items: {} description: Identificação do link de pagamento associado à operação. properties: type: type: string enum: - group - single description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `group`, `single`.' id: type: string description: Identificador único do registro no recurso consultado. justification: description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. type: string nullable: true multiple: description: Modo simples (ausente/false) exige ofx_link e payment_link; modo true exige data com vínculos próprios por item. type: boolean data: type: array items: type: object properties: ofx_link: description: Identificador ou endereço do arquivo OFX selecionado para a conciliação. type: object items: {} properties: type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `group`, `single`.' type: string enum: - group - single id: description: Identificador único do registro no recurso consultado. type: string required: - type - id payment_link: description: Identificação do link de pagamento associado à operação. type: object items: {} properties: type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `group`, `single`.' type: string enum: - group - single id: description: Identificador único do registro no recurso consultado. type: string required: - type - id required: - ofx_link - payment_link description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. allOf: - anyOf: - required: - data properties: multiple: enum: - true description: 'Permite selecionar ou processar mais de um item na mesma operação. Opções: `True`.' - required: - ofx_link - payment_link properties: multiple: enum: - false description: 'Permite selecionar ou processar mais de um item na mesma operação. Opções: `False`.' responses: '201': description: Registro criado. content: application/json: schema: anyOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - $ref: '#/components/schemas/PublicContractRawOfx' description: 'Retorno cru de OfxLinkService: link retorna OfxLink; multiLink retorna Ofx. Os schemas dos modelos são abertos e ambos garantem id, portanto podem se sobrepor. anyOf aceita uma ou ambas as representações compatíveis, sem inventar discriminador nem enfraquecer seus campos.' example: id: 30000000-0000-4000-8000-000000000008 ofx_id: 30000000-0000-4000-8000-000000000003 justification: null ofx_linkable_type: App\Models\Tenant\Recon\Bank\OfxTransaction ofx_linkable_id: 30000000-0000-4000-8000-000000000004 payment_linkable_type: App\Models\Payments\Payment payment_linkable_id: 30000000-0000-4000-8000-000000000009 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/links/{link}: delete: tags: - Conciliação summary: Excluir — conciliação operationId: business_delete_recons_bank_recon_ofx_ofx_links_link description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: link in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — conciliação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/ofx/{ofx}/match-suggestion: get: tags: - Conciliação summary: Consultar sugestão de correspondência — conciliação operationId: business_get_recons_bank_recon_ofx_ofx_match_suggestion description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: ofx in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar sugestão de correspondência — conciliação. content: application/json: schema: type: object properties: matchesInflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: type: object properties: date: type: string format: date-time description: Data de referência da operação financeira. tx: $ref: '#/components/schemas/PublicContractParsedOfxTransaction' description: Transação original do arquivo OFX que compõe o par sugerido. payment: $ref: '#/components/schemas/PublicContractRawPayment' description: Pagamento do sistema associado à transação do extrato na sugestão de conciliação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. value: type: number description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. required: - date - tx - payment - type - value x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Pares sugeridos entre entradas do extrato e recebimentos do sistema. matchesOutflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: type: object properties: date: type: string format: date-time description: Data de referência da operação financeira. tx: $ref: '#/components/schemas/PublicContractParsedOfxTransaction' description: Transação original do arquivo OFX que compõe o par sugerido. payment: $ref: '#/components/schemas/PublicContractRawPayment' description: Pagamento do sistema associado à transação do extrato na sugestão de conciliação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. value: type: number description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. required: - date - tx - payment - type - value x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Pares sugeridos entre saídas do extrato e pagamentos do sistema. unmatchedPaymentsInflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: $ref: '#/components/schemas/PublicContractRawPayment' x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Recebimentos do sistema sem par sugerido no extrato. unmatchedPaymentsOutflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: $ref: '#/components/schemas/PublicContractRawPayment' x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Pagamentos do sistema sem par sugerido no extrato. unmatchedTransactionsInflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: $ref: '#/components/schemas/PublicContractParsedOfxTransaction' x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Entradas do extrato sem contraparte sugerida no sistema. unmatchedTransactionsOutflow: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 - type: object additionalProperties: type: array items: $ref: '#/components/schemas/PublicContractParsedOfxTransaction' x-map-reason: BankReconDiffer::pushMatch/pushUnmatched/cleanupPayments agrupam listas por chave de data; coleção vazia é serializada como []. description: Saídas do extrato sem contraparte sugerida no sistema. required: - matchesInflow - matchesOutflow - unmatchedPaymentsInflow - unmatchedPaymentsOutflow - unmatchedTransactionsInflow - unmatchedTransactionsOutflow example: matchesInflow: [] matchesOutflow: [] unmatchedPaymentsInflow: [] unmatchedPaymentsOutflow: [] unmatchedTransactionsInflow: '2026-10-20': - type: CREDIT date: date: '2026-10-20 00:00:00.000000' timezone_type: 3 timezone: America/Sao_Paulo amount: 150.0 rawAmount: '150.00' uniqueId: EXEMPLO-OFX-001 name: Cliente Exemplo memo: Recebimento de serviço sic: null checkNumber: null refNumber: null unmatchedTransactionsOutflow: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/bank/{recon}/transactions: get: tags: - Conciliação summary: Listar transações — conciliação operationId: business_get_recons_bank_recon_transactions description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar transações — conciliação. content: application/json: schema: type: object properties: receivable: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractPaymentToOfx' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPaymentToOfx' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Contas a receber ou indicadores dessa direção financeira. payable: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractPaymentToOfx' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPaymentToOfx' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Contas a pagar ou indicadores dessa direção financeira. transactions: type: array items: $ref: '#/components/schemas/PublicContractOfxTransaction' description: Lançamentos bancários extraídos do arquivo OFX. groups: type: array items: $ref: '#/components/schemas/PublicContractRawOfxGroup' description: Grupos formados para conciliar os registros do extrato e do sistema. required: - receivable - payable - transactions - groups example: receivable: [] payable: [] transactions: - id: 30000000-0000-4000-8000-000000000004 amount: '150.00' check_number: null date: '2026-10-20T00:00:00.000000Z' justification: null memo: Recebimento de serviço name: Cliente Exemplo ofx_id: 30000000-0000-4000-8000-000000000003 sic: null timezone: America/Sao_Paulo type: CREDIT unique: EXEMPLO-OFX-001 link: null groupItem: null recon_justification: null ofx_transaction_id: null groups: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/card: get: tags: - Conciliação summary: Listar — conciliação operationId: business_get_recons_card description: 'Permissões exigidas na chave: (card_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — conciliação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCardReconciliation' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 30000000-0000-4000-8000-000000000022 card: id: 30000000-0000-4000-8000-000000000020 name: Cartão Exemplo origin: manual last_four: '1234' network: visa due_day: 10 closing_day: 3 active: true provider: null created_at: '2026-10-29T12:00:00.000000Z' total_invoice: null card_id: 30000000-0000-4000-8000-000000000020 card_bill: card_id: 30000000-0000-4000-8000-000000000020 summary: composition_total: '0.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: false can_reconcile: false can_move: false can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 30000000-0000-4000-8000-000000000021 due: '2026-11-10T00:00:00.000000Z' close: '2026-11-03T00:00:00.000000Z' card_recon: null account_bill: null accounts_advance: [] payments: [] card_bill_id: 30000000-0000-4000-8000-000000000021 user: null user_id: null conciliated_at: null status: ongoing comments: null difference: '0.00' invoice_value: '0.00' virtual_bill_value: 0 created_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/reconciliations/card?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reconciliations/card?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reconciliations/card?page=1 label: '1' page: 1 active: true - url: null label: Next » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reconciliations/card per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. /reconciliations/card/{recon}: get: tags: - Conciliação summary: Consultar — conciliação operationId: business_get_recons_card_recon description: 'Permissões exigidas na chave: (card_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — conciliação. content: application/json: schema: $ref: '#/components/schemas/PublicContractCardReconciliation' example: id: 30000000-0000-4000-8000-000000000022 card: id: 30000000-0000-4000-8000-000000000020 name: Cartão Exemplo origin: manual last_four: '1234' network: visa due_day: 10 closing_day: 3 active: true provider: null created_at: '2026-10-29T12:00:00.000000Z' total_invoice: null card_id: 30000000-0000-4000-8000-000000000020 card_bill: card_id: 30000000-0000-4000-8000-000000000020 summary: composition_total: '0.00' reference_total: null payments_total: '0.00' outstanding_total: null credit_balance: '0.00' difference: null payment_status: unknown reference_source: null reference_basis: null embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 1 origin: manual capabilities: can_pay: false can_advance: false can_reconcile: false can_move: false can_reopen: false blocking_reasons: - reference_missing - composition_mismatch sync: status: not_applicable last_synced_at: null complete: false id: 30000000-0000-4000-8000-000000000021 due: '2026-11-10T00:00:00.000000Z' close: '2026-11-03T00:00:00.000000Z' card_recon: null account_bill: null accounts_advance: [] payments: [] card_bill_id: 30000000-0000-4000-8000-000000000021 user: null user_id: null conciliated_at: null status: ongoing comments: null difference: '0.00' invoice_value: '0.00' virtual_bill_value: 0.0 created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/card/{recon}/reconciliations: post: tags: - Conciliação summary: Conciliar — conciliação operationId: business_post_recons_card_recon_conciliate description: 'Permissões exigidas na chave: (card_recons.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: recon in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 value: 150 schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: number comments: description: Comentários associados à análise ou execução do processamento. type: string nullable: true required: - expected_revision - value responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '204': description: Conciliação registrada; resposta sem corpo. /reconciliations/movements: get: tags: - Conciliação summary: Listar — conciliação operationId: business_get_recons_movements description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Data inicial do intervalo de movimentações, em AAAA-MM-DD. name: date_from in: query required: false schema: type: string format: date nullable: true - description: Data final do intervalo de movimentações, em AAAA-MM-DD. name: date_to in: query required: false schema: type: string format: date nullable: true - name: page in: query required: false schema: type: integer default: 1 description: Número da página de movimentos; a primeira página é 1. - name: per_page in: query required: false schema: type: integer description: Itens por página; sem enum universal presumido. responses: 200: description: Listar — conciliação. content: application/json: example: data: [] links: first: https://empresa.example.com/public-api/v1/reconciliations/movements?page=1 last: https://empresa.example.com/public-api/v1/reconciliations/movements?page=1 prev: null next: null meta: current_page: 1 from: null last_page: 1 path: https://empresa.example.com/public-api/v1/reconciliations/movements per_page: 25 to: null total: 0 links: [] schema: $ref: '#/components/schemas/BatchMovementPage' 400: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' 402: description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' 403: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' 404: description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' 409: description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' 422: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' 429: description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/movements/batch: post: tags: - Conciliação summary: Criar — conciliação operationId: business_post_recons_movements_batch description: 'Permissões exigidas na chave: (bank_recons.update) e (accounts.create) e (payments.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Use os movimentos, categorias e lançamentos padrão conferidos na prévia atual. Preserve a chave de idempotência ao repetir a mesma intenção.' requestBody: required: true content: application/json: example: linhas: - movement_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000002 account_standard_launch_id: 00000000-0000-4000-8000-000000000003 schema: type: object properties: linhas: description: Linhas do arquivo de importação selecionadas para processamento. type: array items: type: object items: {} properties: movement_id: description: UUID da movimentação bancária usada na análise de conciliação. type: string category_id: description: UUID da categoria financeira utilizada para classificar o lançamento. type: string account_standard_launch_id: description: UUID do lançamento padrão utilizado para classificar a conta financeira. type: string supplier_id: description: UUID do fornecedor associado ao lançamento financeiro. type: string nullable: true client_id: description: UUID do cliente da empresa autenticada associado ao recurso. type: string nullable: true cost_center_id: description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. type: string nullable: true required: - movement_id - category_id - account_standard_launch_id minItems: 1 required: - linhas responses: '201': description: Registro criado. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractBatchLineResult' example: - movement_id: 30000000-0000-4000-8000-000000000004 ok: true error: null account_id: 30000000-0000-4000-8000-000000000014 payment_id: 30000000-0000-4000-8000-000000000009 intent: link_existing application_id: 30000000-0000-4000-8000-000000000015 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: Idempotency-Key in: header required: true schema: type: string minLength: 16 maxLength: 191 pattern: ^[A-Za-z0-9._~-]+$ example: conciliacao-exemplo-001 description: Única fonte da chave idempotente. O campo homônimo no corpo não substitui este cabeçalho. /reconciliations/movements/preview: get: tags: - Conciliação summary: Consultar prévia — conciliação operationId: business_get_recons_movements_preview description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar prévia — conciliação. content: application/json: schema: $ref: '#/components/schemas/BatchPreview' example: matched: lane: matched count: 0 total: '0.00' items: [] deduced: lane: deduced count: 1 total: '-321.99' items: - movement_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 source: ofx cashbox_id: 9c551086-44fc-4a50-8b60-a5bdf0d30176 account_payable_id: null account_receivable_id: null matched_by: null matched_at: null date: '2026-08-01' amount: '-321.99' direction: outflow nature: operational raw_description: DÉB.CONV.EN.ELETRICA E GAS counterparty_name: Fornecedor Exemplo counterparty_doc_value: null counterparty_suggestion: null payment_method: debit_account category_id: 9c59f98a-052e-4689-9c68-c162432eb1cb account_standard_launch_id: 9c59f98a-159e-4ca5-94f3-950da8d595cc supplier_id: null client_id: null matched_account_id: null matched_payment_id: null intent: create_and_pay conflicts: [] suggested_alias: DEB.CONV.EN.ELETRICA E GAS suggested_alias_error: null receipt: layer: alias key: DEB.CONV.EN.ELETRICA E GAS explanation: Categoria e conta contábil encontradas pelo apelido. divergences: [] incomplete: lane: incomplete count: 0 total: '0.00' items: [] internal: lane: internal count: 0 total: '0.00' items: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/movements/{movement}/link: delete: tags: - Conciliação summary: Desfazer vínculo — conciliação operationId: business_delete_recons_movements_movement_amarra description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: movement in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Desfazer vínculo — conciliação. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/movements/{movement}/application: delete: tags: - Conciliação summary: Excluir — conciliação operationId: business_delete_recons_movements_movement_apply description: 'Permissões exigidas na chave: (bank_recons.update) e (accounts.delete) e (payments.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: movement in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: application_id: 88b0fa61-3730-5aa4-b72e-c8a8ed5be6fc schema: type: object properties: application_id: description: Identificador da aplicação de conciliação associada à operação. Identificação no formato UUID. type: string format: uuid required: - application_id responses: '204': description: Excluir — conciliação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/movements/{movement}/disposition: patch: tags: - Conciliação summary: Alterar destinação do movimento — conciliação operationId: business_patch_recons_movements_movement_disposition description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: movement in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: disposition: ignored schema: type: object properties: disposition: description: 'Tratamento escolhido para o item durante a conciliação. Opções: `ignored`, `adjustment`, `operational`.' type: string enum: - ignored - adjustment - operational required: - disposition responses: '200': description: Alterar destinação do movimento — conciliação. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. nature: type: string description: Natureza financeira da movimentação informada pela origem bancária. required: - id - status - nature example: id: 30000000-0000-4000-8000-000000000004 status: posted nature: adjustment '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/movements/{movement}/aliases: post: tags: - Conciliação summary: Aprender apelido do lançamento — conciliação operationId: business_post_recons_movements_movement_learn_alias description: 'Permissões exigidas na chave: (bank_recons.update) e (std_launch.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: movement in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: account_standard_launch_id: b507e048-af4d-5f69-8a9f-c08503933c2c schema: type: object properties: account_standard_launch_id: description: UUID do lançamento padrão utilizado para classificar a conta financeira. type: string format: uuid alias: description: Nome alternativo pelo qual o cadastro ou lançamento pode ser reconhecido. type: string nullable: true required: - account_standard_launch_id responses: '200': description: Aprender apelido do lançamento — conciliação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: alias: type: string description: Nome alternativo pelo qual o cadastro ou lançamento pode ser reconhecido. required: - alias example: alias: SERVICO EXEMPLO '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/activations: post: tags: - Conciliação summary: Ativar conciliação unificada — conciliação operationId: business_post_recons_unified_activate description: 'Permissões exigidas na chave: (bank_recons.update) e (cashboxes.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Envie cashbox_id e o expected_preview_hash retornado pela prévia vigente. O hash do exemplo é ilustrativo e deve ser substituído; não confirma uma migração real.' requestBody: required: true content: application/json: example: cashbox_id: 00000000-0000-4000-8000-000000000001 expected_preview_hash: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa schema: type: object properties: expected_preview_hash: description: Identificação da prévia conferida pelo cliente; impede aplicar uma prévia que já mudou. type: string minLength: 64 maxLength: 64 cashbox_id: type: string format: uuid description: UUID do caixa financeiro da empresa a conciliar. required: - cashbox_id - expected_preview_hash responses: '200': description: Ativar conciliação unificada — conciliação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: mode: type: string enum: - unified description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. migrated_count: type: integer description: Quantidade de registros transferidos para o novo modo de conciliação. required: - mode - migrated_count example: mode: unified migrated_count: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/bank-entries: get: tags: - Conciliação summary: Listar lançamentos do banco — conciliação operationId: business_get_recons_unified_bank_entries description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - description: Data inicial do intervalo de movimentações, em AAAA-MM-DD. name: date_from in: query required: true schema: type: string format: date example: '2026-10-01' x-docs-example-note: Data ilustrativa de início do intervalo histórico de outubro/2026; use com date_to=2026-10-31 e com registros desse período no caixa escolhido. - description: Data final do intervalo de movimentações, em AAAA-MM-DD. name: date_to in: query required: true schema: type: string format: date description: Data final do intervalo de movimentações, em AAAA-MM-DD. example: '2026-10-31' x-docs-example-note: Data ilustrativa de fim do mesmo intervalo histórico; é posterior a date_from=2026-10-01. Substitua as duas datas de forma coerente com os registros do próprio caixa. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - pending - unmatched - partial - matched - unverifiable - description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. name: direction in: query required: false schema: type: string nullable: true enum: - inflow - outflow responses: '200': description: Listar lançamentos do banco — conciliação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractUnifiedBankEntry' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 30000000-0000-4000-8000-000000000004 side: bank source_id: 30000000-0000-4000-8000-000000000004 date: '2026-10-20' description: Recebimento de serviço amount: '150.00' direction: inflow residual: '150.00' status: unmatched version: a3b9c8d91892cd7110a491cd4f4039797704e54cedd228453f5e73587c5aa5f1 eligible_actions: - confirm source: ofx reason: null allocated: '0.00' reconciliations: [] links: first: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/bank-entries?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/bank-entries?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/bank-entries?page=1 label: '1' page: 1 active: true - url: null label: Next » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/bank-entries per_page: 50 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/confirmations: post: tags: - Conciliação summary: Confirmar conciliação — conciliação operationId: business_post_recons_unified_confirm description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Envie o cabeçalho Idempotency-Key: conciliacao-exemplo-001. Reutilize a mesma chave com o mesmo conteúdo ao repetir a intenção. O campo no corpo não substitui esse cabeçalho. Obtenha expected_version dos itens nas consultas atuais; os valores conciliados devem coincidir.' requestBody: required: true content: application/json: example: cashbox_id: 00000000-0000-4000-8000-000000000001 bank_items: - movement_id: 00000000-0000-4000-8000-000000000002 amount: '100.00' expected_version: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa system_items: - entry_key: payment:00000000-0000-4000-8000-000000000002:00000000-0000-4000-8000-000000000001 amount: '100.00' expected_version: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa schema: type: object properties: cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. bank_items: description: Movimentações do banco incluídas na conciliação solicitada. type: array items: {} minItems: 1 maxItems: 100 system_items: description: Lançamentos do sistema incluídos na conciliação solicitada. type: array items: {} minItems: 1 maxItems: 100 required: - cashbox_id - bank_items - system_items responses: '200': description: Confirmar conciliação — conciliação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. effect: type: string description: Efeito da ação sobre os registros financeiros existentes. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. bank_items: type: array items: type: object properties: movement_id: type: string format: uuid description: UUID da movimentação bancária usada na análise de conciliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - movement_id - amount - expected_version description: Movimentações do banco incluídas na conciliação solicitada. system_items: type: array items: type: object properties: entry_key: type: string description: Chave estável que identifica o efeito financeiro no lado do sistema. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - entry_key - amount - expected_version description: Lançamentos do sistema incluídos na conciliação solicitada. residuals: type: object properties: bank: type: object additionalProperties: type: string x-map-reason: ReconciliationApplyService::apply indexa o residual monetário por movement_id no lado bank e entry_key no lado system. description: Dados da instituição financeira vinculada ao recurso. system: type: object additionalProperties: type: string x-map-reason: ReconciliationApplyService::apply indexa o residual monetário por movement_id no lado bank e entry_key no lado system. description: Resumo dos lançamentos financeiros existentes no sistema. required: - bank - system description: Saldos restantes após a confirmação, indexados por movimento ou chave do lançamento. required: - reconciliation_id - revision - effect - status - bank_items - system_items - residuals example: reconciliation_id: 30000000-0000-4000-8000-000000000030 revision: 1 effect: link_existing status: confirmed bank_items: - movement_id: 30000000-0000-4000-8000-000000000004 amount: '150.00' expected_version: a3b9c8d91892cd7110a491cd4f4039797704e54cedd228453f5e73587c5aa5f1 system_items: - entry_key: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 amount: '150.00' expected_version: c5d191a996368f51e31a301ea55c36078a60eea70bbd79865e048e8aca368c74 residuals: bank: 30000000-0000-4000-8000-000000000004: '0.00' system: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001: '0.00' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: Idempotency-Key in: header required: true description: Chave da intenção de conciliação. Reenvie a mesma chave com o mesmo conteúdo ao repetir o pedido. O valor no corpo não substitui este cabeçalho. schema: type: string maxLength: 128 example: f1000000-0000-4000-8000-000000000002 x-docs-example-note: CHAVE FICTÍCIA de idempotência, não credencial. Gere outra chave para cada intenção nova de confirmação; repita a mesma apenas com o mesmo caixa, composição, valores e versões. ConfirmRequest copia o header para idempotency_key; um campo no corpo não substitui o header. Este arquivo não inventa movimento, entry_key ou versão real para confirmar vínculos. /reconciliations/unified/migration-preview: get: tags: - Conciliação summary: Consultar prévia de migração — conciliação operationId: business_get_recons_unified_migration_preview description: 'Permissões exigidas na chave: (bank_recons.update) e (cashboxes.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. A prévia consulta o caixa escolhido; este exemplo não ativa a migração. responses: '200': description: Consultar prévia de migração — conciliação. content: application/json: schema: type: object properties: hash: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. mode: type: string description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. blocking_conflicts: type: array items: type: object properties: reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. required: - reason description: Conflitos que impedem a confirmação ou ativação da conciliação. compositions_count: type: integer description: Quantidade de composições de repasse identificadas. required: - hash - mode - blocking_conflicts - compositions_count example: hash: adc646b936ebdfae91348d4407fc21f4a8a478cc44454993505ec281e19235f3 mode: legacy blocking_conflicts: [] compositions_count: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/reviews: post: tags: - Conciliação summary: Revisar — conciliação operationId: business_post_recons_unified_reviews description: 'Permissões exigidas na chave: (bank_recons.update). Cria ou confirma revisão somente com versão atual e evidência documental própria que cubra o período. evidence_document_id pode ser herdado de revisão anterior da mesma versão; sem evidência elegível retorna 422. opening_balance deve corresponder ao histórico verificável. Pendências dos dois lados devem estar resolvidas; um erro não cria revisão.' requestBody: required: true content: application/json: example: cashbox_id: 00000000-0000-4000-8000-000000000001 date_from: '2026-10-01' date_to: '2026-10-29' expected_version: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa opening_balance: '0.00' schema: type: object properties: expected_version: description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. type: string minLength: 64 maxLength: 64 evidence_document_id: description: UUID do documento usado como evidência da conciliação. type: string format: uuid nullable: true opening_balance: description: Saldo de abertura do período, em reais, no tipo decimal indicado pelo schema. type: string nullable: true maxLength: 17 cashbox_id: type: string format: uuid description: UUID do caixa financeiro da empresa a conciliar. date_from: type: string format: date description: Data inicial do período de conciliação, em AAAA-MM-DD. date_to: type: string format: date description: Data final do período, igual ou posterior à data inicial, em AAAA-MM-DD. required: - cashbox_id - expected_version - date_from - date_to responses: '200': description: Revisar — conciliação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. created_at: type: string format: date-time nullable: true description: Data e hora em que o registro foi criado. valid: type: boolean description: Indica se a conferência ainda corresponde à versão atual dos dados. required: - id - version - created_at - valid example: id: 30000000-0000-4000-8000-000000000031 version: fa43885dc63c0a300aef4544452158a22f9516b842d0a334ae094b3a07021898 created_at: '2026-10-29T12:00:00.000000Z' valid: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/settlement-candidates: get: tags: - Conciliação summary: Listar candidatos à liquidação — conciliação operationId: business_get_recons_unified_settlement_candidates description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - name: movement_id in: query required: true schema: type: string format: uuid description: Movimento existente do caixa selecionado. Sem seletor a busca resulta em 404; não promete 200 vazio. example: 10000000-0000-4000-8000-000000000202 x-docs-example-note: 'UUID FICTÍCIO. Substitua pelo source_id/id de uma entrada bancária do MESMO caixa, obtida em bank-entries: crédito inflow em BRL, posted, com confirm em eligible_actions e residual positivo. candidates procura esse movimento dentro do caixa; a presença do exemplo não prova que existam recebimentos compatíveis.' - description: Chave do lançamento financeiro selecionado na conciliação. name: entry_key in: query required: false schema: type: string nullable: true maxLength: 128 - description: Data de referência da consulta dos candidatos à liquidação. name: as_of in: query required: false schema: type: string format: date - description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. name: receiving_account_key in: query required: false schema: type: string - description: Início do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_from in: query required: false schema: type: string format: date - description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_to in: query required: false schema: type: string format: date description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. - description: Início do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_from in: query required: false schema: type: string format: date - description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_to in: query required: false schema: type: string format: date description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Listar candidatos à liquidação — conciliação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractSettlementCandidate' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. settlement_review: type: object properties: ambiguous: type: boolean description: Indica se há mais de uma composição possível e se exige escolha manual. selected_alternative: type: string nullable: true description: Identificador da alternativa única selecionada; nulo quando não há escolha segura. alternatives: type: array items: $ref: '#/components/schemas/PublicContractSettlementProposal' description: Composições alternativas propostas para vincular registros existentes. warnings: type: array items: type: string description: Avisos que precisam ser considerados ao conferir o resultado. required: - ambiguous - selected_alternative - alternatives - warnings description: Alternativas, ambiguidades e avisos para conferir a composição do repasse. required: - data - links - meta - settlement_review example: data: [] links: first: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/settlement-candidates?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/settlement-candidates?page=1 prev: null next: null meta: current_page: 1 from: null last_page: 1 links: - url: null label: '« Previous' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/settlement-candidates?page=1 label: '1' active: true page: 1 - url: null label: Next » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/settlement-candidates per_page: 25 to: null total: 0 settlement_review: ambiguous: false selected_alternative: null alternatives: [] warnings: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/settlement-rule: get: tags: - Conciliação summary: Consultar regra de liquidação — conciliação operationId: business_get_recons_unified_settlement_rule description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - description: UUID da movimentação bancária usada na análise de conciliação. name: movement_id in: query required: false schema: type: string format: uuid nullable: true - description: Chave do lançamento financeiro selecionado na conciliação. name: entry_key in: query required: false schema: type: string nullable: true maxLength: 128 - description: Data de referência da consulta dos candidatos à liquidação. name: as_of in: query required: false schema: type: string format: date - description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. name: receiving_account_key in: query required: false schema: type: string example: eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee x-docs-example-note: MARCADOR FICTÍCIO de 64 caracteres, sem credencial. Substitua pelo receiving_account_key de um recebimento do MESMO caixa, por exemplo retornado em settlement-candidates. O controller localiza GatewayReceipt por caixa e chave; não é UUID e não deve ser calculada a partir de segredos pelo integrador. A regra pode ser null quando ainda não estiver cadastrada. - description: Início do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_from in: query required: false schema: type: string format: date - description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_to in: query required: false schema: type: string format: date description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. - description: Início do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_from in: query required: false schema: type: string format: date - description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_to in: query required: false schema: type: string format: date description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Consultar regra de liquidação — conciliação. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractSettlementRule' - $ref: '#/components/schemas/PublicContractSuccessNullEnvelope' example: id: 30000000-0000-4000-8000-000000000032 receiving_account_key: e989b86e183dbb6f3b2db44ac8c04036f30be8d18030c0b65647e6180189c23d provider: pjbank business_days: 2 timezone: America/Sao_Paulo counting_event: next_business_day cutoff: '17:00' calendar_version: exemplo-2026-v1 version: 30000000-0000-4000-8000-000000000033 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Conciliação summary: Atualizar regra de liquidação — conciliação operationId: business_put_recons_unified_settlement_rule description: 'Permissões exigidas na chave: (bank_slip.configure). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Use a receiving_account_key retornada pela consulta atual e um calendário conferido. O exemplo omite cutoff: o runtime exige HH:mm, mas o schema publicado ainda declara date para esse campo opcional; essa divergência permanece identificada para correção.' requestBody: required: true content: application/json: example: cashbox_id: 00000000-0000-4000-8000-000000000001 receiving_account_key: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb business_days: 1 timezone: America/Sao_Paulo counting_event: next_business_day calendar_version: calendario-exemplo-2026 calendar: - date: '2026-10-29' business_day: true provenance: Calendário informado pela empresa schema: type: object properties: cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. receiving_account_key: description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. type: string minLength: 64 maxLength: 64 business_days: description: Quantidade de dias úteis considerada no prazo de liquidação. type: integer minimum: 0 maximum: 90 timezone: description: Fuso horário utilizado para interpretar datas e horários da regra. type: string counting_event: description: 'Evento a partir do qual começa a contagem do prazo de liquidação. Opções: `next_business_day`, `paid_business_day`.' type: string enum: - next_business_day - paid_business_day cutoff: description: Horário de corte no fuso informado, no formato HH:mm (00:00 a 23:59); null indica ausência de corte. type: string nullable: true pattern: ^(?:[01][0-9]|2[0-3]):[0-5][0-9]$ calendar_version: description: Versão do calendário utilizada no cálculo dos dias úteis. type: string maxLength: 64 calendar: description: Calendário de dias úteis e exceções utilizado na regra de liquidação. type: array items: type: object properties: date: description: Data de referência da operação financeira. type: string format: date business_day: description: Indica se a data é considerada dia útil no calendário informado. type: boolean provenance: description: Procedência da informação utilizada na sugestão ou cálculo. type: string maxLength: 255 required: - date - business_day - provenance minItems: 1 maxItems: 400 required: - cashbox_id - receiving_account_key - business_days - timezone - counting_event - calendar_version - calendar responses: '200': description: Atualizar regra de liquidação — conciliação. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractSettlementRule' example: id: 30000000-0000-4000-8000-000000000032 receiving_account_key: e989b86e183dbb6f3b2db44ac8c04036f30be8d18030c0b65647e6180189c23d provider: pjbank business_days: 2 timezone: America/Sao_Paulo counting_event: next_business_day cutoff: '17:00' calendar_version: exemplo-2026-v1 version: 30000000-0000-4000-8000-000000000033 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/settlements/summary: get: tags: - Conciliação summary: Consultar resumo de liquidação — conciliação operationId: business_get_recons_unified_settlements_summary description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. A consulta não garante estimate_complete nem valores de projeção; depende das evidências e do histórico existentes. - description: UUID da movimentação bancária usada na análise de conciliação. name: movement_id in: query required: false schema: type: string format: uuid nullable: true - description: Chave do lançamento financeiro selecionado na conciliação. name: entry_key in: query required: false schema: type: string nullable: true maxLength: 128 - description: Data de referência da consulta dos candidatos à liquidação. name: as_of in: query required: false schema: type: string format: date - description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. name: receiving_account_key in: query required: false schema: type: string - description: Início do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_from in: query required: false schema: type: string format: date - description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_to in: query required: false schema: type: string format: date description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. - description: Início do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_from in: query required: false schema: type: string format: date - description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_to in: query required: false schema: type: string format: date description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Consultar resumo de liquidação — conciliação. content: application/json: schema: type: object properties: pending_net: type: string description: Valor líquido dos repasses ainda aguardando crédito bancário. overdue_net: type: string description: Valor líquido dos repasses cujo crédito previsto está em atraso. unverifiable_count: type: integer description: Quantidade de registros cujos dados impedem verificar o efeito financeiro. available_estimate: type: string nullable: true description: Estimativa disponível para o período, quando há dados suficientes. estimate_complete: type: boolean description: Indica se os dados necessários à estimativa estão completos. estimate_reason: type: string description: Motivo que explica a disponibilidade ou ausência da estimativa. observed_bank_balance: type: string nullable: true description: Saldo bancário observado na data informada, sem equivaler a posição simultânea. observed_bank_balance_date: type: string nullable: true format: date-time description: Data de referência do saldo bancário observado. as_of: type: string format: date description: Data de referência usada para calcular a posição apresentada. required: - pending_net - overdue_net - unverifiable_count - available_estimate - estimate_complete - estimate_reason - observed_bank_balance - observed_bank_balance_date - as_of example: pending_net: '0.00' overdue_net: '0.00' unverifiable_count: 0 available_estimate: null estimate_complete: false estimate_reason: incomplete_history_or_receipts observed_bank_balance: null observed_bank_balance_date: null as_of: '2026-10-29' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/source: get: tags: - Conciliação summary: Consultar fonte — conciliação operationId: business_get_recons_unified_source description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. Esta consulta lê a origem e os períodos; não troca a origem. responses: '200': description: Consultar fonte — conciliação. content: application/json: schema: $ref: '#/components/schemas/PublicContractReconciliationSource' example: mode: unified periods: - source: ofx date_from: '2026-10-01' date_to: null source_account_key: null acquisition: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Conciliação summary: Alterar fonte — conciliação operationId: business_put_recons_unified_source description: 'Permissões exigidas na chave: (bank_recons.update) e (cashboxes.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: source: ofx effective_date: '2026-10-29' cashbox_id: 00000000-0000-4000-8000-000000000001 schema: type: object properties: source: description: 'Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. Opções: `ofx`, `open_finance`.' type: string enum: - ofx - open_finance effective_date: description: Data em que a regra ou movimentação passa a produzir efeito. type: string format: date cashbox_id: type: string format: uuid description: UUID do caixa financeiro da empresa a conciliar. required: - cashbox_id - source - effective_date responses: '200': description: Alterar fonte — conciliação. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractReconciliationSource' example: mode: unified periods: - source: ofx date_from: '2026-10-01' date_to: null source_account_key: null acquisition: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/suggestions: get: tags: - Conciliação summary: Consultar sugestões — conciliação operationId: business_get_recons_unified_suggestions description: 'Permissões exigidas na chave: (bank_recons.view). Informe cashbox_id e exatamente um seletor: movement_id OU entry_key. Nenhum ou ambos os seletores resulta em 422 com detail de seleção; não é garantido errors por campo nesta recusa global.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - description: UUID da movimentação bancária usada na análise de conciliação. name: movement_id in: query required: false schema: type: string format: uuid nullable: true example: 10000000-0000-4000-8000-000000000202 x-docs-example-note: 'UUID FICTÍCIO. Neste exemplo foi escolhido o seletor bancário: substitua pelo movimento elegível do MESMO caixa consultado em bank-entries e OMITA entry_key. O controller exige exatamente um dos seletores. Sugestões podem estar vazias ou depender das evidências; nenhum vínculo é confirmado por esta consulta.' - description: Chave do lançamento financeiro selecionado na conciliação. name: entry_key in: query required: false schema: type: string nullable: true maxLength: 128 - description: Data de referência da consulta dos candidatos à liquidação. name: as_of in: query required: false schema: type: string format: date - description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. name: receiving_account_key in: query required: false schema: type: string - description: Início do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_from in: query required: false schema: type: string format: date - description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. name: paid_to in: query required: false schema: type: string format: date description: Fim do período de pagamento utilizado para selecionar candidatos à liquidação. - description: Início do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_from in: query required: false schema: type: string format: date - description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. name: credit_to in: query required: false schema: type: string format: date description: Fim do período de crédito bancário utilizado para selecionar candidatos à liquidação. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Consultar sugestões — conciliação. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractSettlementProposal' example: - id: 22123c397ed8a6a3b3264f3d2ae268a5c5562f592d30ccef556ed7495fbba8ab kind: unique_date_value label: Composição compatível effect: link_existing bank_items: - movement_id: 30000000-0000-4000-8000-000000000004 amount: '150.00' expected_version: a3b9c8d91892cd7110a491cd4f4039797704e54cedd228453f5e73587c5aa5f1 system_items: - entry_key: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 amount: '150.00' expected_version: c5d191a996368f51e31a301ea55c36078a60eea70bbd79865e048e8aca368c74 bank_entries: - id: 30000000-0000-4000-8000-000000000004 side: bank source_id: 30000000-0000-4000-8000-000000000004 date: '2026-10-20' description: Recebimento de serviço amount: '150.00' direction: inflow residual: '150.00' status: unmatched version: a3b9c8d91892cd7110a491cd4f4039797704e54cedd228453f5e73587c5aa5f1 eligible_actions: - confirm source: ofx reason: null financial_version: e4628899373d3c80acdd3aba9b0e96dcc5c4bc78fd6e97d44ca1c5c95cdbf187 allocated: '0.00' reconciliations: [] system_entries: - id: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 side: system source_id: 30000000-0000-4000-8000-000000000009 date: '2026-10-20' description: Recebimento de serviço amount: '150.00' direction: inflow residual: '150.00' status: unmatched version: c5d191a996368f51e31a301ea55c36078a60eea70bbd79865e048e8aca368c74 eligible_actions: - confirm reason: null entry_key: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 financial_version: 858f5c1864bd974236254a77b11662050291c47008914edbd3c844a959540048 allocated: '0.00' reconciliations: [] evidence: - kind: amount label: Único valor e data compatíveis no caixa warnings: [] explanation: Vincula registros existentes com valores e versões conferidos. difference: '0.00' bank_amount: '150.00' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/summary: get: tags: - Conciliação summary: Consultar resumo — conciliação operationId: business_get_recons_unified_summary description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - description: Data inicial do intervalo de movimentações, em AAAA-MM-DD. name: date_from in: query required: true schema: type: string format: date example: '2026-10-01' x-docs-example-note: Data ilustrativa de início do intervalo histórico de outubro/2026; use com date_to=2026-10-31 e com registros desse período no caixa escolhido. - description: Data final do intervalo de movimentações, em AAAA-MM-DD. name: date_to in: query required: true schema: type: string format: date description: Data final do intervalo de movimentações, em AAAA-MM-DD. example: '2026-10-31' x-docs-example-note: Data ilustrativa de fim do mesmo intervalo histórico; é posterior a date_from=2026-10-01. Substitua as duas datas de forma coerente com os registros do próprio caixa. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - pending - unmatched - partial - matched - unverifiable - description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. name: direction in: query required: false schema: type: string nullable: true enum: - inflow - outflow responses: '200': description: Consultar resumo — conciliação. content: application/json: schema: type: object properties: prior_pending: type: object properties: bank: type: integer description: Dados da instituição financeira vinculada ao recurso. system: type: integer description: Resumo dos lançamentos financeiros existentes no sistema. required: - bank - system description: Quantidade de pendências anteriores ao período, separadas entre banco e sistema. bank: type: object properties: unmatched_count: type: integer description: Quantidade de registros ainda sem vínculo ou justificativa ativa. justified_count: type: integer description: Quantidade de registros com justificativa ativa no recorte. inflow_residual: type: string description: Valor das entradas ainda sem alocação em conciliação confirmada. outflow_residual: type: string description: Valor das saídas ainda sem alocação em conciliação confirmada. required: - unmatched_count - justified_count - inflow_residual - outflow_residual description: Dados da instituição financeira vinculada ao recurso. system: type: object properties: unmatched_count: type: integer description: Quantidade de registros ainda sem vínculo ou justificativa ativa. justified_count: type: integer description: Quantidade de registros com justificativa ativa no recorte. inflow_residual: type: string description: Valor das entradas ainda sem alocação em conciliação confirmada. outflow_residual: type: string description: Valor das saídas ainda sem alocação em conciliação confirmada. required: - unmatched_count - justified_count - inflow_residual - outflow_residual description: Resumo dos lançamentos financeiros existentes no sistema. coverage_status: type: string description: Estado da comprovação da cobertura do período. opening_status: type: string description: Estado da verificação do saldo de abertura do período. opening_balance: type: string nullable: true description: Saldo de abertura do período, em reais, no tipo decimal indicado pelo schema. evidence_documents: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name description: Documentos disponíveis para a conferência humana do período. unverifiable_count: type: integer description: Quantidade de registros cujos dados impedem verificar o efeito financeiro. active_conflicts: type: integer description: Quantidade de conflitos de conciliação ainda não resolvidos. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. latest_review: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. valid: type: boolean description: Indica se a conferência ainda corresponde à versão atual dos dados. required: - id - version - created_at - valid nullable: true description: Última conferência do período e sua validade diante da versão atual. can_review_with_evidence: type: boolean description: Indica se o período admite conferência com documento e saldo de abertura disponíveis. can_complete: type: boolean description: Indica se a conclusão é permitida após conferir os requisitos do recurso. required: - prior_pending - bank - system - coverage_status - opening_status - opening_balance - evidence_documents - unverifiable_count - active_conflicts - version - latest_review - can_review_with_evidence - can_complete example: prior_pending: bank: 0 system: 0 bank: unmatched_count: 1 justified_count: 0 inflow_residual: '150.00' outflow_residual: '0.00' system: unmatched_count: 1 justified_count: 0 inflow_residual: '150.00' outflow_residual: '0.00' coverage_status: unconfirmed opening_status: unverified opening_balance: null evidence_documents: [] unverifiable_count: 0 active_conflicts: 0 version: 1cf93f96134cf95addd20d7e69bceccce5d95ea2f7aa0ea9836afeace1f7dfc8 latest_review: null can_review_with_evidence: false can_complete: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/system-entries: get: tags: - Conciliação summary: Listar lançamentos do sistema — conciliação operationId: business_get_recons_unified_system_entries description: 'Permissões exigidas na chave: (bank_recons.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: UUID do caixa financeiro vinculado à operação na empresa autenticada. name: cashbox_id in: query required: true schema: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. example: 10000000-0000-4000-8000-000000000201 x-docs-example-note: UUID FICTÍCIO. Substitua pelo ID de um caixa do catálogo do próprio tenant; use o mesmo caixa nos movimentos e consultas relacionados. Não representa dado provisionado. - description: Data inicial do intervalo de movimentações, em AAAA-MM-DD. name: date_from in: query required: true schema: type: string format: date example: '2026-10-01' x-docs-example-note: Data ilustrativa de início do intervalo histórico de outubro/2026; use com date_to=2026-10-31 e com registros desse período no caixa escolhido. - description: Data final do intervalo de movimentações, em AAAA-MM-DD. name: date_to in: query required: true schema: type: string format: date description: Data final do intervalo de movimentações, em AAAA-MM-DD. example: '2026-10-31' x-docs-example-note: Data ilustrativa de fim do mesmo intervalo histórico; é posterior a date_from=2026-10-01. Substitua as duas datas de forma coerente com os registros do próprio caixa. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - pending - unmatched - partial - matched - unverifiable - description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. name: direction in: query required: false schema: type: string nullable: true enum: - inflow - outflow responses: '200': description: Listar lançamentos do sistema — conciliação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractUnifiedSystemEntry' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 side: system source_id: 30000000-0000-4000-8000-000000000009 date: '2026-10-20' description: Recebimento de serviço amount: '150.00' direction: inflow residual: '150.00' status: unmatched version: c5d191a996368f51e31a301ea55c36078a60eea70bbd79865e048e8aca368c74 eligible_actions: - confirm reason: null entry_key: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 allocated: '0.00' reconciliations: [] links: first: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/system-entries?page=1 last: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/system-entries?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/system-entries?page=1 label: '1' page: 1 active: true - url: null label: Next » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/reconciliations/unified/system-entries per_page: 50 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /reconciliations/unified/{reconciliation}/reversals: post: tags: - Conciliação summary: Reverter — conciliação operationId: business_post_recons_unified_reconciliation_revert description: 'Permissões exigidas na chave: (bank_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: reconciliation in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 reason: Solicitação do responsável schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 reason: description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. type: string maxLength: 1000 required: - expected_revision - reason responses: '200': description: Reverter — conciliação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. effect: type: string description: Efeito da ação sobre os registros financeiros existentes. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. bank_items: type: array items: type: object properties: movement_id: type: string format: uuid description: UUID da movimentação bancária usada na análise de conciliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - movement_id - amount - expected_version description: Movimentações do banco incluídas na conciliação solicitada. system_items: type: array items: type: object properties: entry_key: type: string description: Chave estável que identifica o efeito financeiro no lado do sistema. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - entry_key - amount - expected_version description: Lançamentos do sistema incluídos na conciliação solicitada. required: - reconciliation_id - revision - effect - status - bank_items - system_items example: reconciliation_id: 30000000-0000-4000-8000-000000000030 revision: 2 status: reverted effect: unlink_existing bank_items: - movement_id: 30000000-0000-4000-8000-000000000004 amount: '150.00' expected_version: a3b9c8d91892cd7110a491cd4f4039797704e54cedd228453f5e73587c5aa5f1 system_items: - entry_key: payment:30000000-0000-4000-8000-000000000009:30000000-0000-4000-8000-000000000001 amount: '150.00' expected_version: c5d191a996368f51e31a301ea55c36078a60eea70bbd79865e048e8aca368c74 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /recurrences: get: tags: - Recorrências summary: Listar — recorrências operationId: business_get_recurrences description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — recorrências. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractRecurrenceIndex' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - cost_center_id: null id: 70000000-0000-4000-8000-000000000001 recurrenceFor: account_receivable type: monthly description: Mensalidade de consultoria installments: 1 due_day: 10 due_date: '2026-11-10T00:00:00.000000Z' limit_date: null active: 1 unit_price: 150 sequence: 1 accounts_count: 1 open_accounts_count: 1 created_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/recurrences?page=1 last: https://empresa-exemplo.invalid/public-api/v1/recurrences?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/recurrences?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/recurrences per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. post: tags: - Recorrências summary: Criar recorrência — recorrências operationId: business_post_recurrences description: 'Permissões exigidas na chave: (accounts.view) e (accounts.create). due_day de entrada é inteiro entre 1 e 31 quando informado. A resposta conserva string numérica por compatibilidade interna; não se promete inteiro na leitura nem cast global.' requestBody: required: true content: application/json: example: account_type: account_receivable account_id: 00000000-0000-4000-8000-000000000001 type: monthly due_day: 10 schema: type: object properties: fiscal_config: type: object nullable: true description: 'Configuração fiscal das notas futuras desta recorrência (nível recorrência da cadeia nota > recorrência > categoria > empresa). Gravação por mescla nas chaves da tributação do ISSQN e do comércio exterior: chave ausente preserva e null limpa.' properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true comercio_exterior: type: object nullable: true additionalProperties: false description: 'Dados de comércio exterior das notas emitidas automaticamente por esta recorrência (grupo comExt da DPS), sem número de declaração. Gravação por mescla: chave ausente preserva o gravado e null limpa. Sem eles, a nota automática que os exige é recusada antes do envio (E0330).' properties: pais_resultado: description: 'País onde o resultado do serviço se verifica (cPaisResult): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ.' type: string pattern: ^[A-Z]{2}$ nullable: true pais_prestacao: description: 'País da prestação do serviço no exterior (cPaisPrestacao): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ; para prestação no Brasil, omita.' type: string pattern: ^[A-Z]{2}$ nullable: true moeda: description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' type: string pattern: ^[0-9]{3}$ nullable: true valor: description: 'Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros e 2 decimais, sem zero à esquerda. Acima de 9999999999999.99, envie como texto. O produto não converte câmbio: value continua em reais.' anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true vinculo: description: 'Vínculo entre a sua empresa e o cliente (vincPrest): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. O comex_vinculo do cadastro do cliente, quando existe, prevalece.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true valor_referencia: description: Valor da conta em reais a que o valor na moeda estrangeira corresponde. A nota automática só sai com o valor na moeda quando o valor dela é igual a este; senão, é recusada antes do envio (MG-NFSE-VALOR-MOEDA-RECORRENCIA). moeda, valor e valor_referencia são informados juntos. anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true account_type: description: 'Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. Opções: `account_payable`, `account_receivable`.' type: string enum: - account_payable - account_receivable account_id: description: Identificador da conta financeira no escopo da empresa autenticada. type: string type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `unique`, `installments`, `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' type: string enum: - unique - installments - monthly - fortnightly - quarterly - semiannually - annually installments: description: Quantidade de parcelas previstas para o lançamento financeiro. type: integer nullable: true due_day: description: Dia do mês previsto para o vencimento da obrigação financeira. type: integer limit_date: description: Data limite para gerar ou selecionar os lançamentos abrangidos pela operação. type: string format: date nullable: true required: - account_type - account_id - type responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawRecurrence' example: id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cost_center_id: null recurrenceFor: account_receivable type: monthly description: Mensalidade de consultoria installments: 1 due_day: 10 due_date: '2026-11-10T00:00:00.000000Z' limit_date: null active: 1 flag: 1 unit_price: 150 sequence: 1 payment_method: pix generated_for_entity: client generated_for_entity_id: 70000000-0000-4000-8000-000000000005 account_standard_launch_id: null cashbox_id: null workflow_id: null charge_group_id: null pix_mandate_id: null retentions: null category_id: null card_id: null fiscal_config: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /recurrences/{recurrence}: delete: tags: - Recorrências summary: Excluir — recorrências operationId: business_delete_recurrences_recurrence description: 'Permissões exigidas na chave: (accounts.view) e (accounts.delete). Exclusão lógica. DELETE busca também registros já excluídos; repetir uma exclusão elegível retorna 204 sem corpo. ID nunca existente retorna 404; edição não restaura recorrência excluída.' parameters: - name: recurrence in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: delete_open: false delete_pending: true schema: type: object properties: delete_open: description: Solicita excluir os lançamentos em aberto abrangidos pela operação. type: boolean delete_pending: description: Apaga a recorrência. Pelo menos uma ação deve ser verdadeira; ambas falsas são recusadas. type: boolean required: - delete_open - delete_pending allOf: - anyOf: - properties: delete_open: enum: - true description: 'Solicita excluir os lançamentos em aberto abrangidos pela operação. Opções: `True`.' - properties: delete_pending: enum: - true description: 'Solicita excluir as parcelas pendentes abrangidas pela operação. Opções: `True`.' responses: '204': description: Excluir — recorrências. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Recorrências summary: Atualizar — recorrências operationId: business_put_recurrences_recurrence description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). due_day de entrada é inteiro entre 1 e 31 quando informado. A resposta conserva string numérica por compatibilidade interna; não se promete inteiro na leitura nem cast global.' parameters: - name: recurrence in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: updateRecurrence: true recurrence: due_day: 10 schema: type: object properties: updateRecurrence: description: Indica se a alteração deve ser aplicada também à recorrência vinculada. type: boolean updateAccounts: type: boolean description: 'Para contas a receber, updateAccounts propaga os campos informados e validados: description, unit_price, payment_method, cashbox_id, category_id, account_standard_launch_id, generated_for_entity e generated_for_entity_id, além de due_day. Somente contas pendentes ou atrasadas da mesma recorrência são elegíveis; recebidas, parcialmente recebidas, canceladas e arquivadas não são alteradas. Contas com documento auxiliar, boleto não cancelado/substituído ou lote fiscal com RPS anexado/enviado são protegidas (inclusive cobranças Pix representadas por esses vínculos). Para contas a pagar, permanece o contrato anterior: apenas due_day ajusta o vencimento das contas abertas, exceto compras em cartão de crédito. O dia respeita o limite do mês e a regra de dia útil; recorrências quinzenais não ajustam o dia. cost_center_id, due_date e fiscal_config não são propagados às contas existentes. Quando updateAccounts=true, a resposta inclui accounts_updated com a quantidade alterada; 0 indica nenhuma conta atualizada. Sem essa solicitação, o campo pode estar ausente.' recurrence: description: Informe ao menos um campo; todos os campos internos são opcionais. Os oito campos adicionais de dados da conta são validados apenas para recorrência a receber; a pagar conserva seu contrato anterior. updateRecurrence aplica os dados à recorrência para lançamentos futuros; em recorrência a receber parcelada (installments), unit_price não substitui o total do molde. updateAccounts é independente e altera somente contas elegíveis. O campo recurrence.fiscal_config vale apenas para notas futuras e não é propagado às contas existentes. type: object properties: fiscal_config: type: object nullable: true description: Configuração fiscal somente de notas futuras; códigos IBS/CBS são conferidos no catálogo oficial e a coerência tributária é validada no DTO. Ausência preserva o nível; null limpa. properties: ctribmun: type: string nullable: true pattern: ^\d{3}$ not: enum: - '000' description: Código de tributação municipal com três posições; o código 000 não é aceito. ctribnac: type: string nullable: true pattern: ^\d{6}$ description: Código de tributação nacional com seis posições, preservando zeros à esquerda. cst: type: string nullable: true pattern: ^\d{2}$ description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. ibscbs_cst: type: string nullable: true pattern: ^\d{3}$ description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. ibscbs_cclasstrib: type: string nullable: true pattern: ^\d{6}$ description: Código de classificação tributária IBS/CBS com seis dígitos. ibscbs_cindop: type: string nullable: true pattern: ^\d{6}$ description: Código do indicador de operação IBS/CBS com seis dígitos. ibscbs_ccredpres: type: string nullable: true pattern: ^\d{2}$ description: Código do crédito presumido IBS/CBS com dois dígitos. ps_onerosa: type: boolean nullable: true description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. adq_exterior: type: boolean nullable: true description: Indica se o adquirente está no exterior para fins da classificação fiscal. trib_issqn: type: string nullable: true enum: - '1' - '2' - '3' - '4' description: 'Classificação da tributação do ISSQN informada para o serviço. Opções: `1`, `2`, `3`, `4`.' tp_imunidade: type: string nullable: true enum: - '1' - '2' - '3' - '4' - '5' description: 'Tipo de imunidade do ISSQN, quando a tributação do serviço indica imunidade. Opções: `1`, `2`, `3`, `4`, `5`.' comex_md_prestacao: type: string nullable: true enum: - '1' - '2' - '3' - '4' description: 'Modo de prestação do serviço na operação de comércio exterior. Opções: `1`, `2`, `3`, `4`.' comex_mec_af_prestador: type: string nullable: true enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 description: 'Mecanismo de apoio ao comércio exterior utilizado pelo prestador do serviço. Opções: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`.' comex_mec_af_tomador: type: string nullable: true enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' description: 'Mecanismo de apoio ao comércio exterior utilizado pelo tomador do serviço. Opções: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`.' comex_mov_temp_bens: type: string nullable: true enum: - '1' - '2' - '3' description: 'Movimentação temporária de bens vinculada à prestação do serviço. Opções: `1`, `2`, `3`.' comex_mdic: type: string nullable: true enum: - '0' - '1' description: 'Opção de compartilhamento das informações da operação com o MDIC. Opções: `0`, `1`.' comercio_exterior: type: object nullable: true additionalProperties: false description: 'Dados de comércio exterior das notas emitidas automaticamente por esta recorrência (grupo comExt da DPS), sem número de declaração. Gravação por mescla: chave ausente preserva o gravado e null limpa. Sem eles, a nota automática que os exige é recusada antes do envio (E0330).' properties: pais_resultado: description: 'País onde o resultado do serviço se verifica (cPaisResult): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ.' type: string pattern: ^[A-Z]{2}$ nullable: true pais_prestacao: description: 'País da prestação do serviço no exterior (cPaisPrestacao): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ; para prestação no Brasil, omita.' type: string pattern: ^[A-Z]{2}$ nullable: true moeda: description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' type: string pattern: ^[0-9]{3}$ nullable: true valor: description: 'Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros e 2 decimais, sem zero à esquerda. Acima de 9999999999999.99, envie como texto. O produto não converte câmbio: value continua em reais.' anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true vinculo: description: 'Vínculo entre a sua empresa e o cliente (vincPrest): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. O comex_vinculo do cadastro do cliente, quando existe, prevalece.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true valor_referencia: description: Valor da conta em reais a que o valor na moeda estrangeira corresponde. A nota automática só sai com o valor na moeda quando o valor dela é igual a este; senão, é recusada antes do envio (MG-NFSE-VALOR-MOEDA-RECORRENCIA). moeda, valor e valor_referencia são informados juntos. anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true cost_center_id: description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. type: string format: uuid nullable: true due_day: description: Dia do mês previsto para o vencimento da obrigação financeira. type: integer minimum: 1 maximum: 31 due_date: description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. type: string format: date description: type: string nullable: true maxLength: 500 description: Somente a receber. Descrição da conta, até 500 caracteres; aceita null. unit_price: description: Somente a receber. Valor maior que zero, até 99999999.99, com no máximo duas casas decimais. Aceita número JSON ou texto decimal. Em installments, não substitui o total da recorrência para contas futuras. anyOf: - type: number minimum: 0 exclusiveMinimum: true maximum: 99999999.99 multipleOf: 0.01 - type: string pattern: ^\+?0*(?:0?\.(?:0[1-9]|[1-9][0-9]?)|[1-9][0-9]{0,7}(?:\.[0-9]{0,2})?)$ payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none description: Somente a receber. Forma de pagamento validada pelo enum PaymentMethod. cashbox_id: type: string format: uuid description: Somente a receber. UUID de caixa existente e ativo. category_id: type: string format: uuid nullable: true description: Somente a receber. UUID de categoria não excluída do tipo account_receivable; aceita null. account_standard_launch_id: type: string format: uuid description: Somente a receber. UUID de lançamento padrão não excluído do tipo receivable. generated_for_entity: type: string description: 'Somente a receber. Obrigatório somente se generated_for_entity_id for informado. Para nova pessoa: client, provider, employee, intern ou partner; o par já vinculado à recorrência pode ser reenviado sem restringir novamente o tipo.' generated_for_entity_id: type: string format: uuid description: Somente a receber. Obrigatório somente se generated_for_entity for informado. Para nova pessoa, UUID existente, ativo e não excluído no cadastro do tipo informado; o mesmo par já vinculado dispensa essa consulta. minProperties: 1 required: - recurrence responses: '200': description: Atualizar — recorrências. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawRecurrence' example: id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cost_center_id: null recurrenceFor: account_receivable type: monthly description: Mensalidade de consultoria installments: 1 due_day: 10 due_date: '2026-11-10T00:00:00.000000Z' limit_date: null active: 1 flag: 1 unit_price: 150 sequence: 1 payment_method: pix generated_for_entity: client generated_for_entity_id: 70000000-0000-4000-8000-000000000005 account_standard_launch_id: null cashbox_id: null workflow_id: null charge_group_id: null pix_mandate_id: null retentions: null category_id: null card_id: null fiscal_config: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /recurrences/{recurrence}/accounts-recurrence: put: tags: - Recorrências summary: Alterar tipo de recorrência nas contas — recorrências operationId: business_put_recurrences_recurrence_accounts_recurrence description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Mudar a data final ou a periodicidade preserva as contas abertas que continuam no novo período (mesmo ID e mesmas edições), cria somente as que faltam e exclui somente as que saíram do período; contas pagas nunca são alteradas. A troca entre mensal e parcelada retorna 422 quando há conta paga, editada manualmente ou com boleto ou nota.' parameters: - name: recurrence in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: type: unique schema: type: object properties: installments: description: Quantidade de parcelas previstas para o lançamento financeiro. type: integer nullable: true limit_date: type: string format: date nullable: true description: Data limite para gerar ou selecionar os lançamentos abrangidos pela operação. type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `unique`, `installments`, `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' type: string enum: - unique - installments - monthly - fortnightly - quarterly - semiannually - annually required: - type responses: '200': description: Alterar tipo de recorrência nas contas — recorrências. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawRecurrence' example: id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' cost_center_id: null recurrenceFor: account_receivable type: unique description: Mensalidade de consultoria installments: 1 due_day: 10 due_date: '2026-11-10T00:00:00.000000Z' limit_date: null active: 1 flag: 1 unit_price: 150 sequence: 1 payment_method: pix generated_for_entity: client generated_for_entity_id: 70000000-0000-4000-8000-000000000005 account_standard_launch_id: null cashbox_id: null workflow_id: null charge_group_id: null pix_mandate_id: null retentions: null category_id: null card_id: null fiscal_config: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /roles: get: tags: - Cargos summary: Listar — cargos operationId: business_get_roles description: 'Permissões exigidas na chave: (roles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — cargos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractRole' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 10000000-0000-4000-8000-000000000008 title: Consulta de cadastros name: consulta-cadastros is_default_admin: false perms: [] links: first: https://empresa-exemplo.invalid/public-api/v1/roles?page=1 last: https://empresa-exemplo.invalid/public-api/v1/roles?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/roles?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/roles per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. post: tags: - Cargos summary: Criar — cargos operationId: business_post_roles description: 'Permissões exigidas na chave: (roles.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: title: Contrato de consultoria name: Consultoria Exemplo permissions: [] schema: type: object properties: title: description: Título pelo qual o contrato ou documento será apresentado aos participantes. type: string maxLength: 50 name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 permissions: description: Chave obrigatória; aceita []. null e ausência são recusados. Valores do catálogo de permissões da sessão/empresa. type: array items: type: string nullable: false tenant_perms: description: Permissões internas da empresa atribuídas ao usuário. type: array items: type: string supervisionado: description: Indica se o acesso ou cadastro está sujeito à supervisão. type: boolean required: - title - name - permissions responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractRole' example: id: 10000000-0000-4000-8000-000000000008 title: Consulta de cadastros name: consulta-cadastros is_default_admin: false perms: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /roles/{role}: get: tags: - Cargos summary: Consultar — cargos operationId: business_get_roles_role description: 'Permissões exigidas na chave: (roles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: role in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — cargos. content: application/json: schema: $ref: '#/components/schemas/PublicContractRole' example: id: 10000000-0000-4000-8000-000000000008 title: Consulta de cadastros name: consulta-cadastros is_default_admin: false perms: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Cargos summary: Atualizar — cargos operationId: business_put_roles_role description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: role in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: title: Contrato de consultoria name: Consultoria Exemplo permissions: [] schema: type: object properties: title: description: Título pelo qual o contrato ou documento será apresentado aos participantes. type: string maxLength: 50 name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 permissions: description: Chave obrigatória; aceita []. null e ausência são recusados. Valores do catálogo de permissões da sessão/empresa. type: array items: type: string nullable: false tenant_perms: description: Permissões internas da empresa atribuídas ao usuário. type: array items: type: string supervisionado: description: Indica se o acesso ou cadastro está sujeito à supervisão. type: boolean required: - title - name - permissions responses: '200': description: Atualizar — cargos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractRole' example: id: 10000000-0000-4000-8000-000000000008 title: Consulta de cadastros name: consulta-cadastros is_default_admin: false perms: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' patch: tags: - Cargos summary: Atualizar — cargos operationId: business_patch_roles_role description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: role in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: title: Contrato de consultoria name: Consultoria Exemplo permissions: [] schema: type: object properties: title: description: Título pelo qual o contrato ou documento será apresentado aos participantes. type: string maxLength: 50 name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 50 permissions: description: Chave obrigatória; aceita []. null e ausência são recusados. Valores do catálogo de permissões da sessão/empresa. type: array items: type: string nullable: false tenant_perms: description: Permissões internas da empresa atribuídas ao usuário. type: array items: type: string supervisionado: description: Indica se o acesso ou cadastro está sujeito à supervisão. type: boolean required: - title - name - permissions responses: '200': description: Atualizar — cargos. A resposta informa o resultado da alteração solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractRole' example: id: 10000000-0000-4000-8000-000000000008 title: Consulta de cadastros name: consulta-cadastros is_default_admin: false perms: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Cargos summary: Excluir — cargos operationId: business_delete_roles_role description: 'Permissões exigidas na chave: (roles.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: role in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — cargos. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /states/{id}: get: tags: - Localidades e contatos summary: Consultar cidades do estado — localidades e contatos operationId: business_get_states_id description: 'Permissões exigidas na chave: (clients.view ou clients.create ou clients.update ou providers.view ou providers.create ou providers.update ou subsidiaries.view ou subsidiaries.create ou subsidiaries.update ou fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar cidades do estado — localidades e contatos. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractCityRaw' example: - id: 10000000-0000-4000-8000-000000000030 state_id: 10000000-0000-4000-8000-000000000016 title: Cidade Modelo iso: 9999999 iso_ddd: 31 status: 1 slug: cidade-modelo population: 1000 lat: '-19.90000000' long: '-43.90000000' income_per_capita: '1000.00' created_at: '2026-10-20 12:00:00' updated_at: '2026-10-20 12:00:00' deleted_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/agenda: get: tags: - Indicadores summary: Consultar agenda — indicadores operationId: business_get_stats_agenda description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar agenda — indicadores. content: application/json: schema: type: object properties: hoje: type: object properties: data: type: string format: date description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. receber: $ref: '#/components/schemas/PublicContractAgendaValue' description: Contas a receber ou indicadores dessa direção financeira. pagar: $ref: '#/components/schemas/PublicContractAgendaValue' description: Contas a pagar ou indicadores dessa direção financeira. required: - data - receber - pagar description: Data de hoje usada como referência pelo cálculo. periodo: type: object properties: de: type: string format: date description: Limite inicial do intervalo considerado. ate: type: string format: date description: Limite final do intervalo considerado. receber: $ref: '#/components/schemas/PublicContractAgendaValue' description: Contas a receber ou indicadores dessa direção financeira. pagar: $ref: '#/components/schemas/PublicContractAgendaValue' description: Contas a pagar ou indicadores dessa direção financeira. required: - de - ate - receber - pagar description: Período de referência dos dados apresentados. required: - hoje - periodo example: hoje: data: '2026-10-29' receber: valor: '150.25' quantidade: 1 pagar: valor: '50.25' quantidade: 1 periodo: de: '2026-10-29' ate: '2026-11-05' receber: valor: '200.50' quantidade: 2 pagar: valor: '80.50' quantidade: 2 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cards: get: tags: - Indicadores summary: Consultar cards stats — indicadores operationId: business_get_stats_cards description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar cards stats — indicadores. content: application/json: schema: type: object properties: cartoes: type: array items: $ref: '#/components/schemas/PublicContractDashboardCard' description: Cartões abrangidos pelo resumo ou autorização. required: - cartoes example: cartoes: - id: 20000000-0000-4000-8000-000000000030 nome: Cartão Exemplo saldo_atual: '50.25' series: - '50.25' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cards/month-snapshot: get: tags: - Indicadores summary: Consultar month card snapshot — indicadores operationId: business_get_stats_cards_month_snapshot description: 'Permissões exigidas na chave: (dashboard.card). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month card snapshot — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractInvoiceCard' example: - id: 20000000-0000-4000-8000-000000000030 name: Cartão Exemplo from: '2026-09-25T00:00:00-03:00' to: '2026-10-25T00:00:00-03:00' total: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cards/monthly-snapshot: get: tags: - Indicadores summary: Consultar monthly card snapshot — indicadores operationId: business_get_stats_cards_monthly_snapshot description: 'Permissões exigidas na chave: (dashboard.card). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly card snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: CardService::getMonthlyCardsSnapshot indexa PeriodicValue por mês do calendário. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: 2026-10: date: '2026-10-25T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cash-flow/daily-preview: get: tags: - Indicadores summary: Consultar cash flow preview — indicadores operationId: business_get_stats_cash_flow_daily_preview description: 'Permissões exigidas na chave: (dashboard.cashflow). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar cash flow preview — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractCashboxFlow' x-map-reason: CashboxStatsService::reduceCashFlow indexa cada CashboxFlow por data civil. - type: array items: $ref: '#/components/schemas/PublicContractCashboxFlow' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' revenue: 150.25 expense: 50.25 profit: 100 cashbox: 1100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cash-flow/daily-snapshot: get: tags: - Indicadores summary: Consultar cash flow snapshot — indicadores operationId: business_get_stats_cash_flow_daily_snapshot description: 'Permissões exigidas na chave: (dashboard.cashflow). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar cash flow snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractCashboxFlow' x-map-reason: CashboxStatsService::reduceCashFlow indexa cada CashboxFlow por data civil. - type: array items: $ref: '#/components/schemas/PublicContractCashboxFlow' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' revenue: 150.25 expense: 50.25 profit: 100 cashbox: 1100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cash-flow/scenarios: get: tags: - Indicadores summary: Consultar cash flow scenarios — indicadores operationId: business_get_stats_cash_flow_scenarios description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar cash flow scenarios — indicadores. content: application/json: schema: type: object properties: dias: type: array items: type: object properties: data: type: string format: date description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. ideal: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor de referência considerado ideal para o indicador. pior: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Pior resultado observado no intervalo do indicador. aporte_necessario: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ nullable: true description: Valor de aporte necessário para cobrir as saídas previstas. required: - data - ideal - pior - aporte_necessario description: Quantidade de dias considerada no intervalo ou cálculo. required: - dias example: dias: - data: '2026-10-01' ideal: '1100.00' pior: '949.75' aporte_necessario: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/cashboxes: get: tags: - Indicadores summary: Consultar cashboxes stats — indicadores operationId: business_get_stats_cashboxes description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar cashboxes stats — indicadores. content: application/json: schema: type: object properties: caixas: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. nome: type: string description: Nome informado para identificar a pessoa ou empresa no cadastro. banco: $ref: '#/components/schemas/PublicContractRawBank' description: Dados de identificação da instituição bancária relacionada. saldo_atual: type: string description: Saldo atual registrado para o caixa. series: type: array items: type: string description: Séries de valores calculados para o gráfico ou período. required: - id - nome - banco - saldo_atual - series description: Caixas financeiros considerados no resumo. total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - caixas - total example: caixas: - id: 20000000-0000-4000-8000-000000000032 nome: Caixa Exemplo banco: null saldo_atual: '1100.00' series: - '1100.00' total: '1100.00' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/delinquency: get: tags: - Indicadores summary: Consultar delinquency — indicadores operationId: business_get_stats_delinquency description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar delinquency — indicadores. content: application/json: schema: type: object properties: receber: $ref: '#/components/schemas/PublicContractDelinquencyValue' description: Contas a receber ou indicadores dessa direção financeira. pagar: $ref: '#/components/schemas/PublicContractDelinquencyValue' description: Contas a pagar ou indicadores dessa direção financeira. required: - receber - pagar example: receber: previsto: '200.50' em_atraso: '50.25' quantidade: 1 percentual: 25.06 pagar: previsto: '80.50' em_atraso: '30.25' quantidade: 1 percentual: 37.58 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/delinquency/top: get: tags: - Indicadores summary: Consultar delinquency top — indicadores operationId: business_get_stats_delinquency_top description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar delinquency top — indicadores. content: application/json: schema: type: object properties: total: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. devedores: type: array items: type: object properties: entidade_tipo: type: string description: Tipo da pessoa ou entidade relacionada ao lançamento. entidade_id: type: string format: uuid description: Identificador da pessoa ou entidade relacionada ao lançamento. nome: type: string nullable: true description: Nome informado para identificar a pessoa ou empresa no cadastro. documento: type: string nullable: true description: Documento de identificação ou evidência associado ao registro, conforme o contexto. valor: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. vencimento: type: string format: date description: Data civil de vencimento do boleto emitido. dias_em_atraso: type: integer description: Quantidade de dias entre o vencimento e a data de referência. required: - entidade_tipo - entidade_id - nome - documento - valor - quantidade - vencimento - dias_em_atraso description: Quantidade de partes com valores ainda em aberto. required: - total - quantidade - devedores example: total: '50.25' quantidade: 1 devedores: - entidade_tipo: client entidade_id: 20000000-0000-4000-8000-000000000031 nome: Cliente Exemplo documento: 00000000000191 valor: '50.25' quantidade: 1 vencimento: '2026-10-28' dias_em_atraso: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/daily-snapshot: get: tags: - Indicadores summary: Consultar daily expense snapshot — indicadores operationId: business_get_stats_expenses_daily_snapshot description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar daily expense snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/month-credit-snapshot: get: tags: - Indicadores summary: Consultar month credit expense snapshot — indicadores operationId: business_get_stats_expenses_month_credit_snapshot description: 'Permissões exigidas na chave: (dashboard.in_out ou dashboard.card). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month credit expense snapshot — indicadores. content: application/json: schema: $ref: '#/components/schemas/PublicContractPeriodicValue' example: date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/month-preview: get: tags: - Indicadores summary: Consultar month expense preview — indicadores operationId: business_get_stats_expenses_month_preview description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month expense preview — indicadores. content: application/json: schema: $ref: '#/components/schemas/PublicContractPeriodicValue' example: date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/monthly-overdue-snapshot: get: tags: - Indicadores summary: Consultar monthly overdue expense snapshot — indicadores operationId: business_get_stats_expenses_monthly_overdue_snapshot description: 'Permissões exigidas na chave: (dashboard.delinquency). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly overdue expense snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/monthly-snapshot: get: tags: - Indicadores summary: Consultar monthly expense snapshot — indicadores operationId: business_get_stats_expenses_monthly_snapshot description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly expense snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/expenses/preview-by-category: get: tags: - Indicadores summary: Consultar categories expense preview — indicadores operationId: business_get_stats_expenses_preview_by_category description: 'Permissões exigidas na chave: (dashboard.out_by_category). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar categories expense preview — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractCategoryValue' example: - category: id: 20000000-0000-4000-8000-000000000013 name: Serviços Exemplo type: account_payable active: true default: false nfse_enabled: false nbs_id: null fiscal_config: null total_paid: '50.25' total_price: '80.50' total_pending: '30.25' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/profits/daily-snapshot: get: tags: - Indicadores summary: Consultar daily profit snapshot — indicadores operationId: business_get_stats_profits_daily_snapshot description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.results). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar daily profit snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/profits/month-preview: get: tags: - Indicadores summary: Consultar month profit preview — indicadores operationId: business_get_stats_profits_month_preview description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.results). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month profit preview — indicadores. content: application/json: schema: $ref: '#/components/schemas/PublicContractPeriodicValue' example: date: '2026-10-01T00:00:00-03:00' value: 100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/profits/monthly-snapshot: get: tags: - Indicadores summary: Consultar monthly profit snapshot — indicadores operationId: business_get_stats_profits_monthly_snapshot description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.results). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly profit snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/profits/percentage-by-category: get: tags: - Indicadores summary: Consultar categories profit preview percentage — indicadores operationId: business_get_stats_profits_percentage_by_category description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.results). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar categories profit preview percentage — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractCategoryProfit' example: - category: id: 20000000-0000-4000-8000-000000000002 name: Serviços Exemplo type: account_receivable active: true default: false nfse_enabled: false nbs_id: null fiscal_config: null expense: 100 revenue: 100 profit: 100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/profits/preview-by-category: get: tags: - Indicadores summary: Consultar categories profit preview — indicadores operationId: business_get_stats_profits_preview_by_category description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.results). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar categories profit preview — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractCategoryProfit' example: - category: id: 20000000-0000-4000-8000-000000000002 name: Serviços Exemplo type: account_receivable active: true default: false nfse_enabled: false nbs_id: null fiscal_config: null expense: 50.25 revenue: 150.25 profit: 100 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/daily-snapshot: get: tags: - Indicadores summary: Consultar daily revenue snapshot — indicadores operationId: business_get_stats_revenues_daily_snapshot description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar daily revenue snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 150.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/month-overdue-snapshot: get: tags: - Indicadores summary: Consultar month overdue revenue snapshot — indicadores operationId: business_get_stats_revenues_month_overdue_snapshot description: 'Permissões exigidas na chave: (dashboard.delinquency). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month overdue revenue snapshot — indicadores. content: application/json: schema: $ref: '#/components/schemas/PublicContractPeriodicValue' example: date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/month-preview: get: tags: - Indicadores summary: Consultar month revenue preview — indicadores operationId: business_get_stats_revenues_month_preview description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar month revenue preview — indicadores. content: application/json: schema: $ref: '#/components/schemas/PublicContractPeriodicValue' example: date: '2026-10-01T00:00:00-03:00' value: 150.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/monthly-overdue-snapshot: get: tags: - Indicadores summary: Consultar monthly overdue revenue snapshot — indicadores operationId: business_get_stats_revenues_monthly_overdue_snapshot description: 'Permissões exigidas na chave: (dashboard.delinquency). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly overdue revenue snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 50.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/monthly-snapshot: get: tags: - Indicadores summary: Consultar monthly revenue snapshot — indicadores operationId: business_get_stats_revenues_monthly_snapshot description: 'Permissões exigidas na chave: (dashboard.in_out). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar monthly revenue snapshot — indicadores. content: application/json: schema: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractPeriodicValue' x-map-reason: As chaves são datas civis ou meses do SQL GROUP BY, preservados por StatsService e pela coleção de DataResource. - type: array items: $ref: '#/components/schemas/PublicContractPeriodicValue' maxItems: 0 description: String-keyed collection; empty PHP collection may serialize as []. example: '2026-10-01': date: '2026-10-01T00:00:00-03:00' value: 150.25 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/revenues/preview-by-category: get: tags: - Indicadores summary: Consultar categories revenue preview — indicadores operationId: business_get_stats_revenues_preview_by_category description: 'Permissões exigidas na chave: (dashboard.in_by_category). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar categories revenue preview — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractCategoryValue' example: - category: id: 20000000-0000-4000-8000-000000000002 name: Serviços Exemplo type: account_receivable active: true default: false nfse_enabled: false nbs_id: null fiscal_config: null total_paid: '150.25' total_price: '200.50' total_pending: '50.25' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/series: get: tags: - Indicadores summary: Consultar series — indicadores operationId: business_get_stats_series description: 'Permissões exigidas na chave: (dashboard.summary ou accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar series — indicadores. content: application/json: schema: type: object properties: receitas: $ref: '#/components/schemas/PublicContractDashboardSeriesValue' description: Receitas apuradas no recorte financeiro apresentado. despesas: $ref: '#/components/schemas/PublicContractDashboardSeriesValue' description: Despesas apuradas no período do indicador. resultado: $ref: '#/components/schemas/PublicContractDashboardSeriesValue' description: Resultado produzido pela execução ou pelo cálculo consultado. margem: $ref: '#/components/schemas/PublicContractDashboardSeriesValue' description: Margem financeira calculada no período. required: - receitas - despesas - resultado - margem example: receitas: atual: '150.25' series: - '150.25' despesas: atual: '50.25' series: - '50.25' resultado: atual: '100.00' series: - '100.00' margem: atual: '66.56' series: - '66.56' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/settings/categories: get: tags: - Indicadores summary: Consultar categories — indicadores operationId: business_get_stats_settings_categories description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.cashbox ou dashboard.delinquency ou dashboard.cashflow ou dashboard.card ou dashboard.results ou dashboard.in_out ou dashboard.in_by_category ou dashboard.out_by_category). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar categories — indicadores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractStatsCategory' example: - id: 20000000-0000-4000-8000-000000000003 category: id: 20000000-0000-4000-8000-000000000002 name: Serviços Exemplo type: account_receivable active: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /stats/settings/categories/{stats_category}/status-transitions: post: tags: - Indicadores summary: Alternar situação — indicadores operationId: business_put_stats_settings_categories_stats_category_toggle_status description: 'Permissões exigidas na chave: (dashboard.summary ou dashboard.cashbox ou dashboard.delinquency ou dashboard.cashflow ou dashboard.card ou dashboard.results ou dashboard.in_out ou dashboard.in_by_category ou dashboard.out_by_category). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: stats_category in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Alternar situação — indicadores. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractStatsCategory' example: id: 20000000-0000-4000-8000-000000000003 category: id: 20000000-0000-4000-8000-000000000002 name: Serviços Exemplo type: account_receivable active: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subsidiaries/stats: get: tags: - Filiais summary: Consultar indicadores — filiais operationId: business_get_subsidiaries_stats description: 'Permissões exigidas na chave: (subsidiaries.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar indicadores — filiais. content: application/json: schema: type: object properties: categories: type: array items: type: string description: Categorias financeiras vinculadas ao lançamento padrão. series: type: array items: type: number description: Séries de valores calculados para o gráfico ou período. required: - categories - series example: categories: - Total - Matriz - Unidade Modelo series: - 0 - 0.0 - 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subsidiaries/{subsidiary}: get: tags: - Filiais summary: Consultar — filiais operationId: business_get_subsidiaries_subsidiary description: 'Permissões exigidas na chave: (subsidiaries.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: subsidiary in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — filiais. content: application/json: schema: $ref: '#/components/schemas/PublicContractSubsidiary' example: id: 10000000-0000-4000-8000-000000000018 name: Empresa Exemplo Serviços Ltda. fantasy_name: Unidade Modelo cnpj: 00000000000191 active: true addresses: [] phones: [] emails: - id: 10000000-0000-4000-8000-000000000019 email: unidade@empresa-exemplo.invalid description: Contato administrativo type: id: 10000000-0000-4000-8000-000000000006 name: Contato administrativo description: Contato da equipe administrativa fiscal_rps_config: null created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request PUT \"$BASE_URL/subsidiaries/${SUBSIDIARY_ID}\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"name=${CAMPO_NAME}\" \\\n --form-string \"fantasy_name=${CAMPO_FANTASY_NAME}\" \\\n --form-string\ \ \"cnpj=${CAMPO_CNPJ}\" \\\n --form-string \"addresses[0][state_id]=${CAMPO_ADDRESSES_0__STATE_ID_}\"\ \ \\\n --form-string \"addresses[0][city_id]=${CAMPO_ADDRESSES_0__CITY_ID_}\" \\\n --form-string \"\ addresses[0][address]=${CAMPO_ADDRESSES_0__ADDRESS_}\" \\\n --form-string \"addresses[0][number]=${CAMPO_ADDRESSES_0__NUMBER_}\"\ \ \\\n --form-string \"addresses[0][neighborhood]=${CAMPO_ADDRESSES_0__NEIGHBORHOOD_}\" \\\n --form-string\ \ \"addresses[0][zipcode]=${CAMPO_ADDRESSES_0__ZIPCODE_}\" \\\n --form-string \"emails[0][email]=${CAMPO_EMAILS_0__EMAIL_}\"\ \ \\\n --form-string \"emails[0][type]=${CAMPO_EMAILS_0__TYPE_}\" \\\n --form-string \"emails[0][email_type_id]=${CAMPO_EMAILS_0__EMAIL_TYPE_ID_}\"\ \ \\\n --form-string \"phones[0][phone]=${CAMPO_PHONES_0__PHONE_}\" \\\n --form-string \"phones[0][type]=${CAMPO_PHONES_0__TYPE_}\"\ \ \\\n --form-string \"phones[0][phone_type_id]=${CAMPO_PHONES_0__PHONE_TYPE_ID_}\" \\\n --form-string\ \ \"fiscal_rps_config[nfse_system]=${CAMPO_FISCAL_RPS_CONFIG_NFSE_SYSTEM_}\" \\\n --form-string \"fiscal_rps_config[issqn]=${CAMPO_FISCAL_RPS_CONFIG_ISSQN_}\"\ \ \\\n --form-string \"fiscal_rps_config[use_issqn]=${CAMPO_FISCAL_RPS_CONFIG_USE_ISSQN_}\" \\\n --form\ \ \"certificate=@${ARQUIVO_CERTIFICATE}\" \\\n --form \"logo=@${ARQUIVO_LOGO}\"" tags: - Filiais summary: Atualizar — filiais operationId: business_put_subsidiaries_subsidiary description: 'Permissões exigidas na chave: (subsidiaries.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: subsidiary in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 100 fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string maxLength: 100 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string maxLength: 18 addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: type: object properties: state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: string city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: string address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string maxLength: 150 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 50 complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true maxLength: 50 neighborhood: description: Bairro do endereço informado. type: string maxLength: 50 zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 required: - state_id - city_id - address - number - neighborhood - zipcode minItems: 1 emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: type: object properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 60 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 type: description: ID do tipo de contato do catálogo; nome bruto type exigido neste contexto. type: string email_type_id: description: ID do tipo do catálogo; o request de edição exige esta chave além de type. type: string required: - email - type - email_type_id minItems: 1 phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: object properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string maxLength: 14 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 type: type: string description: ID do tipo de contato do catálogo; nome bruto type exigido neste contexto. phone_type_id: description: ID do tipo do catálogo; o request de edição exige esta chave além de type. type: string required: - phone - type - phone_type_id minItems: 1 fiscal_rps_config: description: Configuração fiscal do emissor para o preenchimento de RPS e NFS-e. type: object items: {} properties: issuer: description: Obrigatório na criação; se enviado exige im. Na edição pode ser omitido/nulo conforme request. type: object items: {} nullable: true maxItems: 100 properties: im: description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. type: string maxLength: 100 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string maxLength: 18 razao: description: Razão social do emissor conforme seu cadastro fiscal. type: string maxLength: 255 mail: description: Endereço de e-mail utilizado para contato com o emissor. type: string nullable: true maxLength: 255 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true maxLength: 255 password: description: Senha do usuário para autenticação. Trate como segredo e não registre em logs. type: string nullable: true maxLength: 100 nfse_system: description: Sistema fiscal exigido na filial; valores do enum NFSeSystem. type: string enum: - municipal - national issqn: type: number minimum: 0 maximum: 5 description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. simple: type: string enum: - 'no' - mei - me_epp description: 'Enquadramento do prestador no Simples Nacional usado na emissão da NFS-e. Opções: `no`, `mei`, `me_epp`.' required: - nfse_system - issqn - use_issqn certificate: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' logo: type: string format: binary nullable: true description: 'Limite do arquivo em KiB: max 102400.' required: - name - fantasy_name - cnpj - addresses - emails - phones - fiscal_rps_config example: name: Filial Exemplo Fictícia fantasy_name: Filial Exemplo cnpj: '11222333000181' addresses: - state_id: 10000000-0000-4000-8000-000000000901 city_id: 10000000-0000-4000-8000-000000000902 address: Rua Exemplo number: '123' neighborhood: Centro zipcode: '30110000' emails: - email: filial@example.com type: 10000000-0000-4000-8000-000000000903 email_type_id: 10000000-0000-4000-8000-000000000903 phones: - phone: '31999990001' type: 10000000-0000-4000-8000-000000000904 phone_type_id: 10000000-0000-4000-8000-000000000904 fiscal_rps_config: issqn: 2 use_issqn: true nfse_system: national issuer: im: '12345' cnpj: '11222333000181' razao: Filial Exemplo Fictícia responses: '200': description: Atualizar — filiais. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractSubsidiary' example: id: 10000000-0000-4000-8000-000000000018 name: Empresa Exemplo Serviços Ltda. fantasy_name: Unidade Modelo cnpj: 00000000000191 active: true addresses: [] phones: [] emails: [] fiscal_rps_config: null created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Filiais summary: Excluir — filiais operationId: business_delete_subsidiaries_subsidiary description: 'Permissões exigidas na chave: (subsidiaries.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: subsidiary in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — filiais. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subsidiaries/{subsidiary}/activation: put: tags: - Filiais summary: Alterar ativação — filiais operationId: business_put_subsidiaries_subsidiary_active description: 'Permissões exigidas na chave: (subsidiaries.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: subsidiary in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: active: false schema: type: object properties: active: description: Indica se o registro está ativo para uso pela empresa. type: boolean required: - active responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '204': description: Situação da filial atualizada; resposta sem corpo. /subsidiaries/{subsidiary}/certificate: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/subsidiaries/${SUBSIDIARY_ID}/certificate\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"certificate=@${ARQUIVO_CERTIFICATE}\"" tags: - Filiais summary: Atualizar certificado A1 da filial — filiais operationId: business_post_subsidiaries_subsidiary_certificado description: 'Permissões exigidas na chave: (subsidiaries.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: subsidiary in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: certificate: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' password: description: Obrigatória quando a filial não tem senha real salva. Não publicar senha ou certificado em exemplo. type: string nullable: true maxLength: 100 required: - certificate responses: '200': description: Atualizar certificado A1 da filial — filiais. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractFiscalConfiguration' example: issuer: im: '0000' cnpj: 00000000000191 cmun: '3106200' razao: Empresa Exemplo Serviços Ltda. phone: '' mail: fiscal@empresa-exemplo.invalid tpam: 2 certificate: offline/subsidiary/fiscal_rps_certificate/cert_10000000-0000-4000-8000-000000000018.10000000-0000-4000-8000-000000000050.pfx tributation: none operationNature: '1' reg_ap_trib_sn: null simple: null cultural: 'no' cst: '0' use_issqn: false send_im: false issqn_tributation: none issqn: '0' operation_nature: '' trib_type: none trib_sn: null trib_estadual: null trib_municipal: null trib_federal: null logo: null nfse_system: national serie: '1000' ctribmun: null paliq_pis: null paliq_cofins: null regime_tributario: null ibscbs_cst: null ibscbs_cclasstrib: null ibscbs_cindop: null ibscbs_ccredpres: null certificate_holder: Empresa Exemplo Serviços Ltda. certificate_cnpj: 00000000000191 certificate_valid_from: '2026-10-01T00:00:00+00:00' certificate_valid_to: '2027-10-01T00:00:00+00:00' retentions: null pis: null cofins: null ir: null csll: null inss: null others: null issqn_immunity_type: null issqn_tributation_confirmada_em: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /tax-code/{tax_code}: get: tags: - Catálogos fiscais summary: Consultar — catálogos fiscais operationId: business_get_tax_code_tax_code description: 'Permissões exigidas na chave: (fiscal_rps.view ou fiscal_rps.emit ou categories.view ou categories.create ou categories.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: tax_code in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — catálogos fiscais. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawTaxCode' example: id: 20000000-0000-4000-8000-000000000010 code: '01.01' description: Serviço Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /templates: get: tags: - Modelos de comunicação summary: Listar — modelos de comunicação operationId: business_get_templates description: 'Permissões exigidas na chave: (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — modelos de comunicação. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractTemplate' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 name: Lembrete de vencimento description: Aviso mensal de cobrança type: email subject: Sua mensalidade vence em breve layout: charge attachments: [] content:

Olá! Sua mensalidade vence em breve.

active: true whatsapp_template_id: null whatsapp_template: null links: first: https://empresa-exemplo.invalid/public-api/v1/templates?page=1 last: https://empresa-exemplo.invalid/public-api/v1/templates?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/templates?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/templates per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 10 description: Itens por página. Sem teto universal presumido. post: tags: - Modelos de comunicação summary: Criar — modelos de comunicação operationId: business_post_templates description: 'Permissões exigidas na chave: (templates.view) e (templates.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: name: Aviso de vencimento type: sms content: Conteúdo ilustrativo do modelo. active: true schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 200 description: description: Explicação da finalidade do modelo de comunicação e de quando utilizá-lo. type: string nullable: true maxLength: 500 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string subject: description: Assunto da mensagem enviada ao destinatário. type: string maxLength: 200 content: description: Obrigatório e não vazio em email/sms. Em whatsapp vem do template aprovado; content é opcional/nullable. type: string nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true whatsapp_template_id: description: Identificador do modelo de WhatsApp aprovado para o envio. Identificação no formato UUID. type: string format: uuid nullable: true required: - name - type allOf: - anyOf: - properties: type: enum: - whatsapp description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `whatsapp`.' - required: - content properties: type: enum: - email - sms description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `email`, `sms`.' content: type: string nullable: false minLength: 1 description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractTemplate' example: id: 70000000-0000-4000-8000-000000000001 name: Lembrete de vencimento description: Aviso mensal de cobrança type: sms subject: Sua mensalidade vence em breve layout: charge attachments: [] content:

Olá! Sua mensalidade vence em breve.

active: true whatsapp_template_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /templates/mail-preview: post: tags: - Modelos de comunicação summary: Pré-visualizar e-mail — modelos de comunicação operationId: business_post_templates_mail_preview description: 'Permissões exigidas na chave: (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Renderiza a prévia sem enviar mensagem. O assunto é opcional, inclusive em e-mail; quando informado, suas variáveis são substituídas. Para type=email, informe layout=charge ou communication; omitir layout retorna 422 com errors.layout. SMS continua aceito nesta rota sem layout nem assunto. Substitua account pelo UUID de uma conta a receber existente da empresa.' requestBody: required: true content: application/json: example: type: email layout: charge content: Consulte a situação do seu recebível. account: 00000000-0000-4000-8000-000000000001 schema: type: object properties: type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string subject: description: Assunto opcional da prévia; pode ser omitido ou nulo. Variáveis informadas são renderizadas. type: string maxLength: 200 nullable: true content: description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. type: string account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string layout: type: string nullable: true enum: - charge - communication - null description: 'Layout da prévia: charge para cobrança ou communication para comunicado. Obrigatório e não nulo quando type é email; opcional nos demais canais.' required: - type - content - account anyOf: - properties: type: enum: - email description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `email`.' layout: description: 'Layout obrigatório para e-mail: charge para cobrança ou communication para comunicado.' type: string enum: - charge - communication required: - layout - properties: type: enum: - sms - whatsapp description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `sms`, `whatsapp`.' responses: '200': description: Pré-visualizar e-mail — modelos de comunicação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: subject: type: string description: Assunto da mensagem enviada ao destinatário. content: type: string description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. required: - subject - content example: subject: Sua mensalidade vence em breve content:

Olá, Cliente Exemplo! Sua mensalidade vence em 10/11/2026.

'400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /templates/whatsapp-catalog: get: tags: - Modelos de comunicação summary: Listar modelos aprovados de WhatsApp — modelos de comunicação operationId: business_get_templates_whatsapp_catalog description: 'Permissões exigidas na chave: (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar modelos aprovados de WhatsApp — modelos de comunicação. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractWhatsappCatalogTemplate' example: - id: 70000000-0000-4000-8000-000000000001 meta_name: lembrete_mensalidade display_name: Modelo de mensagem language: pt_BR body_preview: Olá, {{1}}! Sua mensalidade vence em {{2}}. button_label: null header_type: none status: approved status_description: Aprovado e disponível para envio. sendable: true variables: - nome - vencimento '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /templates/wpp-preview: post: tags: - Modelos de comunicação summary: Pré-visualizar WhatsApp — modelos de comunicação operationId: business_post_templates_wpp_preview description: 'Permissões exigidas na chave: (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: type: sms content: Consulte a situação do seu recebível. account: 00000000-0000-4000-8000-000000000001 schema: type: object properties: type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string subject: description: Assunto da mensagem enviada ao destinatário. type: string maxLength: 200 content: description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. type: string account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string required: - type - content - account responses: '200': description: Pré-visualizar WhatsApp — modelos de comunicação. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: content: type: string description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. required: - content example: content: Olá, Cliente Exemplo! Sua mensalidade vence em 10/11/2026. button_url: null button_label: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /templates/{template}: get: tags: - Modelos de comunicação summary: Consultar — modelos de comunicação operationId: business_get_templates_template description: 'Permissões exigidas na chave: (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: template in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — modelos de comunicação. content: application/json: schema: $ref: '#/components/schemas/PublicContractTemplate' example: id: 70000000-0000-4000-8000-000000000001 name: Lembrete de vencimento description: Aviso mensal de cobrança type: email subject: Sua mensalidade vence em breve layout: charge attachments: [] content:

Olá! Sua mensalidade vence em breve.

active: true whatsapp_template_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Modelos de comunicação summary: Atualizar — modelos de comunicação operationId: business_put_templates_template description: 'Permissões exigidas na chave: (templates.view) e (templates.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: template in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: name: Aviso de vencimento type: sms content: Conteúdo ilustrativo do modelo. active: true schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 200 description: description: Explicação da finalidade do modelo de comunicação e de quando utilizá-lo. type: string nullable: true maxLength: 500 type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string subject: description: Assunto da mensagem enviada ao destinatário. type: string maxLength: 200 content: description: Obrigatório e não vazio em email/sms. Em whatsapp vem do template aprovado; content é opcional/nullable. type: string nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean nullable: true whatsapp_template_id: description: Identificador do modelo de WhatsApp aprovado para o envio. Identificação no formato UUID. type: string format: uuid nullable: true required: - name - type allOf: - anyOf: - properties: type: enum: - whatsapp description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `whatsapp`.' - required: - content properties: type: enum: - email - sms description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `email`, `sms`.' content: type: string nullable: false minLength: 1 description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. responses: '200': description: Atualizar — modelos de comunicação. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractTemplate' example: id: 70000000-0000-4000-8000-000000000001 name: Lembrete de vencimento description: Aviso mensal de cobrança type: sms subject: Sua mensalidade vence em breve layout: charge attachments: [] content:

Olá! Sua mensalidade vence em breve.

active: true whatsapp_template_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Modelos de comunicação summary: Excluir — modelos de comunicação operationId: business_delete_templates_template description: 'Permissões exigidas na chave: (templates.view) e (templates.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: template in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Excluir — modelos de comunicação. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /charges: post: tags: - Atalhos de integração summary: Criar cliente, recebível e cobrança description: 'Atalho que reúne as operações existentes em um pedido. accounts.view e clients.view; accounts.create ao criar a conta; clients.create ao cadastrar o cliente; categories.view e categories.create ao criar categoria. Para boleto/PIX: bank_slip.emit e bank_slip.print. Para link: payment_links.create e módulo de links contratado. A chave de idempotência é vinculada à empresa, à chave de acesso, ao usuário autenticado (ou acesso sem login) e ao tipo da operação. Reutilize a mesma chave e o mesmo conteúdo em repetições. Não crie outra chave para repetir uma resposta uncertain. Erros antes da preparação da operação não deixam cliente, categoria ou conta parcial.' operationId: integration_create_charges parameters: - name: Idempotency-Key in: header required: false schema: type: string minLength: 8 maxLength: 128 description: Alternativa ao campo idempotency_key do JSON. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IntegrationChargeRequest' example: idempotency_key: pedido-2026-001 client: id: 00000000-0000-4000-8000-000000000001 account: unit_price: 150 payment_method: pix due_date: '2027-10-29' cashbox_id: 00000000-0000-4000-8000-000000000002 account_standard_launch_id: 00000000-0000-4000-8000-000000000003 category: name: Serviço de exemplo description: Serviço prestado charge: kind: payment_link methods: - pix responses: '200': description: Operação existente recuperada com segurança. content: application/json: example: data: operation_id: f700f8b3-2994-5962-bddd-c1bbed0a6c9f status: completed client: id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 created: false account: id: 3a8a5f24-fe33-5bab-bb5f-43fa546e2ec8 category_id: 683f487e-f7c8-5a84-8c93-8ee8d2b785ae unit_price: '150.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/charges/f700f8b3-2994-5962-bddd-c1bbed0a6c9f status_tool: null charge: id: 9a4d3bf9-c82c-54f5-94c5-e41b6786b3be kind: payment_link status: open url: https://empresa-exemplo.invalid/pagar/TOKEN-ILUSTRATIVO-SEM-VALIDADE allowed_methods: - pix schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '201': description: Operação criada; confira status e os artefatos disponíveis. content: application/json: example: data: operation_id: f700f8b3-2994-5962-bddd-c1bbed0a6c9f status: completed client: id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 created: false account: id: 3a8a5f24-fe33-5bab-bb5f-43fa546e2ec8 category_id: 683f487e-f7c8-5a84-8c93-8ee8d2b785ae unit_price: '150.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/charges/f700f8b3-2994-5962-bddd-c1bbed0a6c9f status_tool: null charge: id: 9a4d3bf9-c82c-54f5-94c5-e41b6786b3be kind: payment_link status: open url: https://empresa-exemplo.invalid/pagar/TOKEN-ILUSTRATIVO-SEM-VALIDADE allowed_methods: - pix schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '202': description: Operação em processamento ou resposta externa inconclusiva. Consulte status_url e preserve a mesma chave. content: application/json: example: data: operation_id: 00000000-0000-4000-8000-000000000004 status: uncertain client: id: 00000000-0000-4000-8000-000000000001 created: false account: id: 00000000-0000-4000-8000-000000000005 unit_price: '150.00' due_date: '2027-10-29' category_id: null status_url: https://empresa.example.com/public-api/v1/charges/00000000-0000-4000-8000-000000000004 message: A emissão está sendo conferida. Consulte esta operação; reenviar a mesma chave não gera outra cobrança. status_tool: null charge: id: 00000000-0000-4000-8000-000000000006 kind: pix external_reference: 00000000-0000-4000-8000-000000000006 provider: null schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Espera mínima em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /charges/{operation}: get: tags: - Atalhos de integração summary: Consultar operação de cobrança description: 'Retorna a operação e os artefatos disponíveis. Exige a mesma identidade de acesso que criou a operação e todas as permissões originais; outra chave ou outro usuário recebe 404. Não cria nova cobrança nem nova nota. Permissões exigidas na chave de acesso: `accounts.view` e `clients.view`. Também exige todas as permissões gravadas em `permissions` na operação original, consultada no escopo da empresa, chave de acesso e usuário que a criou. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' operationId: integration_get_charges parameters: - description: UUID da operação retornada no pedido inicial; consulta somente leitura do processamento. name: operation in: path required: true schema: type: string format: uuid responses: '200': description: Operação existente recuperada com segurança. content: application/json: example: data: operation_id: f700f8b3-2994-5962-bddd-c1bbed0a6c9f status: completed client: id: 0d2a3ca2-d347-5c2d-aa43-16b219bde5c5 created: false account: id: 3a8a5f24-fe33-5bab-bb5f-43fa546e2ec8 category_id: 683f487e-f7c8-5a84-8c93-8ee8d2b785ae unit_price: '150.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/charges/f700f8b3-2994-5962-bddd-c1bbed0a6c9f status_tool: null charge: id: 9a4d3bf9-c82c-54f5-94c5-e41b6786b3be kind: payment_link status: open url: https://empresa-exemplo.invalid/pagar/TOKEN-ILUSTRATIVO-SEM-VALIDADE allowed_methods: - pix schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Espera mínima em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' /service-invoices: post: tags: - Atalhos de integração summary: Criar cliente, recebível e NFS-e description: 'Atalho que reúne as operações existentes em um pedido. accounts.view e clients.view; accounts.create ao criar a conta; clients.create ao cadastrar o cliente; categories.view e categories.create ao criar categoria. Para emissão: fiscal_rps.emit, fiscal_rps.view e fiscal_rps.print. A chave de idempotência é vinculada à empresa, à chave de acesso, ao usuário autenticado (ou acesso sem login) e ao tipo da operação. Reutilize a mesma chave e o mesmo conteúdo em repetições. Não crie outra chave para repetir uma resposta uncertain. Erros antes da preparação da operação não deixam cliente, categoria ou conta parcial. O envio ao emissor segue a fila existente. Número, chave e XML aparecem após autorização; o PDF pode ficar pronto depois. As URLs de download exigem as mesmas credenciais REST. Os valores tributários do exemplo são ilustrativos: use os aplicáveis à operação.' operationId: integration_create_service_invoices parameters: - name: Idempotency-Key in: header required: false schema: type: string minLength: 8 maxLength: 128 description: Alternativa ao campo idempotency_key do JSON. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IntegrationInvoiceRequest' example: idempotency_key: nfse-2026-001 client: id: 00000000-0000-4000-8000-000000000001 account: unit_price: 150 payment_method: pix due_date: '2027-10-29' cashbox_id: 00000000-0000-4000-8000-000000000002 account_standard_launch_id: 00000000-0000-4000-8000-000000000003 category: name: Serviço de exemplo description: Serviço prestado invoice: tax_code: '010101' city_iso: '3106200' competence: '2026-10-04' issqn: 0 cst: 7 use_issqn: false issqn_tributation: none value: 150 retentions: false fiscal_config: cst: '07' responses: '200': description: Operação existente recuperada com segurança. content: application/json: example: data: operation_id: 93eb37ef-331c-54ee-bde6-a685848a2be5 status: completed client: id: b0460cb8-add0-59bb-a368-0726c0e19f73 created: false account: id: f4e69e4b-333a-5d7e-bb46-4aed1daea06d category_id: 38fd13e3-110f-5f66-9661-45da57294367 unit_price: '10.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/service-invoices/93eb37ef-331c-54ee-bde6-a685848a2be5 status_tool: null invoice: batch_id: 79c52132-b5b2-5102-94a5-3e43600eb406 id: 6f5fd5aa-c67e-5d1b-8de9-6e83548da19d status: A number: '53' access_key: '00000000000000000000000000000000000000000000000000' xml_url: https://empresa-exemplo.invalid/public-api/v1/accounts-receivable/f4e69e4b-333a-5d7e-bb46-4aed1daea06d/fiscal-invoice-batches/79c52132-b5b2-5102-94a5-3e43600eb406/6f5fd5aa-c67e-5d1b-8de9-6e83548da19d/xml pdf_url: null pdf_status: processing error: null schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '201': description: Operação criada; confira status e os artefatos disponíveis. content: application/json: example: data: operation_id: 93eb37ef-331c-54ee-bde6-a685848a2be5 status: completed client: id: b0460cb8-add0-59bb-a368-0726c0e19f73 created: false account: id: f4e69e4b-333a-5d7e-bb46-4aed1daea06d category_id: 38fd13e3-110f-5f66-9661-45da57294367 unit_price: '10.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/service-invoices/93eb37ef-331c-54ee-bde6-a685848a2be5 status_tool: null invoice: batch_id: 79c52132-b5b2-5102-94a5-3e43600eb406 id: 6f5fd5aa-c67e-5d1b-8de9-6e83548da19d status: A number: '53' access_key: '00000000000000000000000000000000000000000000000000' xml_url: https://empresa-exemplo.invalid/public-api/v1/accounts-receivable/f4e69e4b-333a-5d7e-bb46-4aed1daea06d/fiscal-invoice-batches/79c52132-b5b2-5102-94a5-3e43600eb406/6f5fd5aa-c67e-5d1b-8de9-6e83548da19d/xml pdf_url: null pdf_status: processing error: null schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '202': description: Operação em processamento ou resposta externa inconclusiva. Consulte status_url e preserve a mesma chave. content: application/json: example: data: operation_id: 93eb37ef-331c-54ee-bde6-a685848a2be5 status: processing client: id: b0460cb8-add0-59bb-a368-0726c0e19f73 created: false account: id: f4e69e4b-333a-5d7e-bb46-4aed1daea06d category_id: 38fd13e3-110f-5f66-9661-45da57294367 unit_price: '10.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/service-invoices/93eb37ef-331c-54ee-bde6-a685848a2be5 status_tool: null invoice: batch_id: 79c52132-b5b2-5102-94a5-3e43600eb406 id: 6f5fd5aa-c67e-5d1b-8de9-6e83548da19d status: P number: null access_key: null xml_url: null pdf_url: null pdf_status: processing error: null schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Espera mínima em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /service-invoices/{operation}: get: tags: - Atalhos de integração summary: Consultar operação de emissão fiscal description: 'Retorna a operação e os artefatos disponíveis. Exige a mesma identidade de acesso que criou a operação e todas as permissões originais; outra chave ou outro usuário recebe 404. Não cria nova cobrança nem nova nota. Permissões exigidas na chave de acesso: `accounts.view` e `clients.view`. Também exige todas as permissões gravadas em `permissions` na operação original, consultada no escopo da empresa, chave de acesso e usuário que a criou. Quando o vínculo de uma permissão exige login, envie também X-Public-API-Key; a exigência pertence ao vínculo da chave, não é uma propriedade fixa da permissão.' operationId: integration_get_service_invoices parameters: - description: UUID da operação retornada no pedido inicial; consulta somente leitura do processamento. name: operation in: path required: true schema: type: string format: uuid responses: '200': description: Operação existente recuperada com segurança. content: application/json: example: data: operation_id: 93eb37ef-331c-54ee-bde6-a685848a2be5 status: completed client: id: b0460cb8-add0-59bb-a368-0726c0e19f73 created: false account: id: f4e69e4b-333a-5d7e-bb46-4aed1daea06d category_id: 38fd13e3-110f-5f66-9661-45da57294367 unit_price: '10.00' due_date: '2027-10-29' status_url: https://empresa-exemplo.invalid/public-api/v1/service-invoices/93eb37ef-331c-54ee-bde6-a685848a2be5 status_tool: null invoice: batch_id: 79c52132-b5b2-5102-94a5-3e43600eb406 id: 6f5fd5aa-c67e-5d1b-8de9-6e83548da19d status: A number: '53' access_key: '00000000000000000000000000000000000000000000000000' xml_url: https://empresa-exemplo.invalid/public-api/v1/accounts-receivable/f4e69e4b-333a-5d7e-bb46-4aed1daea06d/fiscal-invoice-batches/79c52132-b5b2-5102-94a5-3e43600eb406/6f5fd5aa-c67e-5d1b-8de9-6e83548da19d/xml pdf_url: null pdf_status: processing error: null schema: $ref: '#/components/schemas/PublicContractIntegrationOperationResponse' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Espera mínima em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '402': $ref: '#/components/responses/PaymentRequired' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' /accounts-payable/accounts/standard-launch: get: tags: - Contas a pagar — operações complementares summary: Listar contas contábeis (contas a pagar, operações complementares) operationId: financial_get_accounts_payable_accounts_standard_launch description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar contas contábeis (contas a pagar, operações complementares). content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractStandardLaunch' example: - id: 00000000-0000-4000-8000-000000000010 name: Serviços de exemplo code: '1.01' type: payable aliases: [] categories: [] created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/assisted: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/assisted\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"unit_price=${CAMPO_UNIT_PRICE}\" \\\n --form-string \"payment_method=${CAMPO_PAYMENT_METHOD}\" \\\ \n --form-string \"account_standard_launch_id=${CAMPO_ACCOUNT_STANDARD_LAUNCH_ID}\" \\\n --form-string\ \ \"generated_for_entity=${CAMPO_GENERATED_FOR_ENTITY}\" \\\n --form-string \"generated_for_entity_id=${CAMPO_GENERATED_FOR_ENTITY_ID}\"\ \ \\\n --form-string \"recurrence_type=${CAMPO_RECURRENCE_TYPE}\" \\\n --form \"source_file=@${ARQUIVO_SOURCE_FILE}\"" tags: - Contas a pagar — operações complementares summary: Criar — contas a pagar — operações complementares operationId: financial_post_accounts_payable_assisted description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: payment: type: object description: 'Marca a conta como "Já paga": a baixa é registrada na criação. Vem em JSON (no multipart, como texto JSON). Em compra no cartão de crédito (`payment_method: credit` da conta) a baixa tem de ser no próprio cartão da compra: `payment.payment_method` igual a `credit` e `payment.card_id` igual ao `card_id` da conta; senão a resposta é **422** ("A baixa de uma compra no cartão de crédito é feita no próprio cartão da compra."). Numa compra parcelada no cartão a baixa vale para TODAS as parcelas: a primeira recebe estes dados e as demais são baixadas no cartão, cada uma na data do seu vencimento e na fatura do seu ciclo. Sem `payment` a conta (ou todas as parcelas) nasce em aberto.' required: - date - value_paid - payment_method properties: date: type: string format: date description: Data da baixa, AAAA-MM-DD. value_paid: type: number minimum: 0.01 description: Valor pago, até 2 casas decimais. payment_method: description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `pix`, `bank_slip`, `transfer`, `check`, `credit`, `debit`, `debit_account`, `money`, `none`.' type: string enum: - pix - bank_slip - transfer - check - credit - debit - debit_account - money - none cashbox_id: type: string format: uuid nullable: true description: Caixa ativo da baixa. Obrigatório para quem pode ver caixas, exceto no cartão de crédito (compra no cartão não tem caixa). card_id: type: string format: uuid nullable: true description: Cartão da baixa. Obrigatório para quem pode ver cartões quando `payment_method` é `credit`, e igual ao `card_id` da conta. penalty: type: number minimum: 0 nullable: true description: Multa, até 2 casas decimais. interest: type: number minimum: 0 nullable: true description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. charges: type: number minimum: 0 nullable: true description: Encargos adicionais incidentes sobre o pagamento, em reais. expedient: type: number minimum: 0 nullable: true description: Despesa de expediente incorporada ao pagamento, em reais. iof: type: number minimum: 0 nullable: true description: Imposto sobre Operações Financeiras incorporado ao pagamento, em reais. insurance: type: number minimum: 0 nullable: true description: Valor de seguro incorporado ao pagamento, em reais. agreement: type: number minimum: 0 nullable: true description: Valor de convênio incorporado ao pagamento, em reais. discount_obtained: type: number minimum: 0 nullable: true description: Desconto obtido. fed_retention: type: number minimum: 0 nullable: true description: Retenção federal. iss_retention: type: number minimum: 0 nullable: true description: Retenção de ISS. category_id: description: UUID da categoria financeira utilizada para classificar o lançamento. type: string format: uuid nullable: true account_standard_launch_id: description: UUID do lançamento padrão utilizado para classificar a conta financeira. type: string format: uuid nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 observation: description: Observações complementares para acompanhamento interno do registro. type: string nullable: true maxLength: 191 unit_price: description: Obrigatório e positivo. Edição e assistida exigem até duas casas decimais. type: number minimum: 0 exclusiveMinimum: true source_file: description: Arquivo de origem utilizado para ler e preparar os dados da operação. type: string format: binary nullable: true scan_attachment_id: description: UUID do anexo previamente lido para aproveitar os dados extraídos. type: string format: uuid nullable: true source_kind: description: 'Tipo de origem dos dados usados para preparar o lançamento. Opções: `invoice`, `receipt`, `document`.' type: string nullable: true enum: - invoice - receipt - document generated_for_entity: description: 'Tipo da pessoa ou cadastro que origina o lançamento financeiro. Opções: `provider`, `employee`, `intern`, `cashbox`, `partner`.' type: string nullable: true enum: - provider - employee - intern - cashbox - partner generated_for_entity_id: type: string format: uuid nullable: false description: Obrigatório na criação. Na edição omissão preserva pessoa; null não é aceito. cashbox_id: description: Obrigatório com cashboxes.view quando payment_method não é credit; não é required universal. category_id: description: Obrigatório conforme categories.view; categoria de conta a pagar elegível do tenant. due_date: description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. due_day: type: integer nullable: true description: Base opcional e nullable, inteira, sem faixa universal. Em unique, 0/32 são preservados como valores de campo ignorado. Recorrências exigíveis usam 1..31. Criação parcelada no cartão a pagar permite omitir/null; quando informado nesse ramo, aplica 1..31. Entrada não muda representação string da resposta. required: - unit_price - payment_method - account_standard_launch_id - generated_for_entity - generated_for_entity_id - recurrence_type allOf: - anyOf: - required: - recurrence_type properties: recurrence_type: enum: - unique description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `unique`.' - required: - recurrence_type - due_day properties: recurrence_type: enum: - monthly - fortnightly - quarterly - semiannually - annually description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `monthly`, `fortnightly`, `quarterly`, `semiannually`, `annually`.' due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - recurrence_type - installments properties: recurrence_type: enum: - installments description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. payment_method: enum: - credit description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `credit`.' due_day: type: integer nullable: true minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. - required: - recurrence_type - installments - due_day properties: recurrence_type: enum: - installments description: 'Modalidade de recorrência usada para gerar os lançamentos da conta. Opções: `installments`.' installments: type: integer nullable: false minimum: 1 maximum: 300 description: Quantidade de parcelas previstas para o lançamento financeiro. payment_method: not: enum: - credit description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. due_day: type: integer nullable: false minimum: 1 maximum: 31 description: Dia do mês previsto para o vencimento da obrigação financeira. example: unit_price: 100 payment_method: pix account_standard_launch_id: 00000000-0000-4000-8000-000000000001 cashbox_id: 00000000-0000-4000-8000-000000000001 category_id: 00000000-0000-4000-8000-000000000001 due_date: '2026-11-03' generated_for_entity: provider generated_for_entity_id: 00000000-0000-4000-8000-000000000001 recurrence_type: unique responses: '200': description: Criar — contas a pagar — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountPayable' example: id: 20000000-0000-4000-8000-000000000012 balance_paid: '0.00' balance: '150.00' status: pending origin: documento generated_for_entity: provider generated_for_entity_id: 20000000-0000-4000-8000-000000000004 description: Serviço Exemplo type: normal payment_method: pix unit_price: '150.00' due_date: '2026-11-10T00:00:00.000000Z' original_due_date: '2026-11-10T00:00:00.000000Z' archived_at: null reconciled: false created_by: 20000000-0000-4000-8000-000000000003 recurrence_id: null category_id: null cashbox_id: null card_id: null account_standard_launch_id: null receipt_attachment_id: null invoice_attachment_id: null document_number: EXEMPLO-001 installment: 1 installments: 1 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' card_bill_redirect: null card_bill_redirects: [] payment_target: null movimento_amarrado: null payments: [] receipt: null invoice: null category: null card: null cashbox: null standard_launch: null generated_for_entity_type: provider generated_for_entity_name: Fornecedor Exemplo generated_for_entity_document: 00000000000191 created_by_name: Pessoa Exemplo recurrence: null document_adherence: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: Idempotency-Key in: header required: true schema: type: string format: uuid example: 00000000-0000-4000-8000-000000000001 description: Única fonte da chave idempotente. O campo homônimo no corpo não substitui este cabeçalho. /accounts-payable/employees: get: tags: - Contas a pagar — operações complementares summary: Listar funcionários — contas a pagar — operações complementares operationId: financial_get_accounts_payable_employees description: 'Permissões exigidas na chave: (accounts.view) e (employees.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar funcionários — contas a pagar — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name example: - id: 00000000-0000-4000-8000-000000000002 name: Pessoa Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/import-xml: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/import-xml\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"xmlFile=@${ARQUIVO_XMLFILE}\"" tags: - Contas a pagar — operações complementares summary: Importar documento XML — contas a pagar — operações complementares operationId: financial_post_accounts_payable_import_xml description: 'Permissões exigidas na chave: (accounts.view) e (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: preview: description: Prévia dos dados preparados para conferência antes da confirmação. type: boolean xmlFile: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' required: - xmlFile responses: '200': description: Importar documento XML — contas a pagar — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: type: object properties: fiscal_metadata: $ref: '#/components/schemas/PublicContractXmlFiscalMetadata' description: Metadados fiscais extraídos do XML, sem emissão ou cadastro automático. provider_created: type: boolean description: Indica se houve criação de fornecedor; a leitura XML atual devolve falso. invoice_total: oneOf: - type: string nullable: true - type: number description: Valor total da nota ou fatura considerado na operação. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. cpf_cnpj: type: string nullable: true description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. provider: oneOf: - $ref: '#/components/schemas/PublicContractRawProvider' - type: string nullable: true enum: - null description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. own_company: type: boolean description: Indica se o documento identificado pertence à matriz ou filial da própria empresa. provider_suggestion: anyOf: - $ref: '#/components/schemas/PublicContractCnpjSuggestion' - type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - name - cpf_cnpj - type - type: string nullable: true enum: - null description: Fornecedor candidato ao vínculo; confira a sugestão antes de confirmar o cadastro. required: - provider_created - invoice_total - description - cnpj - cpf_cnpj - name - fantasy_name - provider - own_company - provider_suggestion description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: provider_created: false invoice_total: 150.0 description: Serviço Exemplo cnpj: null cpf_cnpj: null name: Emitente Exemplo fantasy_name: null provider: null own_company: false provider_suggestion: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/interns: get: tags: - Contas a pagar — operações complementares summary: Listar estagiários — contas a pagar — operações complementares operationId: financial_get_accounts_payable_interns description: 'Permissões exigidas na chave: (accounts.view) e (interns.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar estagiários — contas a pagar — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name example: - id: 00000000-0000-4000-8000-000000000003 name: Estagiário Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/mass-delete: delete: tags: - Contas a pagar — operações complementares summary: Excluir contas selecionadas — contas a pagar — operações complementares operationId: financial_delete_accounts_payable_mass_delete description: 'Permissões exigidas na chave: (accounts.view) e (accounts.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. O corpo deve trazer `ids`, uma lista não vazia de identificadores das contas; sem ela a resposta é 422 e nada é excluído. Contas pagas são excluídas com o estorno das baixas no caixa.' responses: '200': description: Excluir contas selecionadas — contas a pagar — operações complementares. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array minItems: 1 items: type: string minLength: 1 description: Lista de identificadores dos registros abrangidos pela operação. required: - ids example: ids: - 10000000-0000-4000-8000-000000000101 x-docs-example-note: 'UUID FICTÍCIO: substitua por uma conta a pagar existente e elegível do próprio tenant. O exemplo contém um item, não vazio. A exclusão real depende das guardas do serviço, incluindo faturas de cartão, despesas de tarifa e conciliação; nenhum registro foi provisionado ou excluído.' /accounts-payable/providers: get: tags: - Contas a pagar — operações complementares summary: Listar fornecedores — contas a pagar — operações complementares operationId: financial_get_accounts_payable_providers description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar fornecedores — contas a pagar — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. required: - id - name example: - id: 00000000-0000-4000-8000-000000000004 name: Fornecedor Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/scan: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/scan\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"images[0]=@${ARQUIVO_IMAGES_0_}\" \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - Contas a pagar — operações complementares summary: Criar — contas a pagar — operações complementares operationId: financial_post_accounts_payable_scan description: 'Permissões exigidas na chave: (accounts.create). precisaDeOcr(file) decide o caminho: quando verdadeiro, retorna 202 com scan_id; caso contrário segue o rascunho síncrono. Extensão/MIME isolados não garantem PNG=202 ou PDF=200.' requestBody: required: true content: multipart/form-data: schema: type: object properties: mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `traditional`, `economic`, `ai`.' type: string nullable: true enum: - traditional - economic - ai pricing_acknowledged_version: type: string nullable: true maxLength: 32 description: Versão dos preços cuja ciência foi confirmada pelo solicitante. idempotency_key: type: string nullable: true maxLength: 128 description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. images: type: array items: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' description: Imagens do documento enviadas para leitura ou comprovação. minItems: 1 maxItems: 20 text: description: Texto informado ou extraído do documento para análise. type: string nullable: true maxLength: 200000 file: type: string format: binary nullable: false description: Arquivo enviado para processamento; use o tipo de conteúdo aceito nesta operação. document_type: type: string enum: - invoice - receipt description: Obrigatório quando file é enviado. oneOf: - required: - file - document_type not: required: - images - required: - images not: required: - file responses: '200': description: Leitura concluída de forma síncrona; rascunho na raiz. content: application/json: example: provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.00' source: rotulo due_date: value: '2026-11-10' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null attachment_id: 00000000-0000-4000-8000-000000000070 category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] requested_engine: traditional selected_page: 1 page_hash: 7ba2e19eedefa182e91c619556e75caddcda106ed2825927cd4e2eb51a844627 ocr_context_truncated: false effective_engine: traditional operation_id: null fallback_reason: null provider_suggestion: null schema: $ref: '#/components/schemas/PublicContractScanDraft' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '202': description: OCR aceito para processamento. Não confirma leitura nem criação de conta. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' example: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/scan-document: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-payable/scan-document\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"images[0]=@${ARQUIVO_IMAGES_0_}\" \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - Contas a pagar — operações complementares summary: Criar — contas a pagar — operações complementares operationId: financial_post_accounts_payable_scan_document description: 'Permissões exigidas na chave: (accounts.create). Alias de scan: precisaDeOcr(file) decide 202 com scan_id ou rascunho síncrono; MIME não determina universalmente o ramo.' requestBody: required: true content: multipart/form-data: schema: type: object properties: mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `traditional`, `economic`, `ai`.' type: string nullable: true enum: - traditional - economic - ai pricing_acknowledged_version: type: string nullable: true maxLength: 32 description: Versão dos preços cuja ciência foi confirmada pelo solicitante. idempotency_key: type: string nullable: true maxLength: 128 description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. images: type: array items: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' description: Imagens do documento enviadas para leitura ou comprovação. minItems: 1 maxItems: 20 text: description: Texto informado ou extraído do documento para análise. type: string nullable: true maxLength: 200000 file: type: string format: binary nullable: false description: Arquivo enviado para processamento; use o tipo de conteúdo aceito nesta operação. document_type: type: string enum: - invoice - receipt description: Obrigatório quando file é enviado. oneOf: - required: - file - document_type not: required: - images - required: - images not: required: - file responses: '200': description: Leitura concluída de forma síncrona; rascunho na raiz. content: application/json: example: provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.00' source: rotulo due_date: value: '2026-11-10' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null attachment_id: 00000000-0000-4000-8000-000000000070 category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] requested_engine: traditional selected_page: 1 page_hash: 7ba2e19eedefa182e91c619556e75caddcda106ed2825927cd4e2eb51a844627 ocr_context_truncated: false effective_engine: traditional operation_id: null fallback_reason: null provider_suggestion: null schema: $ref: '#/components/schemas/PublicContractScanDraft' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '202': description: OCR aceito para processamento. Não confirma leitura nem criação de conta. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' example: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/scan/{scan_id}: get: tags: - Contas a pagar — operações complementares summary: Consultar andamento e rascunho da leitura operationId: financial_get_accounts_payable_scan_scan_id description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Retorna 200 com status pending, ready ou failed e o rascunho na raiz, sem envelope data. Enquanto pending, aguarde antes de consultar novamente. failed preserva campos vazios e notas para preenchimento manual. provider_suggestion pode ser null ou estar ausente no resultado ready. Identificador expirado, inexistente ou pertencente a outra empresa ou usuário retorna 404.' parameters: - name: scan_id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Estado atual do OCR, com o rascunho na raiz. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' examples: pending: value: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null ready: value: status: ready scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.25' source: rotulo due_date: value: '2026-10-20' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null effective_engine: traditional failed: value: status: failed scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: - Não foi possível concluir a leitura. Revise o documento e preencha os dados manualmente. generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/archive: patch: tags: - Contas a pagar — operações complementares summary: Arquivar conta — contas a pagar — operações complementares operationId: financial_patch_accounts_payable_account_payable_archive description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Arquivar conta — contas a pagar — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. required: - archived_at example: archived_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/document-adherence/history: get: tags: - Contas a pagar — operações complementares summary: Consultar histórico — contas a pagar — operações complementares operationId: financial_get_accounts_payable_account_payable_document_adherence_history description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar histórico — contas a pagar — operações complementares. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractAdherenceHistory' example: - revision: 7 status: complete score: 49 range: orange color: orange summary: Avaliação da revisão 7. error_code: null flags: - code: receipt_amount_mismatch severity: critical field: payment_amount document_role: receipt attachment_id: 00000000-0000-4000-8000-000000000030 payment_id: 00000000-0000-4000-8000-000000000031 expected: '800.00' observed: '2000.00' algorithm_version: 2026.09.18-1 analyzed_at: '2026-10-29T12:00:00+00:00' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/payments/{payment}/invoice: get: tags: - Contas a pagar — operações complementares summary: Baixar fatura da baixa — contas a pagar — operações complementares operationId: financial_get_accounts_payable_account_payable_payments_payment_invoice description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: payment in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar fatura da baixa — contas a pagar — operações complementares. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/payments/{payment}/receipt: get: tags: - Contas a pagar — operações complementares summary: Baixar comprovante da baixa — contas a pagar — operações complementares operationId: financial_get_accounts_payable_account_payable_payments_payment_receipt description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: payment in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar comprovante da baixa — contas a pagar — operações complementares. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-payable/{account_payable}/unarchive: patch: tags: - Contas a pagar — operações complementares summary: Restaurar conta arquivada — contas a pagar — operações complementares operationId: financial_patch_accounts_payable_account_payable_unarchive description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_payable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Restaurar conta arquivada — contas a pagar — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. required: - archived_at example: archived_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/account-standard-launch: get: tags: - Contas a receber — operações complementares summary: Listar contas contábeis (contas a receber, operações complementares) operationId: financial_get_accounts_receivable_account_standard_launch description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar contas contábeis (contas a receber, operações complementares). content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractStandardLaunch' example: - id: 00000000-0000-4000-8000-000000000011 name: Serviços de exemplo code: '1.01' type: receivable aliases: [] categories: [] created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/clients: get: tags: - Contas a receber — operações complementares summary: Listar clientes — contas a receber — operações complementares operationId: financial_get_accounts_receivable_clients description: 'Permissões exigidas na chave: (accounts.view) e (clients.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar clientes — contas a receber — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. code: type: string nullable: true description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. required: - id - name - code example: - id: 00000000-0000-4000-8000-000000000005 name: Cliente Exemplo code: '1' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/employees: get: tags: - Contas a receber — operações complementares summary: Listar funcionários — contas a receber — operações complementares operationId: financial_get_accounts_receivable_employees description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar funcionários — contas a receber — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name example: - id: 00000000-0000-4000-8000-000000000002 name: Pessoa Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/import-xml: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-receivable/import-xml\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"xmlFile=@${ARQUIVO_XMLFILE}\"" tags: - Contas a receber — operações complementares summary: Importar documento XML — contas a receber — operações complementares operationId: financial_post_accounts_receivable_import_xml description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: preview: description: Prévia dos dados preparados para conferência antes da confirmação. type: boolean xmlFile: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' required: - xmlFile responses: '200': description: Importar documento XML — contas a receber — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: type: object properties: invoice_total: oneOf: - type: string nullable: true - type: number description: Valor total da nota ou fatura considerado na operação. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. fiscal_metadata: oneOf: - $ref: '#/components/schemas/PublicContractXmlFiscalMetadata' - type: string nullable: true enum: - null description: Metadados fiscais extraídos do XML, sem emissão ou cadastro automático. client: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. required: - id - name - cpf - cnpj nullable: true description: Cliente associado à operação; reutilize um cadastro da empresa ou informe os dados aceitos para criação. client_suggestion: anyOf: - $ref: '#/components/schemas/PublicContractCnpjSuggestion' - type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - name - cpf_cnpj - type - type: string nullable: true enum: - null description: Cliente candidato ao vínculo; confira a sugestão antes de confirmar o cadastro. own_company: type: boolean description: Indica se o documento identificado pertence à matriz ou filial da própria empresa. required: - invoice_total - description - fiscal_metadata - client - client_suggestion - own_company description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: invoice_total: 150.0 description: Serviço Exemplo fiscal_metadata: null client: null client_suggestion: null own_company: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/interns: get: tags: - Contas a receber — operações complementares summary: Listar estagiários — contas a receber — operações complementares operationId: financial_get_accounts_receivable_interns description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar estagiários — contas a receber — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name example: - id: 00000000-0000-4000-8000-000000000003 name: Estagiário Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/mass-delete: delete: tags: - Contas a receber — operações complementares summary: Excluir contas selecionadas — contas a receber — operações complementares operationId: financial_delete_accounts_receivable_mass_delete description: 'Permissões exigidas na chave: (accounts.view) e (accounts.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. O corpo deve trazer `ids`, uma lista não vazia de identificadores das contas; sem ela a resposta é 422 e nada é excluído. Contas pagas são excluídas com o estorno das baixas no caixa.' responses: '200': description: Excluir contas selecionadas — contas a receber — operações complementares. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array minItems: 1 items: type: string minLength: 1 description: Lista de identificadores dos registros abrangidos pela operação. required: - ids example: ids: - 10000000-0000-4000-8000-000000000102 x-docs-example-note: 'UUID FICTÍCIO: substitua por uma conta a receber existente e elegível do próprio tenant. O exemplo contém um item, não vazio. Boleto ou nota fiscal ativos, documentos auxiliares e as demais guardas continuam valendo; nenhum registro foi provisionado ou excluído.' /accounts-receivable/providers: get: tags: - Contas a receber — operações complementares summary: Listar fornecedores — contas a receber — operações complementares operationId: financial_get_accounts_receivable_providers description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar fornecedores — contas a receber — operações complementares. content: application/json: schema: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. required: - id - name example: - id: 00000000-0000-4000-8000-000000000004 name: Fornecedor Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/scan: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-receivable/scan\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form\ \ \"images[0]=@${ARQUIVO_IMAGES_0_}\" \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - Contas a receber — operações complementares summary: Ler documento — contas a receber — operações complementares operationId: financial_post_accounts_receivable_scan description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A resposta fica na raiz, sem envelope data. PDF com texto ou leitura já feita no aparelho pode retornar 200 com ScanDraft. Arquivo que precisa de OCR retorna 202 com ScanStatus pending e scan_id; consulte GET /accounts-receivable/scan/{scan_id} até ready ou failed. A leitura produz sugestões para revisão e não cria a conta. provider_suggestion é objeto opcional ou null, sem value/source; em ready pode ser omitido quando não aplicável.' requestBody: required: true content: multipart/form-data: schema: type: object properties: mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `traditional`, `economic`, `ai`.' type: string nullable: true enum: - traditional - economic - ai pricing_acknowledged_version: type: string nullable: true maxLength: 32 description: Versão dos preços cuja ciência foi confirmada pelo solicitante. idempotency_key: type: string nullable: true maxLength: 128 description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. images: type: array items: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' description: Imagens do documento enviadas para leitura ou comprovação. minItems: 1 maxItems: 20 text: description: Texto informado ou extraído do documento para análise. type: string nullable: true maxLength: 200000 file: type: string format: binary nullable: false description: Arquivo enviado para processamento; use o tipo de conteúdo aceito nesta operação. document_type: type: string enum: - invoice - receipt description: Obrigatório quando file é enviado. oneOf: - required: - file - document_type not: required: - images - required: - images not: required: - file responses: '200': description: Leitura concluída de forma síncrona; rascunho na raiz. content: application/json: example: provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.00' source: rotulo due_date: value: '2026-11-10' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null attachment_id: 00000000-0000-4000-8000-000000000070 category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] requested_engine: traditional selected_page: 1 page_hash: 7ba2e19eedefa182e91c619556e75caddcda106ed2825927cd4e2eb51a844627 ocr_context_truncated: false effective_engine: traditional operation_id: null fallback_reason: null provider_suggestion: null schema: $ref: '#/components/schemas/PublicContractScanDraft' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '202': description: OCR aceito para processamento. Não confirma leitura nem criação de conta. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' example: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/scan-document: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/accounts-receivable/scan-document\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"images[0]=@${ARQUIVO_IMAGES_0_}\" \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - Contas a receber — operações complementares summary: Ler documento — contas a receber — operações complementares operationId: financial_post_accounts_receivable_scan_document description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. A resposta fica na raiz, sem envelope data. PDF com texto ou leitura já feita no aparelho pode retornar 200 com ScanDraft. Arquivo que precisa de OCR retorna 202 com ScanStatus pending e scan_id; consulte GET /accounts-receivable/scan/{scan_id} até ready ou failed. A leitura produz sugestões para revisão e não cria a conta. provider_suggestion é objeto opcional ou null, sem value/source; em ready pode ser omitido quando não aplicável.' requestBody: required: true content: multipart/form-data: schema: type: object properties: mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `traditional`, `economic`, `ai`.' type: string nullable: true enum: - traditional - economic - ai pricing_acknowledged_version: type: string nullable: true maxLength: 32 description: Versão dos preços cuja ciência foi confirmada pelo solicitante. idempotency_key: type: string nullable: true maxLength: 128 description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. images: type: array items: type: string format: binary description: 'Limite do arquivo em KiB: max 102400.' description: Imagens do documento enviadas para leitura ou comprovação. minItems: 1 maxItems: 20 text: description: Texto informado ou extraído do documento para análise. type: string nullable: true maxLength: 200000 file: type: string format: binary nullable: false description: Arquivo enviado para processamento; use o tipo de conteúdo aceito nesta operação. document_type: type: string enum: - invoice - receipt description: Obrigatório quando file é enviado. oneOf: - required: - file - document_type not: required: - images - required: - images not: required: - file responses: '200': description: Leitura concluída de forma síncrona; rascunho na raiz. content: application/json: example: provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.00' source: rotulo due_date: value: '2026-11-10' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null attachment_id: 00000000-0000-4000-8000-000000000070 category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] requested_engine: traditional selected_page: 1 page_hash: 7ba2e19eedefa182e91c619556e75caddcda106ed2825927cd4e2eb51a844627 ocr_context_truncated: false effective_engine: traditional operation_id: null fallback_reason: null provider_suggestion: null schema: $ref: '#/components/schemas/PublicContractScanDraft' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '202': description: OCR aceito para processamento. Não confirma leitura nem criação de conta. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' example: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/scan/{scan_id}: get: tags: - Contas a receber — operações complementares summary: Consultar andamento e rascunho da leitura operationId: financial_get_accounts_receivable_scan_scan_id description: 'Permissões exigidas na chave: (accounts.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Retorna 200 com status pending, ready ou failed e o rascunho na raiz, sem envelope data. Enquanto pending, aguarde antes de consultar novamente. failed preserva campos vazios e notas para preenchimento manual. provider_suggestion pode ser null ou estar ausente no resultado ready. Identificador expirado, inexistente ou pertencente a outra empresa ou usuário retorna 404.' parameters: - name: scan_id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Estado atual do OCR, com o rascunho na raiz. content: application/json: schema: $ref: '#/components/schemas/PublicContractScanStatus' examples: pending: value: status: pending scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null ready: value: status: ready scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: '150.25' source: rotulo due_date: value: '2026-10-20' source: rotulo issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: [] generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null effective_engine: traditional client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null failed: value: status: failed scan_id: d992ec6e-a081-4bbd-8534-52d44b2d5810 requested_engine: traditional provider_name: value: null source: null provider_document: value: null source: null paid: value: null source: null payment_date: value: null source: null payment_amount: value: null source: null payer_document: value: null source: null payer_name: value: null source: null document_number: value: null source: null direction: value: null source: null attachment_id: '' provider_id: value: null source: null std_launch_id: value: null source: null category_id: value: null source: null amount: value: null source: null due_date: value: null source: null issue_date: value: null source: null net_amount: value: null source: null cnpj: value: null source: null category_ids: [] std_launch_candidates: [] suggested_alias: null notes: - Não foi possível concluir a leitura. Revise o documento e preencha os dados manualmente. generated_for_entity: value: null source: null generated_for_entity_id: value: null source: null suggested_person_name: value: null source: null suggested_provider_name: value: null source: null suggested_provider_document: value: null source: null provider_suggestion: null client_id: value: null source: null client_name: value: null source: null client_document: value: null source: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/workflow-batch: patch: tags: - Contas a receber — operações complementares summary: Atribuir régua em lote — contas a receber — operações complementares operationId: financial_patch_accounts_receivable_workflow_batch description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: workflow_id: 00000000-0000-4000-8000-000000000001 update_all: false accounts: - 00000000-0000-4000-8000-000000000001 schema: type: object properties: accounts: description: Contas financeiras incluídas na consulta ou operação. type: array items: type: string format: uuid retentions: description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. type: object items: {} nullable: true properties: retentions: type: boolean description: Indica se há retenções tributárias a considerar na emissão ou no lançamento. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. issqn: description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. type: number nullable: true workflow_id: description: UUID da régua de cobrança associada ao recebível. type: string update_all: description: Solicita aplicar a alteração aos demais registros abrangidos pela recorrência. type: boolean charge_group_recurrences: description: Recorrências que devem integrar o agrupamento de cobranças. type: array items: type: string format: uuid nullable: true required: - accounts - workflow_id - update_all responses: '200': description: Atribuir régua em lote — contas a receber — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: message: type: string description: Mensagem legível que explica o resultado da operação. skipped: type: integer description: Quantidade de itens não processados por já atenderem à condição ou estarem inelegíveis. required: - message - skipped example: message: Workflow atualizado com sucesso skipped: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Contas a receber — operações complementares summary: Desvincular régua em lote — contas a receber — operações complementares operationId: financial_delete_accounts_receivable_workflow_batch description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: accounts: - 8588482b-be98-5f8b-bcf9-dd237ff44e98 schema: type: object properties: accounts: description: Contas financeiras incluídas na consulta ou operação. type: array items: type: string format: uuid required: - accounts responses: '200': description: Desvincular régua em lote — contas a receber — operações complementares. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/archive: patch: tags: - Contas a receber — operações complementares summary: Arquivar conta — contas a receber — operações complementares operationId: financial_patch_accounts_receivable_account_receivable_archive description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Arquivar conta — contas a receber — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. required: - archived_at example: archived_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/billing-email-preferences: get: tags: - Contas a receber — operações complementares summary: Consultar preferências de cobrança por e-mail — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_billing_email_preferences description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar preferências de cobrança por e-mail — contas a receber — operações complementares. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractBillingEmailPreference' example: - email: cliente@example.com status: active description: E-mails de cobrança habilitados. changed_at: null preferences_url: https://example.com/billing-email/preferences/token-ilustrativo history: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/client-info: get: tags: - Contas a receber — operações complementares summary: Consultar dados do cliente — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_client_info description: 'Permissões exigidas na chave: (accounts.view) e (clients.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar dados do cliente — contas a receber — operações complementares. content: application/json: schema: $ref: '#/components/schemas/PublicContractClient' example: id: 00000000-0000-4000-8000-000000000005 type: PF name: Cliente Exemplo code: '1' fantasy_name: null cpf: 000.000.000-00 cnpj: null ie: null im: null billing_day: '10' client_since: '2026-10-01' description: Cadastro sintético de exemplo active: true international: false nif: null nao_nif: null emails: [] phones: [] bank_accounts: [] addresses: [] contacts: [] documents: [] created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' comex_vinculo: null comex_moeda: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/fiscal-invoice-batches/{fiscal_rps_lote_id}: get: tags: - Contas a receber — operações complementares summary: Consultar lote fiscal da conta — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_fiscal_rps_lote_fiscal_rps_lote_id description: 'Permissões exigidas na chave: (accounts.view) e (fiscal_rps.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: fiscal_rps_lote_id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar lote fiscal da conta — contas a receber — operações complementares. content: application/json: schema: $ref: '#/components/schemas/PublicContractFiscalBatch' example: id: 20000000-0000-4000-8000-000000000030 number: '0' content: null error: null protocol: null year: '2026' status: P alerts: a:0:{} forced: 0 rps: - id: 20000000-0000-4000-8000-000000000031 number: '0' receipt: '0' access_token: null year: '2026' content: null error: null verification: null alerts: null status: P operation_nature: null emission: null erro: null parsed_alerts: [] erro: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/invoice: get: tags: - Contas a receber — operações complementares summary: Baixar fatura da conta — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_invoice description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar fatura da conta — contas a receber — operações complementares. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/payments/{payment}/invoice: get: tags: - Contas a receber — operações complementares summary: Baixar fatura da baixa — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_payments_payment_invoice description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: payment in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar fatura da baixa — contas a receber — operações complementares. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/payments/{payment}/receipt: get: tags: - Contas a receber — operações complementares summary: Baixar comprovante da baixa — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_payments_payment_receipt description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: payment in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar comprovante da baixa — contas a receber — operações complementares. content: application/octet-stream: schema: type: string format: binary application/pdf: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/recurrences-to-group: get: tags: - Contas a receber — operações complementares summary: Consultar contas agrupáveis — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_recurrences_to_group description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar contas agrupáveis — contas a receber — operações complementares. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractRecurrenceToGroup' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: - id: 00000000-0000-4000-8000-000000000012 description: Mensalidade de exemplo unit_price: 150.0 due_day: 10 type: monthly charge_group_id: null workflow_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/template: post: tags: - Contas a receber — operações complementares summary: Enviar comunicação manual — contas a receber — operações complementares operationId: financial_post_accounts_receivable_account_receivable_template description: 'Permissões exigidas na chave: (workflows.view) e (workflows.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: template_id: 00000000-0000-4000-8000-000000000001 schema: type: object properties: template_id: description: Obrigatório, string UUID, validado antes da busca/envio. UUID inexistente segue recusa de recurso. type: string format: uuid nullable: false required: - template_id responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '204': description: Envio solicitado sem acompanhamento de entrega; resposta sem corpo. '202': description: Envio aceito com acompanhamento (track_delivery=true); retorna a cobrança e os destinatários. content: application/json: schema: type: object properties: charge_id: type: string format: uuid description: Identificador do envio de cobrança associado ao registro. recipients: type: array items: type: string description: Destinatários registrados ou elegíveis para o envio. required: - charge_id - recipients example: charge_id: 20000000-0000-4000-8000-000000000060 recipients: - cliente@example.com /accounts-receivable/{account_receivable}/charges/{charge}/cancellations: post: tags: - Contas a receber — operações complementares summary: Cancelar envio em processamento — contas a receber — operações complementares operationId: financial_post_accounts_receivable_account_receivable_charges_charge_cancel description: 'Permissões exigidas na chave: (workflows.view) e (workflows.create). Cancela um envio de cobrança que está em processamento (gerando anexos ou aguardando o documento), liberando um novo envio manual. Só aceita envio em processamento da conta informada; outro status devolve 422 e envio de outra conta devolve 404.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: charge in: path required: true schema: type: string format: uuid description: Identificador do envio (cobrança) da conta. responses: '204': description: Envio cancelado. '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/template-preview: post: tags: - Contas a receber — operações complementares summary: Pré-visualizar comunicação — contas a receber — operações complementares operationId: financial_post_accounts_receivable_account_receivable_template_preview description: 'Permissões exigidas na chave: (workflows.view) e (templates.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: template_id: 00000000-0000-4000-8000-000000000001 schema: type: object properties: template_id: description: Obrigatório, string UUID, validado antes da busca/envio. UUID inexistente segue recusa de recurso. type: string format: uuid nullable: false required: - template_id responses: '200': description: Pré-visualizar comunicação — contas a receber — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: subject: type: string description: Assunto da mensagem enviada ao destinatário. content: type: string description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. button_url: type: string nullable: true description: Endereço associado ao botão da mensagem. button_label: type: string nullable: true description: Texto exibido no botão do modelo de mensagem. credit_quote: type: object properties: service: type: string description: Serviço ao qual o lançamento de créditos ou consumo se refere. quantity: type: integer description: Quantidade de unidades do serviço ou produto solicitada. included_quantity: type: integer description: Quantidade de destinatários contemplada sem débito de créditos. unit_credits: type: integer description: Custo em créditos por unidade do serviço. total_credits: type: integer description: Créditos totais calculados para a cotação ou consumo. sufficient: type: boolean description: Indica se a franquia ou o saldo permite atender aos destinatários elegíveis. tariff_version: type: string description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. required: - service - quantity - unit_credits - total_credits - sufficient - tariff_version description: Cotação de créditos para os destinatários elegíveis do envio. required: - content - credit_quote example: subject: Cobrança Exemplo — R$ 150,00 content: '

Olá, Cliente Exemplo. Serviço Exemplo: R$ 150,00.

' credit_quote: service: billing_email quantity: 1 included_quantity: 1 unit_credits: 0 total_credits: 0 sufficient: true tariff_version: 2026-10-included-v1-0f38ecd984 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/triggers: get: tags: - Contas a receber — operações complementares summary: Consultar gatilhos — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_triggers description: 'Permissões exigidas na chave: (workflows.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar gatilhos — contas a receber — operações complementares. content: application/json: schema: $ref: '#/components/schemas/PublicContractWorkflow' example: properties: id: 20000000-0000-4000-8000-000000000020 name: Régua Exemplo description: Rascunho sem etapas active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 1 sequence: [] linked_account: - id: 20000000-0000-4000-8000-000000000021 generated_for_entity: client generated_for_entity_id: 20000000-0000-4000-8000-000000000005 workflow_id: 20000000-0000-4000-8000-000000000020 retentions: null bank_skip: null description: Serviço Exemplo type: normal payment_method: pix origin: manual unit_price: '150.00' balance_paid: '50.00' balance: '100.00' status: partial due_date: '2026-11-10T00:00:00.000000Z' original_due_date: '2026-11-10T00:00:00.000000Z' archived_at: null reconciled: false created_by: 20000000-0000-4000-8000-000000000003 recurrence_id: null category_id: null cashbox_id: null card_id: null account_standard_launch_id: null receipt_attachment_id: null invoice_attachment_id: null document_number: EXEMPLO-001 installment: 1 installments: 1 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Contas a receber — operações complementares summary: Executar gatilho manual — contas a receber — operações complementares operationId: financial_post_accounts_receivable_account_receivable_triggers description: 'Permissões exigidas na chave: (workflows.view) e (workflows.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: step_id: 3c5a6da2-7fa6-5f02-86e7-3e0b7d371d6c schema: type: object properties: step_id: description: UUID da etapa da régua de cobrança que será executada ou alterada. type: string format: uuid required: - step_id responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '204': description: Gatilho manual executado; resposta sem corpo. /accounts-receivable/{account_receivable}/unarchive: patch: tags: - Contas a receber — operações complementares summary: Restaurar conta arquivada — contas a receber — operações complementares operationId: financial_patch_accounts_receivable_account_receivable_unarchive description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Restaurar conta arquivada — contas a receber — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: type: object properties: archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. required: - archived_at example: archived_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/workflow: patch: tags: - Contas a receber — operações complementares summary: Atribuir régua de cobrança — contas a receber — operações complementares operationId: financial_patch_accounts_receivable_account_receivable_workflow description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: workflow_id: 00000000-0000-4000-8000-000000000001 update_all: false schema: type: object properties: retentions: description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. type: object items: {} nullable: true properties: retentions: type: boolean description: Indica se há retenções tributárias a considerar na emissão ou no lançamento. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. issqn: description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. type: number nullable: true workflow_id: description: UUID da régua de cobrança associada ao recebível. type: string update_all: description: Solicita aplicar a alteração aos demais registros abrangidos pela recorrência. type: boolean required: - workflow_id - update_all responses: '200': description: Atribuir régua de cobrança — contas a receber — operações complementares. A resposta informa o resultado da alteração solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountReceivable' example: id: 20000000-0000-4000-8000-000000000021 generated_for_entity: client generated_for_entity_id: 20000000-0000-4000-8000-000000000005 workflow_id: 20000000-0000-4000-8000-000000000020 retentions: null bank_skip: null description: Serviço Exemplo type: normal payment_method: pix origin: manual unit_price: '150.00' balance_paid: '50.00' balance: '100.00' status: partial due_date: '2026-11-10T00:00:00.000000Z' original_due_date: '2026-11-10T00:00:00.000000Z' archived_at: null reconciled: false created_by: 20000000-0000-4000-8000-000000000003 recurrence_id: null category_id: null cashbox_id: null card_id: null account_standard_launch_id: null receipt_attachment_id: null invoice_attachment_id: null document_number: EXEMPLO-001 installment: 1 installments: 1 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' movimento_amarrado: null payments: - id: 20000000-0000-4000-8000-000000000011 value_paid: 50 date: '2026-10-29T00:00:00.000000Z' payment_method: pix cashbox_id: null card_id: null user_id: 20000000-0000-4000-8000-000000000003 receipt_attachment_id: null invoice_attachment_id: null agreement: 0 charges: 0 discount_granted: 0 discount_obtained: 0 fed_retention: 0 iss_retention: 0 expedient: 0 insurance: 0 interest: 0 iof: 0 penalty: 0 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' link: null group_item: null user: name: Pessoa Exemplo attachment: null attachment_invoice: null card: null cashbox: null reconciled: false overpaid_amount: '0.00' invoice: null workflow: id: 20000000-0000-4000-8000-000000000020 name: Régua Exemplo description: Rascunho sem etapas active: false status: draft created_at: '2026-10-29T12:00:00.000000Z' linked_count: 1 needs_rps: false generated_for_entity_type: client generated_for_entity_name: Cliente Exemplo generated_for_entity_document: '00000000000' created_by_name: Pessoa Exemplo recurrence: null category: null card: null cashbox: null standard_launch: null rps_lote: [] active_rps: null charge_in_progress: false charge_in_progress_id: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounts-receivable/{account_receivable}/workflow-logs: get: tags: - Contas a receber — operações complementares summary: Consultar histórico da régua — contas a receber — operações complementares operationId: financial_get_accounts_receivable_account_receivable_workflow_logs description: 'Permissões exigidas na chave: (workflows.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: account_receivable in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar histórico da régua — contas a receber — operações complementares. content: application/json: schema: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractWorkflowLog' - type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. logs: type: array items: $ref: '#/components/schemas/PublicContractWorkflowLog' description: Histórico de ações ou alterações registradas para o recurso. required: - status - logs example: - id: 00000000-0000-4000-8000-000000000071 description: E-mail de cobrança enviado. contacts: cliente@example.com type: action_send_mail content: Cobrança de exemplo no valor de R$ 150,00. data: null account_receivable_id: 00000000-0000-4000-8000-000000000072 user_id: null user: name: null charge_id: null charge_status: null provider_message_id: null events: [] delivery: channel: email subject: null recipients: - address: cliente@example.com role: to attachments: null status: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/open-finance/connections: post: tags: - Cartões — conciliação e conexão summary: Criar — cartões — conciliação e conexão operationId: financial_post_cards_open_finance_connections description: 'Permissões exigidas na chave: (cards.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. ### Exemplo e pré-condições Substitua institution_id pelo identificador do catálogo de instituições e informe o CPF do operador. A autorização ocorre no fluxo do banco, sem envio de senha bancária.' requestBody: required: true content: application/json: example: institution_id: INST-1 cpf: 390.533.447-05 schema: type: object properties: institution_id: description: Identificador da instituição financeira associada ao registro. type: string maxLength: 64 cpf: description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. type: string maxLength: 20 cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string nullable: true maxLength: 24 required: - institution_id - cpf responses: '200': description: Criar — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardOpenFinanceConnection' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 00000000-0000-4000-8000-000000000040 instituicao_id: instituicao-exemplo instituicao: Instituição Exemplo status: authorized produtos: - ACCOUNT - CREDIT_CARD_ACCOUNT inclui_conta: true inclui_cartao: true documento_final: '0000' documento_da_empresa: false substitui_conexao_id: null pronta_para_consulta: true autorizacao_url: null autorizacao_expira_em: null ultima_verificacao: '2026-10-29T12:00:00+00:00' ready_for_query: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '201': description: Criar — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardOpenFinanceConnection' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 00000000-0000-4000-8000-000000000040 instituicao_id: instituicao-exemplo instituicao: Instituição Exemplo status: authorized produtos: - ACCOUNT - CREDIT_CARD_ACCOUNT inclui_conta: true inclui_cartao: true documento_final: '0000' documento_da_empresa: false substitui_conexao_id: null pronta_para_consulta: true autorizacao_url: null autorizacao_expira_em: null ultima_verificacao: '2026-10-29T12:00:00+00:00' ready_for_query: true /cards/open-finance/connections/{connection}: delete: tags: - Cartões — conciliação e conexão summary: Excluir — cartões — conciliação e conexão operationId: financial_delete_cards_open_finance_connections_connection description: 'Permissões exigidas na chave: (cards.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: connection in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Excluir — cartões — conciliação e conexão. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/open-finance/connections/{connection}/cards: get: tags: - Cartões — conciliação e conexão summary: Listar cartões da conexão — cartões — conciliação e conexão operationId: financial_get_cards_open_finance_connections_connection_cards description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: connection in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar cartões da conexão — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. brand: type: string nullable: true description: Bandeira do cartão informada no registro. last_four: type: string nullable: true description: Últimos quatro dígitos; nulo quando não informados. card_id: type: string nullable: true format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. available: type: boolean description: Indica se o recurso está disponível para uso no estado atual. required: - id - name - brand - last_four - card_id - revision - available description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. connection: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. ready_for_query: type: boolean description: Indica se a conexão está utilizável e com dados disponíveis. required: - id - status - ready_for_query description: Conexão Open Finance de origem; null quando não é mais possível resolvê-la. required: - data - connection example: data: - id: 00000000-0000-4000-8000-000000000041 name: Cartão Exemplo brand: VISA last_four: '0000' card_id: null revision: 1 available: true connection: id: 00000000-0000-4000-8000-000000000040 status: authorized ready_for_query: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/open-finance/connections/{connection}/cards/{externalCard}/links: post: tags: - Cartões — conciliação e conexão summary: Vincular cartão — cartões — conciliação e conexão operationId: financial_post_cards_open_finance_connections_connection_cards_externalCard_link description: 'Permissões exigidas na chave: (cards.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: connection in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: externalCard in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: false content: application/json: example: name: Consultoria Exemplo schema: type: object properties: card_id: type: string format: uuid nullable: true description: UUID do cartão de despesas vinculado à fatura ou lançamento. name: type: string maxLength: 255 description: Nome utilizado para identificar e exibir o registro. provider_id: type: string format: uuid description: UUID do fornecedor ou provedor vinculado ao recurso consultado. closing_day: type: integer description: Dia do mês em que ocorre o fechamento da fatura do cartão. due_day: type: integer description: Dia do mês previsto para o vencimento da obrigação financeira. responses: '200': description: Vincular cartão — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardPublic' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 00000000-0000-4000-8000-000000000060 name: Cartão Exemplo origin: open_finance last_four: '0000' network: VISA due_day: 10 closing_day: 3 active: true provider: id: 00000000-0000-4000-8000-000000000004 name: Fornecedor Exemplo cpf_cnpj: 00.000.000/0000-00 active: true created_at: '2026-10-29T12:00:00.000000Z' total_invoice: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/open-finance/connections/{connection}/refreshes: post: tags: - Cartões — conciliação e conexão summary: Atualizar conexão — cartões — conciliação e conexão operationId: financial_post_cards_open_finance_connections_connection_refresh description: 'Permissões exigidas na chave: (cards.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: connection in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Atualizar conexão — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardOpenFinanceConnection' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 00000000-0000-4000-8000-000000000040 instituicao_id: instituicao-exemplo instituicao: Instituição Exemplo status: authorized produtos: - ACCOUNT - CREDIT_CARD_ACCOUNT inclui_conta: true inclui_cartao: true documento_final: '0000' documento_da_empresa: false substitui_conexao_id: null pronta_para_consulta: true autorizacao_url: null autorizacao_expira_em: null ultima_verificacao: '2026-10-29T12:00:00+00:00' ready_for_query: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/open-finance/institutions: get: tags: - Cartões — conciliação e conexão summary: Listar instituições — cartões — conciliação e conexão operationId: financial_get_cards_open_finance_institutions description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar instituições — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceInstitution' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: - id: instituicao-exemplo nome: Instituição Exemplo operacional: true escopo: both documentos_aceitos: - CPF - CNPJ logo_url: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/activities: get: tags: - Cartões — conciliação e conexão summary: Consultar atividades da fatura — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_activities description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer enum: - 25 - 50 - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 responses: '200': description: Consultar atividades da fatura — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. actor_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. before: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Instantâneo anterior da fatura gravado por CardBillReviewService::activity; composição varia pela ação. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Dados registrados antes da alteração. after: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Instantâneo posterior da fatura gravado por CardBillReviewService::activity; composição varia pela ação. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Dados registrados após a alteração. required: - id - action - actor_name - created_at - reason - before - after description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. meta: $ref: '#/components/schemas/PublicContractCompactPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - meta example: data: - id: 00000000-0000-4000-8000-000000000061 action: reference_declared actor_name: Pessoa Exemplo created_at: '2026-10-29T12:00:00.000000Z' reason: null before: revision: 1 composition_status: open reference_total: null reconciled_revision: null after: revision: 2 composition_status: open reference_total: '150.00' reconciled_revision: null meta: current_page: 1 last_page: 1 per_page: 25 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/documents: get: tags: - Cartões — conciliação e conexão summary: Listar — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_documents description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer enum: - 25 - 50 - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 responses: '200': description: Listar — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCardBillDocument' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. meta: $ref: '#/components/schemas/PublicContractCompactPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - meta example: data: - id: 00000000-0000-4000-8000-000000000062 version: 1 original_name: fatura-exemplo.pdf hash: ed7a5a95e11aa4e405c7086dd6b380cbf2da9586b26029b99da92ec4fb7005b4 created_at: '2026-10-29T12:00:00.000000Z' reading_status: pending download_url: cards/00000000-0000-4000-8000-000000000060/bills/00000000-0000-4000-8000-000000000063/documents/00000000-0000-4000-8000-000000000062/file facts: [] flags: [] meta: current_page: 1 last_page: 1 per_page: 25 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/cards/${CARD_ID}/bills/${BILL_ID}/documents\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"document=@${ARQUIVO_DOCUMENT}\" \\\n --form-string \"expected_revision=${CAMPO_EXPECTED_REVISION}\"" tags: - Cartões — conciliação e conexão summary: Criar — cartões — conciliação e conexão operationId: financial_post_cards_card_bills_bill_documents description: 'Permissões exigidas na chave: (cards.view) e (cards.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: document: type: string format: binary description: 'Limite do arquivo em KiB: max 20480.' expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 required: - document - expected_revision responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '201': description: Versão documental da fatura criada. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardBillDocument' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. required: - data - revision example: data: id: 20000000-0000-4000-8000-000000000070 version: 1 original_name: fatura-exemplo.pdf hash: fba83610af4a3857e3968af366c40e86970eba8acabeb2f88f9346f2a2759278 created_at: '2026-10-29T12:00:00.000000Z' reading_status: pending download_url: cards/20000000-0000-4000-8000-000000000042/bills/20000000-0000-4000-8000-000000000045/documents/20000000-0000-4000-8000-000000000070/file facts: [] flags: [] revision: 5 /cards/{card}/bills/{bill}/documents/{document}/file: get: tags: - Cartões — conciliação e conexão summary: Baixar — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_documents_document_download description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: document in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar — cartões — conciliação e conexão. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/entries: get: tags: - Cartões — conciliação e conexão summary: Listar lançamentos da fatura — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_entries description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 500 - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 200 responses: '200': description: Listar lançamentos da fatura — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCardBillEntry' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 00000000-0000-4000-8000-000000000067 date: '2026-10-28' description: Compra Exemplo amount: '150.00' payment_method: credit card_id: 00000000-0000-4000-8000-000000000060 account_id: 00000000-0000-4000-8000-000000000068 installment_number: 1 installment_total: 1 links: first: https://example.com/public-api/v1/cards/00000000-0000-4000-8000-000000000060/bills/00000000-0000-4000-8000-000000000063/entries?page=1 last: https://example.com/public-api/v1/cards/00000000-0000-4000-8000-000000000060/bills/00000000-0000-4000-8000-000000000063/entries?page=1 prev: null next: null meta: current_page: 1 last_page: 1 per_page: 25 total: 1 from: 1 to: 1 path: https://example.com/public-api/v1/cards/00000000-0000-4000-8000-000000000060/bills/00000000-0000-4000-8000-000000000063/entries links: - url: null label: '« Anterior' page: null active: false - url: https://example.com/public-api/v1/cards/00000000-0000-4000-8000-000000000060/bills/00000000-0000-4000-8000-000000000063/entries?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/matches: post: tags: - Cartões — conciliação e conexão summary: Criar — cartões — conciliação e conexão operationId: financial_post_cards_card_bills_bill_matches description: 'Permissões exigidas na chave: (cards.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 matches: - external_transaction_id: c6313000-bf58-5a97-a916-543dd208a3e2 payment_id: b8e50a90-99bb-56d8-b9cc-3303bde060f4 schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 matches: description: Correspondências entre movimentações externas e lançamentos do sistema. type: array items: type: object properties: external_transaction_id: description: Identificador da transação informado pela instituição externa. Identificação no formato UUID. type: string format: uuid payment_id: description: UUID do pagamento vinculado ao lançamento financeiro. type: string format: uuid required: - external_transaction_id - payment_id minItems: 1 maxItems: 100 required: - expected_revision - matches responses: '200': description: Criar — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: type: object properties: revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. confirmed_ids: type: array items: type: string format: uuid description: Identificadores dos vínculos criados na confirmação. required: - revision - confirmed_ids description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: revision: 2 confirmed_ids: - 00000000-0000-4000-8000-000000000064 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/matches/{match}: delete: tags: - Cartões — conciliação e conexão summary: Excluir — cartões — conciliação e conexão operationId: financial_delete_cards_card_bills_bill_matches_match description: 'Permissões exigidas na chave: (cards.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: match in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 required: - expected_revision responses: '200': description: Excluir — cartões — conciliação e conexão. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/payments: post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/cards/${CARD_ID}/bills/${BILL_ID}/payments\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form-string \"kind=${CAMPO_KIND}\" \\\n --form-string \"amount=${CAMPO_AMOUNT}\" \\\n --form-string\ \ \"date=${CAMPO_DATE}\" \\\n --form-string \"cashbox_id=${CAMPO_CASHBOX_ID}\" \\\n --form-string \"\ payment_method=${CAMPO_PAYMENT_METHOD}\" \\\n --form \"receipt=@${ARQUIVO_RECEIPT}\" \\\n --form-string\ \ \"expected_revision=${CAMPO_EXPECTED_REVISION}\"" tags: - Cartões — conciliação e conexão summary: Criar — cartões — conciliação e conexão operationId: financial_post_cards_card_bills_bill_payments description: 'Registra pagamento (kind=payment) ou antecipação (kind=advance) por multipart/form-data, com comprovante receipt obrigatório e expected_revision da fatura consultada. Envie Idempotency-Key estável para repetir a mesma tentativa sem duplicar o pagamento; conteúdo diferente na mesma chave ou revisão desatualizada retorna 409. Permissões exigidas na chave: cards.view e cards.update. Use credenciais REST; não há ferramenta MCP de antecipação com upload. Mantém os módulos contratados e o acesso da empresa.' parameters: - name: Idempotency-Key in: header required: true schema: type: string minLength: 1 maxLength: 200 description: Chave estável por tentativa; repita o mesmo conteúdo e o mesmo comprovante. example: f1000000-0000-4000-8000-000000000001 x-docs-example-note: CHAVE FICTÍCIA de idempotência, não credencial. Gere outra chave para cada intenção nova de pagamento; reutilize a mesma somente ao repetir o mesmo pedido, incluindo arquivo e revisão esperada. Os IDs de cartão/fatura e os demais dados do multipart devem vir dos próprios registros elegíveis; este arquivo prepara apenas o header ausente. - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: kind: description: 'Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. Opções: `payment`, `advance`.' type: string enum: - payment - advance amount: type: number minimum: 0.01 maximum: 10000000000000 description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. date: description: Data de referência da operação financeira. type: string format: date cashbox_id: description: UUID do caixa financeiro vinculado à operação na empresa autenticada. type: string payment_method: type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `pix`, `bank_slip`, `transfer`, `check`, `credit`, `debit_account`, `debit`, `money`, `none`.' receipt: type: string format: binary description: 'Limite do arquivo em KiB: max 20480.' expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 confirm_credit: description: Autoriza registrar crédito quando o pagamento excede o saldo conhecido da fatura. type: boolean required: - kind - amount - date - cashbox_id - payment_method - receipt - expected_revision responses: '200': description: Criar — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: type: object properties: payment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. date: type: string format: date description: Data de referência da operação financeira. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. required: - id - amount - date - kind description: Pagamento registrado na fatura, com identificador, valor, data e modalidade informada na operação. summary: $ref: '#/components/schemas/PublicContractCardBillSummary' description: Resumo legível da situação ou avaliação do recurso. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. warnings: type: array items: type: object properties: code: type: string description: Código que identifica o aviso retornado pela operação. message: type: string description: Mensagem que explica o aviso retornado pela operação. required: - code - message description: Avisos que precisam ser considerados ao conferir o resultado. required: - payment - summary - revision - warnings description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: payment: id: 00000000-0000-4000-8000-000000000065 amount: '50.00' date: '2026-10-29' kind: payment summary: composition_total: '150.00' reference_total: '150.00' payments_total: '50.00' outstanding_total: '100.00' credit_balance: '0.00' difference: '0.00' payment_status: partial reference_source: manual reference_basis: gross embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 3 warnings: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' get: tags: - Cartões — conciliação e conexão summary: Listar — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_payments description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 500 description: Inteiro de 1 a 500; sem enum restrito a 25/50. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 responses: '200': description: Listar — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. reversible: type: boolean description: Indica se o pagamento admite reversão no fluxo interno que o produziu. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. date: type: string format: date description: Data de referência da operação financeira. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. cashbox: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name nullable: true description: Caixa financeiro vinculado à movimentação ou ao lançamento. actor_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. receipt_url: type: string nullable: true description: Endereço disponibilizado para acessar o comprovante do pagamento. required: - id - reversible - amount - date - kind - cashbox - actor_name - receipt_url description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. meta: $ref: '#/components/schemas/PublicContractCompactPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - meta example: data: - id: 00000000-0000-4000-8000-000000000065 reversible: true amount: '50.00' date: '2026-10-29' kind: payment cashbox: id: 00000000-0000-4000-8000-000000000050 name: Caixa Exemplo actor_name: Pessoa Exemplo receipt_url: null meta: current_page: 1 last_page: 1 per_page: 25 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/payments/{paymentId}/receipt: get: tags: - Cartões — conciliação e conexão summary: Baixar recibo — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_payments_paymentId_receipt description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: paymentId in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar recibo — cartões — conciliação e conexão. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/reconciliations: post: tags: - Cartões — conciliação e conexão summary: Conciliar fatura — cartões — conciliação e conexão operationId: financial_post_cards_card_bills_bill_reconcile description: 'Permissões exigidas na chave: (cards.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 amount: anyOf: - type: number - type: string pattern: ^-?[0-9]{1,13}(\.[0-9]{1,2})?$ description: Número JSON ou string decimal, conforme ReviewBillRequest. Não implica que amount altere conciliação nesta operação; regras e efeitos dependem do serviço. reason: description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. type: string minLength: 3 maxLength: 1000 required: - expected_revision responses: '200': description: Conciliar fatura — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractCardBill' example: card_id: 20000000-0000-4000-8000-000000000042 summary: composition_total: '150.00' reference_total: '150.00' payments_total: '50.00' outstanding_total: '100.00' credit_balance: '0.00' difference: '0.00' payment_status: partial reference_source: manual reference_basis: gross embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: closed reconciliation_status: reconciled revision: 3 origin: manual capabilities: can_pay: true can_advance: true can_reconcile: false can_move: false can_reopen: true blocking_reasons: [] sync: status: not_applicable last_synced_at: null complete: false id: 20000000-0000-4000-8000-000000000045 due: '2026-11-10T00:00:00.000000Z' close: '2026-11-03T00:00:00.000000Z' card_recon: id: 20000000-0000-4000-8000-000000000044 user: id: 20000000-0000-4000-8000-000000000003 name: Pessoa Exemplo email: pessoa@example.com phone: null associate_id: null associate_type: null comments: null status: finished conciliated_at: '2026-10-29T12:00:00.000000Z' account_bill: id: 20000000-0000-4000-8000-000000000043 description: Fatura Exemplo unit_price: '150.00' balance_paid: '50.00' balance: '100.00' due_date: '2026-11-10T00:00:00.000000Z' type: credit_bill status: partial accounts_advance: [] payments: - id: 20000000-0000-4000-8000-000000000041 date: '2026-10-28T00:00:00.000000Z' description: Compra Exemplo value_paid: 150 type: normal '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/reconciliation: get: tags: - Cartões — conciliação e conexão summary: Listar — cartões — conciliação e conexão operationId: financial_get_cards_card_bills_bill_reconciliation description: 'Permissões exigidas na chave: (cards.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string enum: - pending - linked - all - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer enum: - 25 - 50 responses: '200': description: Listar — cartões — conciliação e conexão. content: application/json: schema: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. date: type: string nullable: true format: date description: Data de referência da operação financeira. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. match_id: type: string nullable: true format: uuid description: Identificador do vínculo entre a transação externa e o pagamento. local_entry: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. date: type: string format: date description: Data de referência da operação financeira. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - payment_id - description - date - amount nullable: true description: Lançamento do sistema identificado como contraparte da transação do cartão. suggestions: type: array items: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. date: type: string format: date description: Data de referência da operação financeira. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - payment_id - description - date - amount description: Sugestões calculadas a partir dos dados disponíveis, sujeitas à escolha do usuário. required: - id - revision - description - date - amount - kind - status - match_id - local_entry - suggestions description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. complete: type: boolean description: Indica se as informações necessárias para a operação estão completas. last_synced_at: type: string nullable: true format: date-time description: Data e hora da última sincronização com a origem externa. totals: type: object properties: pending: type: integer description: Itens ou estado que ainda aguardam conclusão do processamento. linked: type: integer description: Quantidade de registros vinculados na conciliação. local_unmatched: type: integer description: Quantidade de lançamentos locais sem contraparte válida na fatura. required: - pending - linked - local_unmatched description: Totais consolidados dos registros apresentados. meta: $ref: '#/components/schemas/PublicContractCompactPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - revision - complete - last_synced_at - totals - meta example: data: - id: 00000000-0000-4000-8000-000000000066 revision: 1 description: Compra Exemplo date: '2026-10-28' amount: '150.00' kind: purchase status: pending match_id: null local_entry: null suggestions: [] revision: 1 complete: false last_synced_at: '2026-10-29T12:00:00.000000Z' totals: pending: 1 linked: 0 local_unmatched: 0 meta: current_page: 1 last_page: 1 per_page: 25 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/reference: put: tags: - Cartões — conciliação e conexão summary: Atualizar referência da fatura — cartões — conciliação e conexão operationId: financial_put_cards_card_bills_bill_reference description: 'Permissões exigidas na chave: (cards.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 amount: '150' schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 amount: anyOf: - type: number - type: string pattern: ^-?[0-9]{1,13}(\.[0-9]{1,2})?$ description: Número JSON ou string decimal, conforme ReviewBillRequest. Não implica que amount altere conciliação nesta operação; regras e efeitos dependem do serviço. reason: description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. type: string minLength: 3 maxLength: 1000 required: - expected_revision - amount responses: '200': description: Atualizar referência da fatura — cartões — conciliação e conexão. A resposta informa o resultado da atualização solicitada. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractCardBill' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. warnings: type: array items: type: object properties: code: type: string description: Código que identifica o aviso retornado pela operação. message: type: string description: Mensagem que explica o aviso retornado pela operação. required: - code - message description: Avisos que precisam ser considerados ao conferir o resultado. required: - data - warnings example: data: card_id: 20000000-0000-4000-8000-000000000042 summary: composition_total: '150.00' reference_total: '150.00' payments_total: '50.00' outstanding_total: '100.00' credit_balance: '0.00' difference: '0.00' payment_status: partial reference_source: manual reference_basis: gross embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 2 origin: manual capabilities: can_pay: true can_advance: true can_reconcile: true can_move: true can_reopen: false blocking_reasons: [] sync: status: not_applicable last_synced_at: null complete: false id: 20000000-0000-4000-8000-000000000045 due: '2026-11-10T00:00:00.000000Z' close: '2026-11-03T00:00:00.000000Z' card_recon: id: 20000000-0000-4000-8000-000000000044 user: id: 20000000-0000-4000-8000-000000000003 name: Pessoa Exemplo email: pessoa@example.com phone: null associate_id: null associate_type: null comments: null status: ongoing conciliated_at: null account_bill: id: 20000000-0000-4000-8000-000000000043 description: Fatura Exemplo unit_price: '150.00' balance_paid: '50.00' balance: '100.00' due_date: '2026-11-10T00:00:00.000000Z' type: credit_bill status: partial accounts_advance: [] payments: - id: 20000000-0000-4000-8000-000000000041 date: '2026-10-28T00:00:00.000000Z' description: Compra Exemplo value_paid: 150 type: normal warnings: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cards/{card}/bills/{bill}/reopenings: post: tags: - Cartões — conciliação e conexão summary: Reabrir conciliação — cartões — conciliação e conexão operationId: financial_post_cards_card_bills_bill_reopen description: 'Permissões exigidas na chave: (cards.view) e (card_recons.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: card in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: bill in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: expected_revision: 1 reason: Solicitação do responsável schema: type: object properties: expected_revision: description: Revisão do recurso lida pelo cliente, para proteger contra alterações concorrentes. type: integer minimum: 1 amount: anyOf: - type: number - type: string pattern: ^-?[0-9]{1,13}(\.[0-9]{1,2})?$ description: Número JSON ou string decimal, conforme ReviewBillRequest. Não implica que amount altere conciliação nesta operação; regras e efeitos dependem do serviço. reason: description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. type: string required: - expected_revision - reason responses: '200': description: Reabrir conciliação — cartões — conciliação e conexão. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractCardBill' example: card_id: 20000000-0000-4000-8000-000000000042 summary: composition_total: '150.00' reference_total: '150.00' payments_total: '50.00' outstanding_total: '100.00' credit_balance: '0.00' difference: '0.00' payment_status: partial reference_source: manual reference_basis: gross embedded_payments_total: '0.00' payment_evidence_status: not_applicable composition_status: open reconciliation_status: pending revision: 4 origin: manual capabilities: can_pay: true can_advance: true can_reconcile: true can_move: true can_reopen: false blocking_reasons: [] sync: status: not_applicable last_synced_at: null complete: false id: 20000000-0000-4000-8000-000000000045 due: '2026-11-10T00:00:00.000000Z' close: '2026-11-03T00:00:00.000000Z' card_recon: id: 20000000-0000-4000-8000-000000000044 user: id: 20000000-0000-4000-8000-000000000003 name: Pessoa Exemplo email: pessoa@example.com phone: null associate_id: null associate_type: null comments: null status: ongoing conciliated_at: null account_bill: id: 20000000-0000-4000-8000-000000000043 description: Fatura Exemplo unit_price: '150.00' balance_paid: '50.00' balance: '100.00' due_date: '2026-11-10T00:00:00.000000Z' type: credit_bill status: partial accounts_advance: [] payments: - id: 20000000-0000-4000-8000-000000000041 date: '2026-10-28T00:00:00.000000Z' description: Compra Exemplo value_paid: 150 type: normal '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cashboxes/institutions: get: tags: - Caixas — operações complementares summary: Listar — caixas — operações complementares operationId: financial_get_cashboxes_institutions description: 'Permissões exigidas na chave: (cashboxes.create ou cashboxes.update ou cashboxes.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — caixas — operações complementares. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceInstitution' example: - id: instituicao-exemplo nome: Instituição Exemplo operacional: true escopo: both documentos_aceitos: - CPF - CNPJ logo_url: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cashboxes/{cashbox}/bank: post: tags: - Caixas — operações complementares summary: Vincular banco — caixas — operações complementares operationId: financial_post_cashboxes_cashbox_bank description: 'Permissões exigidas na chave: (cashboxes.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cashbox in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: false content: application/json: example: bank_id: 00000000-0000-4000-8000-000000000001 schema: type: object properties: bank_id: description: Identificador da instituição financeira no catálogo de bancos. Identificação no formato UUID. type: string format: uuid nullable: true responses: '200': description: Vincular banco — caixas — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 00000000-0000-4000-8000-000000000050 name: Caixa Exemplo start_amount: '1000.00' amount: '1250.00' default: false active: true editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cashboxes/{cashbox}/history/{history}/receipt: get: tags: - Caixas — operações complementares summary: Baixar comprovante do caixa — caixas — operações complementares operationId: financial_get_cashboxes_cashbox_history_history_receipt description: 'Permissões exigidas na chave: (cashboxes.view). Requer histórico pertencente ao caixa e anexo próprio disponível. Sem anexo/arquivo retorna 404; nem todo histórico possui comprovante.' parameters: - name: cashbox in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: history in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar comprovante do caixa — caixas — operações complementares. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cashboxes/{cashbox}/institution: post: tags: - Caixas — operações complementares summary: Atualizar — caixas — operações complementares operationId: financial_post_cashboxes_cashbox_institution description: 'Permissões exigidas na chave: (cashboxes.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cashbox in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: false content: application/json: example: name: Consultoria Exemplo schema: type: object properties: name: description: Nome utilizado para identificar e exibir o registro. type: string institution_id: description: Identificador da instituição financeira associada ao registro. type: string nullable: true maxLength: 255 responses: '200': description: Atualizar — caixas — operações complementares. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractCashbox' example: id: 00000000-0000-4000-8000-000000000050 name: Caixa Exemplo start_amount: '1000.00' amount: '1250.00' default: false active: true editable: true bank_id: null bank: null institution_id: null institution: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /cashboxes/{cashbox}/overview: get: tags: - Caixas — operações complementares summary: Consultar — caixas — operações complementares operationId: financial_get_cashboxes_cashbox_overview description: 'Permissões exigidas na chave: (cashboxes.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: cashbox in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — caixas — operações complementares. content: application/json: schema: type: object properties: cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. currency: type: string description: Código da moeda da movimentação, como BRL para real brasileiro. period: type: object properties: date_from: type: string format: date description: Data inicial do período de conciliação, em AAAA-MM-DD. date_to: type: string format: date description: Data final do período, igual ou posterior à data inicial, em AAAA-MM-DD. required: - date_from - date_to description: Período de referência dos dados apresentados. system: type: object properties: current_balance: type: string nullable: true description: Saldo atual registrado para o caixa. opening_balance: type: string nullable: true description: Saldo de abertura do período, em reais, no tipo decimal indicado pelo schema. closing_balance: type: string nullable: true description: Saldo apurado no fim do período consultado. inflow: type: string nullable: true description: Total de entradas financeiras no período. outflow: type: string nullable: true description: Total de saídas financeiras no período. net: type: string nullable: true description: Valor líquido do recebimento após os descontos aplicáveis. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. required: - current_balance - opening_balance - closing_balance - inflow - outflow - net - status description: Resumo dos lançamentos financeiros existentes no sistema. bank: type: object properties: balance: type: string nullable: true description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. observed_at: type: string nullable: true format: date-time description: Instante em que o dado foi observado na fonte. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. accounts: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. balance: type: string nullable: true description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. observed_at: type: string nullable: true format: date-time description: Instante em que o dado foi observado na fonte. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. required: - id - balance - observed_at - status - active description: Contas financeiras incluídas na consulta ou operação. required: - balance - observed_at - status - accounts nullable: true description: Dados da instituição financeira vinculada ao recurso. open_finance: type: object properties: inflow: type: string description: Total de entradas financeiras no período. outflow: type: string description: Total de saídas financeiras no período. net: type: string description: Valor líquido do recebimento após os descontos aplicáveis. total_count: type: integer description: Quantidade total de registros que formam a base do indicador. confirmed_count: type: integer description: Quantidade de movimentos com confirmação ou vínculo registrado. unconfirmed_count: type: integer description: Quantidade de movimentos ainda sem confirmação registrada. confirmed_percentage: type: string nullable: true description: Percentual dos movimentos confirmados no recorte. last_synced_at: type: string nullable: true format: date-time description: Data e hora da última sincronização com a origem externa. required: - inflow - outflow - net - total_count - confirmed_count - unconfirmed_count - confirmed_percentage - last_synced_at nullable: true description: Resumo ou estado dos dados obtidos pela conexão Open Finance. required: - cashbox_id - currency - period - system - bank - open_finance example: cashbox_id: 00000000-0000-4000-8000-000000000050 currency: BRL period: date_from: '2026-10-01' date_to: '2026-10-29' system: current_balance: '1250.00' opening_balance: '1000.00' closing_balance: '1250.00' inflow: '500.00' outflow: '250.00' net: '250.00' status: complete bank: null open_finance: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /fiscal-invoice-batches: get: tags: - Emissões fiscais summary: Listar — emissões fiscais operationId: financial_get_fiscal_rps_lote description: 'Permissões exigidas na chave: (fiscal_rps.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — emissões fiscais. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractSubsidiaryFiscalBatch' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 number: '125' taker: Cliente Exemplo taker_document: 00000000000191 protocol: null year: '2026' status: P content: null error: null alerts: a:0:{} forced: 0 rps: - id: 70000000-0000-4000-8000-000000000007 number: '125' receipt: '00000000125' access_token: null year: '2026' content: null error: null verification: null alerts: null status: P operation_nature: '1' emission: '2026-10-29' erro: null accounts: - id: 70000000-0000-4000-8000-000000000008 description: Consultoria mensal status: pending unit_price: '150.00' balance: '150.00' balance_paid: '0.00' links: first: https://empresa-exemplo.invalid/public-api/v1/fiscal-invoice-batches?page=1 last: https://empresa-exemplo.invalid/public-api/v1/fiscal-invoice-batches?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/fiscal-invoice-batches?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/fiscal-invoice-batches per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 - name: per_page in: query required: false description: Quantidade de registros por página; usa o padrão da listagem quando ausente. schema: type: integer minimum: 1 /fiscal-invoice-batches/{fiscal_rps_lote}/reissuances: post: tags: - Emissões fiscais summary: Criar — emissões fiscais operationId: financial_post_fiscal_rps_lote_fiscal_rps_lote_reemitir description: 'Permissões exigidas na chave: (fiscal_rps.emit). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: fiscal_rps_lote in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' fiscalRejection: $ref: '#/components/examples/ProblemFiscalRejection' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '202': description: Nova tentativa de emissão aceita; consulte o lote para acompanhar seu processamento. content: application/json: schema: $ref: '#/components/schemas/PublicContractFiscalBatch' example: id: 70000000-0000-4000-8000-000000000001 number: '125' protocol: null year: '2026' status: P content: null error: null alerts: a:0:{} forced: 0 rps: - id: 70000000-0000-4000-8000-000000000007 number: '125' receipt: '00000000125' access_token: null year: '2026' content: null error: null verification: null alerts: null status: P operation_nature: '1' emission: '2026-10-29' erro: null parsed_alerts: [] erro: null /accounting-firm-links: get: tags: - Escritórios contábeis summary: Listar — escritórios contábeis operationId: extended_get_accounting_firm_links description: 'Permissões exigidas na chave: (users.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — escritórios contábeis. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractAccountingFirmLink' example: - id: 70000000-0000-4000-8000-000000000001 accounting_firm_id: 70000000-0000-4000-8000-000000000006 accounting_firm_name: Escritório Contábil Exemplo accounting_firm_active: true origin: invited_by_company status: pending tenant_role_id: null accepted_at: null revoked_at: null created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Escritórios contábeis summary: Criar — escritórios contábeis operationId: extended_post_accounting_firm_links description: 'Permissões exigidas na chave: (users.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: accounting_firm_id: 00000000-0000-4000-8000-000000000001 schema: type: object properties: accounting_firm_id: type: string description: UUID do escritório contábil associado à empresa ou ao acesso concedido. cnpj: type: string maxLength: 14 description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. tenant_role_id: description: UUID do perfil de acesso atribuído ao usuário na empresa. type: string nullable: true oneOf: - required: - accounting_firm_id not: required: - cnpj - required: - cnpj not: required: - accounting_firm_id responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractAccountingFirmLink' example: id: 70000000-0000-4000-8000-000000000001 accounting_firm_id: 70000000-0000-4000-8000-000000000006 accounting_firm_name: Escritório Contábil Exemplo accounting_firm_active: true origin: invited_by_company status: pending tenant_role_id: null accepted_at: null revoked_at: null created_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /accounting-firm-links/{link}: delete: tags: - Escritórios contábeis summary: Excluir — escritórios contábeis operationId: extended_delete_accounting_firm_links_link description: 'Permissões exigidas na chave: (users.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: link in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Excluir — escritórios contábeis. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subscription: get: tags: - Assinatura da empresa summary: Consultar — assinatura da empresa operationId: extended_get_assinatura description: 'Permissões exigidas na chave: (roles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar — assinatura da empresa. content: application/json: schema: type: object properties: data: oneOf: - $ref: '#/components/schemas/PublicContractSubscription' - type: string nullable: true enum: - null description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: scheduled_change: null pending_upgrade: null id: 20000000-0000-4000-8000-000000000053 plan_name: Plano Exemplo access_plan: id: 20000000-0000-4000-8000-000000000050 name: Plano Exemplo billing_cycle: monthly status: ativa amount_cents: 10000 payment_method: pix automatic_card: false automatic_pix: false revenue_review: annual_protected: false protected_until: null next_review_at: '2026-11-01T00:00:00-03:00' estimate_status: unavailable annualized_amount_cents: null received_amount_cents: null observed_days: 0 is_projection: false calculated_at: null estimated_plan_slug: null estimated_plan_name: null estimated_amount_cents: null notice_days: 7 basis: customer_receipts_recorded_in_platform disclaimer: Estimativa dos recebimentos registrados no sistema; não é faturamento fiscal nem comprovação de toda a receita da empresa. period_starts_at: '2026-10-01T00:00:00-03:00' period_ends_at: '2026-11-01T00:00:00-03:00' renewal_canceled_at: null can_cancel: true can_upgrade: true upgrade_unavailable_reason: null upgrade_unavailable_code: null access_active: true collection: stage: current days_overdue: 0 original_due_at: '2026-11-01T00:00:00-03:00' access_allowed: true message: null message_before: null action_label: null message_after: null suspends_on: null severity: null can_reactivate: false reactivation_amount_cents: null reactivation_breakdown: null outstanding_amount_cents: 10000 legacy_debt: false invoices: - id: 20000000-0000-4000-8000-000000000052 order_type: renewal is_upgrade: false settlement_only: false automatic_card: false payment_application_status: null payment_review_reason: null upgrade_status: null target_plan_name: null full_recurring_amount_cents: null payable_until: null allowed_instruments: - pix - cartao - boleto status: aguardando_pagamento amount_cents: 10000 paid_cents: 0 balance_cents: 10000 created_at: '2026-10-29T12:00:00+00:00' due_at: '2026-11-01T00:00:00-03:00' settled_at: null settled_by_id: null reactivation_of_id: null settlement_of_id: null payment_state: pending payment_url: https://central.example.com/contratar/pagamento?plan=20000000-0000-4000-8000-000000000050&price=20000000-0000-4000-8000-000000000051&pedido=PEDIDO-EXEMPLO-001 fiscal_note: null refund_eligible: false refund_status: null refund_reason: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subscription/cancellations: post: tags: - Assinatura da empresa summary: Cancelar — assinatura da empresa operationId: extended_post_assinatura_cancelar description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Cancelar — assinatura da empresa. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractSubscription' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: scheduled_change: null pending_upgrade: null id: 20000000-0000-4000-8000-000000000053 plan_name: Plano Exemplo access_plan: id: 20000000-0000-4000-8000-000000000050 name: Plano Exemplo billing_cycle: monthly status: ativa amount_cents: 10000 payment_method: pix automatic_card: false automatic_pix: false revenue_review: annual_protected: false protected_until: null next_review_at: '2026-11-01T00:00:00-03:00' estimate_status: unavailable annualized_amount_cents: null received_amount_cents: null observed_days: 0 is_projection: false calculated_at: null estimated_plan_slug: null estimated_plan_name: null estimated_amount_cents: null notice_days: 7 basis: customer_receipts_recorded_in_platform disclaimer: Estimativa dos recebimentos registrados no sistema; não é faturamento fiscal nem comprovação de toda a receita da empresa. period_starts_at: '2026-10-01T00:00:00-03:00' period_ends_at: '2026-11-01T00:00:00-03:00' renewal_canceled_at: '2026-10-29T12:00:00+00:00' can_cancel: false can_upgrade: false upgrade_unavailable_reason: A assinatura precisa estar ativa, paga e com renovação habilitada. upgrade_unavailable_code: inactive access_active: true collection: stage: current days_overdue: 0 original_due_at: '2026-11-01T00:00:00-03:00' access_allowed: true message: null message_before: null action_label: null message_after: null suspends_on: null severity: null can_reactivate: false reactivation_amount_cents: null reactivation_breakdown: null outstanding_amount_cents: 0 legacy_debt: false invoices: [] refund_eligible: false refund_status: null refund_reason: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subscription/upgrades: get: tags: - Assinatura da empresa summary: Listar upgrades — assinatura da empresa operationId: extended_get_assinatura_upgrades description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar upgrades — assinatura da empresa. content: application/json: schema: type: object properties: data: type: object properties: options: type: array items: type: object properties: price_id: type: string format: uuid description: Identificador do preço selecionado para a contratação. plan_id: type: string format: uuid description: Identificador do plano de serviço. plan_name: type: string description: Nome do plano contratado pela empresa. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. billing_cycle: type: string description: Periodicidade contratada da cobrança da assinatura. required: - price_id - plan_id - plan_name - amount_cents - billing_cycle description: Opções disponíveis para a seleção solicitada. unavailable_reason: type: string nullable: true description: Mensagem que explica por que a alteração de plano está indisponível. unavailable_code: type: string nullable: true description: Código que explica por que a alteração de plano está indisponível. scheduled_change: oneOf: - $ref: '#/components/schemas/PublicContractSubscriptionChange' - type: string nullable: true enum: - null description: Alteração de plano programada pelo atendimento, contratação ou enquadramento. pending_upgrade: oneOf: - $ref: '#/components/schemas/PublicContractSubscriptionChange' - type: string nullable: true enum: - null description: Alteração de plano solicitada pelo cliente que permanece pendente. required: - options - unavailable_reason - unavailable_code - scheduled_change - pending_upgrade description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: options: - price_id: 20000000-0000-4000-8000-000000000055 plan_id: 20000000-0000-4000-8000-000000000054 plan_name: Plano Ampliado Exemplo amount_cents: 20000 billing_cycle: monthly unavailable_reason: null unavailable_code: null scheduled_change: null pending_upgrade: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Assinatura da empresa summary: Aceitar upgrade — assinatura da empresa operationId: extended_post_assinatura_upgrades description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: quote_id: 20be254e-8f5c-5408-b85f-89fd27fe9790 idempotency_key: bad17fda-e555-51d9-bf57-b64c2ee80992 schema: type: object properties: quote_id: description: UUID da cotação previamente apresentada para confirmar a contratação ou consumo. type: string format: uuid idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. Identificação no formato UUID. type: string format: uuid required: - quote_id - idempotency_key responses: '200': description: Aceitar upgrade — assinatura da empresa. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractSubscriptionChange' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 20000000-0000-4000-8000-000000000056 quote_id: 20000000-0000-4000-8000-000000000056 change_id: 20000000-0000-4000-8000-000000000056 status: awaiting_payment origin: client current_plan_name: Plano Exemplo target_plan_name: Plano Ampliado Exemplo plan_id: 20000000-0000-4000-8000-000000000054 plan_name: Plano Ampliado Exemplo current_amount_cents: 10000 target_amount_cents: 20000 amount_cents: 5000 billing_cycle: monthly period_starts_at: '2026-10-01T00:00:00-03:00' period_ends_at: '2026-11-01T00:00:00-03:00' effective_at: '2026-11-01T00:00:00-03:00' after_invoice_id: null quoted_at: '2026-10-16T12:00:00-03:00' expires_at: '2026-10-16T12:15:00-03:00' review_reason: null breakdown: prorata_cents: 5000 next_period_cents: 0 next_period_starts_at: null next_period_ends_at: null absorbed_invoices: [] allowed_instruments: - pix - cartao payment_url: https://central.example.com/contratar/pagamento?plan=20000000-0000-4000-8000-000000000054&price=20000000-0000-4000-8000-000000000055&pedido=UPGRADE-EXEMPLO-001 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /subscription/upgrades/quotes: post: tags: - Assinatura da empresa summary: Consultar preço do upgrade — assinatura da empresa operationId: extended_post_assinatura_upgrades_cotacao description: 'Permissões exigidas na chave: (roles.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: price_id: 6d55fbaa-0378-5aa9-9053-37044ea1da67 schema: type: object properties: price_id: description: Identificador do preço selecionado para a contratação. Identificação no formato UUID. type: string format: uuid required: - price_id responses: '200': description: Consultar preço do upgrade — assinatura da empresa. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicContractSubscriptionChange' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - data example: data: id: 20000000-0000-4000-8000-000000000056 quote_id: 20000000-0000-4000-8000-000000000056 change_id: 20000000-0000-4000-8000-000000000056 status: quoted origin: client current_plan_name: Plano Exemplo target_plan_name: Plano Ampliado Exemplo plan_id: 20000000-0000-4000-8000-000000000054 plan_name: Plano Ampliado Exemplo current_amount_cents: 10000 target_amount_cents: 20000 amount_cents: 5000 billing_cycle: monthly period_starts_at: '2026-10-01T00:00:00-03:00' period_ends_at: '2026-11-01T00:00:00-03:00' effective_at: '2026-11-01T00:00:00-03:00' after_invoice_id: null quoted_at: '2026-10-16T12:00:00-03:00' expires_at: '2026-10-16T12:15:00-03:00' review_reason: null breakdown: prorata_cents: 5000 next_period_cents: 0 next_period_starts_at: null next_period_ends_at: null absorbed_invoices: [] allowed_instruments: - pix - cartao payment_url: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /backups: get: tags: - Backups summary: Listar — backups operationId: extended_get_backups description: 'Permissões exigidas na chave: (backup_data.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — backups. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractBackup' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 name: backup_2026-10-29_12-00-00 status: queued expires_at: null expired: false created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' links: first: https://empresa-exemplo.invalid/public-api/v1/backups?page=1 last: https://empresa-exemplo.invalid/public-api/v1/backups?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/backups?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/backups per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. post: tags: - Backups summary: Criar — backups operationId: extended_post_backups description: 'Permissões exigidas na chave: (backup_data.create). Solicita cópia de segurança respeitando intervalo de 24 horas e a ausência de exportação em andamento. Cópia recente ou em andamento retorna 422 com detail explicativo; não promete errors de campo quando a recusa é global.' responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractBackup' example: id: 70000000-0000-4000-8000-000000000001 name: backup_2026-10-29_12-00-00 status: queued expires_at: null expired: false created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /backups/{dataExport}/file: get: tags: - Backups summary: Baixar — backups operationId: extended_get_backups_dataExport_download description: 'Permissões exigidas na chave: (backup_data.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataExport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar — backups. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /certificate-orders: get: tags: - Solicitações de certificado summary: Listar — solicitações de certificado operationId: extended_get_certificate_orders description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. name: idempotency_key in: query required: false schema: type: string maxLength: 160 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - name: page in: query required: false description: Página da consulta paginada. schema: type: integer minimum: 1 default: 1 responses: '200': description: Listar — solicitações de certificado. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCertificateOrder' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total example: current_page: 1 data: - id: 20000000-0000-4000-8000-000000000005 idempotency_key: certificado-exemplo-001 product: e_cnpj_a1 buyer_document: 00000000000191 email: comprador@example.com phone: '3100000000' amount_cents: 9990 instrument: card status: submitting document: null failure_message: null created_at: '2026-10-29T12:00:00+00:00' confirmed_at: null fulfillment_status: null completed_at: null refund: null can_complete: false can_refund: false first_page_url: https://empresa-exemplo.invalid/public-api/v1/certificate-orders?page=1 last_page: 1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/certificate-orders?page=1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/certificate-orders?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null next_page_url: null path: https://empresa-exemplo.invalid/public-api/v1/certificate-orders per_page: 10 prev_page_url: null to: 1 total: 1 from: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request POST \"$BASE_URL/certificate-orders\" \\\n --header \"X-Public-Access-Key: $ACCESS_KEY\"\ \ \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json' \\\n --form-string\ \ \"product=${CAMPO_PRODUCT}\" \\\n --form-string \"buyer_document=${CAMPO_BUYER_DOCUMENT}\" \\\n --form-string\ \ \"email=${CAMPO_EMAIL}\" \\\n --form-string \"phone=${CAMPO_PHONE}\" \\\n --form \"cnh=@${ARQUIVO_CNH}\"\ \ \\\n --form-string \"instrument=${CAMPO_INSTRUMENT}\" \\\n --form-string \"idempotency_key=${CAMPO_IDEMPOTENCY_KEY}\"" tags: - Solicitações de certificado summary: Criar — solicitações de certificado operationId: extended_post_certificate_orders description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: multipart/form-data: schema: type: object properties: product: description: 'Produto selecionado para a contratação ou recarga. Opções: `e_cnpj_a1`, `e_cpf_a1`.' type: string enum: - e_cnpj_a1 - e_cpf_a1 buyer_document: description: CPF ou CNPJ do comprador, conforme o cadastro utilizado na contratação. type: string email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email maxLength: 190 phone: type: string description: Número de telefone do contato, com DDD quando nacional. cnh: type: string format: binary description: 'Limite do arquivo em KiB: max 10240.' instrument: description: 'Meio de pagamento escolhido para a contratação ou recarga. Opções: `pix`, `boleto`, `card`.' type: string enum: - pix - boleto - card idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. type: string maxLength: 160 token: type: string nullable: true maxLength: 512 description: Token de identificação ou acesso ao recurso. Trate como informação confidencial. consent: description: Consentimento informado para autorizar a contratação ou o meio de pagamento solicitado. type: string card_validation: type: object items: {} nullable: true description: Dados solicitados para a validação do cartão junto ao processador. properties: nome: type: string maxLength: 100 description: Nome informado para identificar a pessoa ou empresa no cadastro. mes: type: string description: Mês de competência ou de referência do documento, de 1 a 12. ano: type: string description: Ano de competência ou de referência do documento. cpf: type: string maxLength: 14 description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. email: type: string format: email maxLength: 190 description: Endereço de e-mail do contato ou usuário associado ao recurso. celular: description: Número de celular do comprador para contato sobre o pagamento. type: string nullable: true maxLength: 20 cvv: type: string description: Código de segurança do cartão para validação pelo processador; não persista nem registre em logs. required: - product - buyer_document - email - phone - cnh - instrument - idempotency_key responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCertificateOrder' example: id: 20000000-0000-4000-8000-000000000005 idempotency_key: certificado-exemplo-001 product: e_cnpj_a1 buyer_document: 00000000000191 email: comprador@example.com phone: '3100000000' amount_cents: 9990 instrument: card status: submitting document: null failure_message: null created_at: '2026-10-29T12:00:00+00:00' confirmed_at: null fulfillment_status: null completed_at: null refund: null can_complete: false can_refund: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /certificate-orders/card-configuration: get: tags: - Solicitações de certificado summary: Consultar configuração de cartão — solicitações de certificado operationId: extended_get_certificate_orders_card_configuration description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração de cartão — solicitações de certificado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCardConfiguration' example: credential: CREDENCIAL-FICTICIA-SEM-VALIDADE sandbox: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '503': description: Ocorreu uma falha no processamento; detalhes internos são ocultados. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem503' /certificate-orders/{order}: get: tags: - Solicitações de certificado summary: Consultar — solicitações de certificado operationId: extended_get_certificate_orders_order description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: order in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — solicitações de certificado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCertificateOrder' example: id: 20000000-0000-4000-8000-000000000005 idempotency_key: certificado-exemplo-001 product: e_cnpj_a1 buyer_document: 00000000000191 email: comprador@example.com phone: '3100000000' amount_cents: 9990 instrument: card status: submitting document: null failure_message: null created_at: '2026-10-29T12:00:00+00:00' confirmed_at: null fulfillment_status: null completed_at: null refund: null can_complete: false can_refund: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /clients/{client}/documents: get: tags: - Clientes summary: Listar documentos — clientes operationId: extended_get_clients_client_documents description: 'Permissões exigidas na chave: (clients.view) e (documents.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: client in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar documentos — clientes. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' example: - id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 document_profile_name: Comprovante de identificação document_profile_description: Identificação para cadastro fictício attachment: null original_name: null required: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Clientes summary: Criar documento — clientes operationId: extended_post_clients_client_documents description: 'Permissões exigidas na chave: (clients.view) e (documents.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: client in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Criar documento — clientes. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: oneOf: - $ref: '#/components/schemas/PublicContractRawPersonDocument' - type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' example: id: 10000000-0000-4000-8000-000000000011 document_profile_id: 10000000-0000-4000-8000-000000000010 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' requestBody: required: true description: Vincula um ou mais perfis de documento ao cadastro. Envie apenas document_profile_id. Para anexar arquivo, utilize a operação de upload; attachment_id e original_name não são aceitos aqui. content: application/json: schema: oneOf: - type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. - type: array minItems: 1 items: type: object required: - document_profile_id additionalProperties: false properties: document_profile_id: type: string format: uuid description: Perfil de documento ativo da empresa atual. example: document_profile_id: 10000000-0000-4000-8000-000000000001 /clients/{client}/indicadores: get: tags: - Clientes summary: Consultar indicadores — clientes operationId: extended_get_clients_client_indicadores description: 'Permissões exigidas na chave: (clients.view) e (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: client in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar indicadores — clientes. content: application/json: schema: type: object properties: pontualidade: $ref: '#/components/schemas/PublicContractPunctuality' description: Indicadores de pagamento ou recebimento dentro do prazo. frequencia: $ref: '#/components/schemas/PublicContractFrequency' description: Intervalo e quantidade de lançamentos observados para a parte. ticket_medio: type: number description: Ticket médio, em reais. Guardado como o cliente enviou, número ou texto numérico. em_aberto: type: object properties: quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. valor: type: number description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros vencidas: type: integer description: Obrigações com vencimento anterior à data de referência. required: - quantidade - valor - vencidas description: Valor ou quantidade de obrigações ainda em aberto no recorte. cliente_desde: type: string nullable: true format: date description: Data de início do relacionamento com o cliente. receita_12_meses: type: number description: Total de receitas atribuídas à parte nos últimos doze meses. receita_total: type: number description: Receitas apuradas no recorte financeiro apresentado. participacao_na_receita_12_meses: type: number description: Participação percentual da parte nas receitas dos últimos doze meses. required: - pontualidade - frequencia - ticket_medio - em_aberto - cliente_desde - receita_12_meses - receita_total - participacao_na_receita_12_meses example: cliente_desde: '2026-06-22' receita_12_meses: 2000.0 receita_total: 2000.0 participacao_na_receita_12_meses: 10.0 pontualidade: pagas: 4 em_dia: 3 atrasadas: 1 percentual_em_dia: 75.0 media_dias_de_atraso: 2.0 frequencia: lancamentos_12_meses: 5 media_dias_entre_lancamentos: 30.0 ultimo_lancamento: '2026-10-20' ticket_medio: 500.0 em_aberto: quantidade: 1 valor: 500.0 vencidas: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits: get: tags: - Créditos summary: Consultar resumo — créditos operationId: extended_get_credits description: 'Permissões exigidas na chave: (credits.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar resumo — créditos. content: application/json: schema: $ref: '#/components/schemas/PublicContractCreditSummary' example: balance: 5000 reserved: 0 available: 5000 bonus_remaining: 5000 recharge_remaining: 0 recovery_debt: 0 billing_email_allowance: included: true period: 2026-10 limit: null used: 2 reserved: 0 remaining: null overage_unit_credits: 0 storage: included: true used_bytes: 1000000 included_bytes: null excess_bytes: 0 projected_credits: 0 enabled: false tariff_version: storage-included-2026-10-v1 next_measurement: '2026-11-01' pending_credits: 0 latest: null monthly_usage: period: 2026-10 timezone: America/Sao_Paulo sms: used: 0 unit: messages limit: null contracts: used: 0 unit: sent_contracts limit: null whatsapp: used: 0 unit: messages limit: null tariffs: - service: whatsapp credits: 12 version: 2026-10-included-v1-0f38ecd984 unit: mensagem - service: sms credits: 16 version: 2026-10-included-v1-0f38ecd984 unit: mensagem - service: contract_simple credits: 50 version: 2026-10-included-v1-0f38ecd984 unit: assinatura - service: contract_extended credits: 75 version: 2026-10-included-v1-0f38ecd984 unit: assinatura - service: contract_icp_brasil credits: 75 version: 2026-10-included-v1-0f38ecd984 unit: assinatura updated_at: '2026-10-29T12:00:00+00:00' invitation_seen: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/actors: get: tags: - Créditos summary: Listar usuários no consumo — créditos operationId: extended_get_credits_actors description: 'Permissões exigidas na chave: (credits.view). Catálogo de atores financeiros registrados em CreditOperation ou CreditTopup da empresa. Pode conter ator sem entries no filtro atual; não é diretório de todos os usuários.' responses: '200': description: Listar usuários no consumo — créditos. content: application/json: schema: type: array items: type: object properties: user_id: type: string format: uuid description: UUID do usuário associado ao registro na empresa autenticada. user_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. required: - user_id - user_name example: - user_id: 20000000-0000-4000-8000-000000000040 user_name: Operador Exemplo '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/auto-recharge: get: tags: - Créditos summary: Consultar recarga automática — créditos operationId: extended_get_credits_auto_recharge description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar recarga automática — créditos. content: application/json: schema: $ref: '#/components/schemas/PublicContractAutoRecharge' example: mode: disabled payment_method: card amount_cents: 5000 status: disabled threshold_credits: null billing_day: null card_last_four: null next_charge_at: null mandate_status: null capabilities: automatic_pix: false available_payment_methods: monthly: - card threshold: - card mandate: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Créditos summary: Configurar recarga automática — créditos operationId: extended_put_credits_auto_recharge description: 'Permissões exigidas na chave: (credits.recharge). PIX Automático exige disponibilidade do fluxo de recarga e regra mensal. Quando indisponível retorna 422 errors.payment_method; essa recusa não garante eligibility.' requestBody: required: true content: application/json: example: mode: disabled schema: type: object properties: mode: description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `disabled`, `monthly`, `threshold`.' type: string enum: - disabled - monthly - threshold payment_method: description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `card`, `automatic_pix`.' type: string nullable: true enum: - card - automatic_pix amount_cents: type: integer minimum: 1000 maximum: 1000000 description: Valor monetário em centavos de real; 15000 representa R$ 150,00. threshold_credits: type: integer nullable: true minimum: 0 maximum: 999999 description: Quantidade de créditos utilizada como limiar para o aviso ou recarga configurada. billing_day: type: integer nullable: true minimum: 1 maximum: 31 description: Dia do mês utilizado para o faturamento ou vencimento configurado. card_token: description: Token do cartão fornecido pelo processador. Não envie o número completo do cartão. type: string nullable: true maxLength: 512 card_last_four: description: Quatro últimos dígitos do cartão, usados apenas para identificação visual. type: string nullable: true consent: type: boolean description: Consentimento informado para autorizar a contratação ou o meio de pagamento solicitado. card_validation: type: object items: {} nullable: true description: Dados solicitados para a validação do cartão junto ao processador. properties: nome: type: string maxLength: 100 description: Nome informado para identificar a pessoa ou empresa no cadastro. mes: type: string description: Mês de competência ou de referência do documento, de 1 a 12. ano: type: string description: Ano de competência ou de referência do documento. cpf: type: string maxLength: 14 description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. email: type: string format: email maxLength: 190 description: Endereço de e-mail do contato ou usuário associado ao recurso. celular: description: Número de celular do comprador para contato sobre o pagamento. type: string nullable: true maxLength: 20 cvv: type: string description: Código de segurança do cartão para validação pelo processador; não persista nem registre em logs. required: - mode allOf: - anyOf: - properties: mode: enum: - disabled description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `disabled`.' - required: - amount_cents - consent - billing_day properties: mode: enum: - monthly description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `monthly`.' - required: - amount_cents - consent - threshold_credits properties: mode: enum: - threshold description: 'Modo de funcionamento selecionado para o recurso; consulte as opções do enum. Opções: `threshold`.' responses: '200': description: Configurar recarga automática — créditos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractAutoRecharge' example: mode: disabled payment_method: card amount_cents: 5000 status: disabled threshold_credits: null billing_day: null card_last_four: null next_charge_at: null capabilities: automatic_pix: false available_payment_methods: monthly: - card threshold: - card mandate: null id: 20000000-0000-4000-8000-000000000006 company_id: 20000000-0000-4000-8000-000000000007 consented_at: null consented_by: null consent_version: null threshold_armed: true threshold_cycle: 0 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' card_on_file: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/card-configuration: get: tags: - Créditos summary: Consultar configuração de cartão — créditos operationId: extended_get_credits_card_configuration description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração de cartão — créditos. content: application/json: schema: $ref: '#/components/schemas/PublicContractCardConfiguration' example: credential: CREDENCIAL-FICTICIA-SEM-VALIDADE sandbox: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '503': description: Ocorreu uma falha no processamento; detalhes internos são ocultados. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem503' /credits/entries: get: tags: - Créditos summary: Listar lançamentos da fatura — créditos operationId: extended_get_credits_entries description: 'Permissões exigidas na chave: (credits.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 160 - description: Serviço ao qual o lançamento de créditos ou consumo se refere. name: service in: query required: false schema: type: string nullable: true enum: - scan_ai - governance_ai - chat_ai - whatsapp - sms - billing_email - contract_simple - contract_extended - contract_icp_brasil - storage_monthly - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - completed - reserved - uncertain - released - description: UUID do usuário associado ao registro na empresa autenticada. name: user_id in: query required: false schema: type: string format: uuid nullable: true - description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: from in: query required: false schema: type: string format: date nullable: true - description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. name: to in: query required: false schema: type: string format: date nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer nullable: true minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer nullable: true minimum: 1 maximum: 100 responses: '200': description: Listar lançamentos da fatura — créditos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCreditEntry' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total example: current_page: 1 data: - id: 20000000-0000-4000-8000-000000000041 company_id: 20000000-0000-4000-8000-000000000007 operation_id: null reference: welcome type: bonus service: null quantity: 1 credits: 5000 credit_source: bonus status: completed metadata: null user_name: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' user_id: null actor_type: system unit: null unit_credits: null tariff_version: null operation_status: null account_reference: null first_page_url: https://empresa-exemplo.invalid/public-api/v1/credits/entries?page=1 last_page: 1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/credits/entries?page=1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/credits/entries?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null next_page_url: null path: https://empresa-exemplo.invalid/public-api/v1/credits/entries per_page: 10 prev_page_url: null to: 1 total: 1 from: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/quote: post: tags: - Créditos summary: Orçar consumo — créditos operationId: extended_post_credits_quote description: 'Permissões exigidas na chave: (credits.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: service: scan_ai quantity: 1 schema: type: object properties: service: description: 'Serviço ao qual o lançamento de créditos ou consumo se refere. Opções: `scan_ai`, `governance_ai`, `chat_ai`, `whatsapp`, `sms`, `billing_email`, `contract_simple`, `contract_extended`, `contract_icp_brasil`.' type: string enum: - scan_ai - governance_ai - chat_ai - whatsapp - sms - billing_email - contract_simple - contract_extended - contract_icp_brasil quantity: description: Quantidade de unidades do serviço ou produto solicitada. type: integer minimum: 1 maximum: 100000 required: - service - quantity responses: '200': description: Orçar consumo — créditos. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: service: type: string description: Serviço ao qual o lançamento de créditos ou consumo se refere. quantity: type: integer description: Quantidade de unidades do serviço ou produto solicitada. unit_credits: type: integer description: Custo em créditos por unidade do serviço. total_credits: type: integer description: Créditos totais calculados para a cotação ou consumo. available: type: integer description: Indica se o recurso está disponível para uso no estado atual. sufficient: type: boolean description: Indica se a franquia ou o saldo permite atender aos destinatários elegíveis. tariff_version: type: string description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. required: - service - quantity - unit_credits - total_credits - available - sufficient - tariff_version example: service: sms quantity: 2 unit_credits: 16 total_credits: 32 available: 5000 sufficient: true tariff_version: 2026-10-included-v1-0f38ecd984 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/storage-consent: put: tags: - Créditos summary: Atualizar consentimento de armazenamento — créditos operationId: extended_put_credits_storage_consent description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: enabled: false schema: type: object properties: enabled: description: Ativa ou desativa o recurso configurado nesta operação. type: boolean tariff_version: type: string nullable: true maxLength: 40 description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. required: - enabled responses: '200': description: Atualizar consentimento de armazenamento — créditos. A resposta informa o resultado da atualização solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractStorageSummary' example: included: true used_bytes: 1000000 included_bytes: null excess_bytes: 0 projected_credits: 0 enabled: false tariff_version: storage-included-2026-10-v1 next_measurement: '2026-11-01' pending_credits: 0 latest: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/topups: get: tags: - Créditos summary: Listar — créditos operationId: extended_get_credits_topups description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. name: idempotency_key in: query required: false schema: type: string maxLength: 160 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Texto utilizado para localizar registros nos campos pesquisáveis desta listagem. name: search in: query required: false schema: type: string nullable: true maxLength: 160 - description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. name: status in: query required: false schema: type: string nullable: true enum: - issuing - submitting - pending - uncertain - paid - failed - cancel_pending - cancelled - reversed - description: Meio de pagamento escolhido para a contratação ou recarga. name: instrument in: query required: false schema: type: string nullable: true enum: - pix - automatic_pix - boleto - card responses: '200': description: Listar — créditos. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractCreditTopup' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. current_page: type: integer description: Número da página retornada na consulta paginada. first_page_url: type: string description: Endereço da primeira página da consulta. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. last_page_url: type: string description: Endereço da última página da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. next_page_url: type: string nullable: true description: Endereço da próxima página; nulo quando a consulta terminou. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. prev_page_url: type: string nullable: true description: Endereço da página anterior; nulo quando a consulta está na primeira página. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - data - current_page - first_page_url - from - last_page - last_page_url - links - next_page_url - path - per_page - prev_page_url - to - total example: current_page: 1 data: - id: 20000000-0000-4000-8000-000000000042 idempotency_key: recarga-exemplo-001 status: submitting amount_cents: 1000 credits: 1000 instrument: card document: null created_at: '2026-10-29T12:00:00.000000Z' confirmed_at: null fiscal_note: null first_page_url: https://empresa-exemplo.invalid/public-api/v1/credits/topups?page=1 last_page: 1 last_page_url: https://empresa-exemplo.invalid/public-api/v1/credits/topups?page=1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/credits/topups?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null next_page_url: null path: https://empresa-exemplo.invalid/public-api/v1/credits/topups per_page: 10 prev_page_url: null to: 1 total: 1 from: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Créditos summary: Criar — créditos operationId: extended_post_credits_topups description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: amount_cents: 15000 instrument: pix idempotency_key: integracao-exemplo-2026-001 schema: type: object properties: amount_cents: description: Valor monetário em centavos de real; 15000 representa R$ 150,00. type: integer minimum: 1000 maximum: 1000000 instrument: description: 'Meio de pagamento escolhido para a contratação ou recarga. Opções: `pix`, `boleto`, `card`.' type: string enum: - pix - boleto - card idempotency_key: description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. type: string maxLength: 160 token: type: string nullable: true maxLength: 512 description: Token de identificação ou acesso ao recurso. Trate como informação confidencial. consent: type: boolean description: Consentimento informado para autorizar a contratação ou o meio de pagamento solicitado. card_validation: type: object items: {} nullable: true description: Dados solicitados para a validação do cartão junto ao processador. properties: nome: type: string maxLength: 100 description: Nome informado para identificar a pessoa ou empresa no cadastro. mes: type: string description: Mês de competência ou de referência do documento, de 1 a 12. ano: type: string description: Ano de competência ou de referência do documento. cpf: type: string maxLength: 14 description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. email: type: string format: email maxLength: 190 description: Endereço de e-mail do contato ou usuário associado ao recurso. celular: description: Número de celular do comprador para contato sobre o pagamento. type: string nullable: true maxLength: 20 cvv: type: string description: Código de segurança do cartão para validação pelo processador; não persista nem registre em logs. required: - amount_cents - instrument - idempotency_key responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractCreditTopup' example: id: 20000000-0000-4000-8000-000000000042 idempotency_key: recarga-exemplo-001 status: submitting amount_cents: 1000 credits: 1000 instrument: card document: null created_at: '2026-10-29T12:00:00.000000Z' confirmed_at: null fiscal_note: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /credits/topups/{topup}: get: tags: - Créditos summary: Consultar — créditos operationId: extended_get_credits_topups_topup description: 'Permissões exigidas na chave: (credits.recharge). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: topup in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — créditos. content: application/json: schema: $ref: '#/components/schemas/PublicContractCreditTopup' example: id: 20000000-0000-4000-8000-000000000042 idempotency_key: recarga-exemplo-001 status: submitting amount_cents: 1000 credits: 1000 instrument: card document: null created_at: '2026-10-29T12:00:00.000000Z' confirmed_at: null fiscal_note: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/exports: get: tags: - Migração de dados summary: Listar — migração de dados operationId: extended_get_data_migration_export description: 'Permissões exigidas na chave: (data_migration.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — migração de dados. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractDataExport' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 70000000-0000-4000-8000-000000000001 type: clients action: export status: pending file_path: 70000000-0000-4000-8000-000000000099/data-migration/export/70000000-0000-4000-8000-000000000003.xlsx data: null errors: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' expires_at: null expired: false links: first: https://empresa-exemplo.invalid/public-api/v1/data-migration/exports?page=1 last: https://empresa-exemplo.invalid/public-api/v1/data-migration/exports?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: https://empresa-exemplo.invalid/public-api/v1/data-migration/exports?page=1 label: '1' page: 1 active: true - url: null label: Próximo » page: null active: false path: https://empresa-exemplo.invalid/public-api/v1/data-migration/exports per_page: 10 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 25 description: Itens por página. Sem teto universal presumido. post: tags: - Migração de dados summary: Criar — migração de dados operationId: extended_post_data_migration_export description: 'Permissões exigidas na chave: (data_migration.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: type: clients action: export schema: type: object properties: type: description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type: string action: description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. type: string required: - type - action responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawDataExport' example: id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' type: clients action: export status: pending file_path: 70000000-0000-4000-8000-000000000099/data-migration/export/70000000-0000-4000-8000-000000000003.xlsx original_file_name: 70000000-0000-4000-8000-000000000003.xlsx '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/exports/{dataExport}: get: tags: - Migração de dados summary: Consultar — migração de dados operationId: extended_get_data_migration_export_dataExport description: 'Permissões exigidas na chave: (data_migration.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataExport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar — migração de dados. content: application/json: schema: $ref: '#/components/schemas/PublicContractDataExport' example: id: 70000000-0000-4000-8000-000000000001 type: clients action: export status: pending file_path: 70000000-0000-4000-8000-000000000099/data-migration/export/70000000-0000-4000-8000-000000000003.xlsx data: null errors: null created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' expires_at: null expired: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Migração de dados summary: Excluir — migração de dados operationId: extended_delete_data_migration_export_dataExport description: 'Permissões exigidas na chave: (data_migration.delete). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataExport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Excluir — migração de dados. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/exports/{dataExport}/file: get: tags: - Migração de dados summary: Baixar — migração de dados operationId: extended_get_data_migration_export_dataExport_download description: 'Permissões exigidas na chave: (data_migration.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataExport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Baixar — migração de dados. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/imports/example: get: tags: - Migração de dados summary: Baixar exemplo de importação — migração de dados operationId: extended_get_data_migration_import_example description: 'Permissões exigidas na chave: (data_migration.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: type in: query required: true schema: type: string enum: - account_payables - account_receivables - cashboxes - categories - clients - cost_centers - employees - interns - partners - providers - standard_launches description: Tipo de planilha de importação. Utilize uma das onze opções do catálogo ImportType. example: clients x-docs-example-note: Seleciona explicitamente o modelo de planilha de clientes. Trata-se do download do modelo, não da execução de uma importação nem de clientes já existentes. responses: '200': description: Baixar exemplo de importação — migração de dados. content: application/octet-stream: schema: type: string format: binary '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/imports/{dataImport}/file: put: x-codeSamples: - lang: Shell label: Multipart com arquivo local source: "# Defina BASE_URL, ACCESS_KEY, API_KEY, os IDs do caminho e os campos locais antes de executar.\n\ # Use 0/1 para booleanos; respeite enums, formatos e relações indicados no schema.\ncurl --fail-with-body\ \ --request PUT \"$BASE_URL/data-migration/imports/${DATAIMPORT_ID}/file\" \\\n --header \"X-Public-Access-Key:\ \ $ACCESS_KEY\" \\\n --header \"X-Public-API-Key: $API_KEY\" \\\n --header 'Accept: application/json'\ \ \\\n --form \"file=@${ARQUIVO_FILE}\"" tags: - Migração de dados summary: Atualizar arquivo de importação — migração de dados operationId: extended_post_data_migration_import_dataImport_update_file description: 'Permissões exigidas na chave: (data_migration.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataImport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: multipart/form-data: schema: type: object properties: file: description: Arquivo enviado para processamento; use o tipo de conteúdo aceito nesta operação. type: string format: binary required: - file responses: '200': description: Atualizar arquivo de importação — migração de dados. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractRawDataImport' example: id: 70000000-0000-4000-8000-000000000001 created_at: '2026-10-29T12:00:00.000000Z' updated_at: '2026-10-29T12:00:00.000000Z' type: clients action: verify status: queued original_file_name: clientes.xlsx file_path: 70000000-0000-4000-8000-000000000099/data-migration/import/70000000-0000-4000-8000-000000000004.xlsx data: null errors: null user_id: null deleted_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /data-migration/imports/{dataImport}/validations: post: tags: - Migração de dados summary: Validar arquivo de importação — migração de dados operationId: extended_post_data_migration_import_dataImport_verify description: 'Permissões exigidas na chave: (data_migration.create). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: dataImport in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Validar arquivo de importação — migração de dados. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /interns/{intern}/documents/required: get: tags: - Estagiários summary: Listar documentos obrigatórios — estagiários operationId: extended_get_interns_intern_documents_required description: 'Permissões exigidas na chave: (interns.view) e (documents.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: intern in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: type in: query required: false schema: type: string enum: - PF - PJ - Any - I nullable: false default: Any description: 'Filtro opcional de DocumentProfileType: PF, PJ, Any ou I. Ausência mantém a seleção de perfis Any; valor inválido é 422 errors.type antes da consulta. Um resultado vazio não valida tipo fora do enum.' responses: '200': description: Listar documentos obrigatórios — estagiários. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRequiredProfile' example: - id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000012 name: Comprovante de identificação description: Identificação para cadastro fictício type: Any required: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /onboarding: get: tags: - Órbita financeira summary: Listar — órbita financeira operationId: extended_get_jornada description: 'Permissões exigidas na chave: (dashboard.summary). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — órbita financeira. content: application/json: schema: $ref: '#/components/schemas/PublicContractOnboarding' example: calculado_em: '2026-10-29T12:00:00Z' mes_referencia: 2026-09 fase_atual: 1 selo: manual xp: atual: 100 maximo: 2300 missoes: concluidas: 1 aplicaveis: 23 proxima: J02 fases: - numero: 1 id: alicerce concluida: false missoes: - id: J01 estado: concluida numerador: 1 denominador: 1 meta: null disponivel: true concluida_em: '2026-10-28T12:00:00Z' excecao: null - id: J02 estado: a_iniciar numerador: 0 denominador: 1 meta: 70 disponivel: true concluida_em: null excecao: null - id: J03 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J04 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - numero: 2 id: movimento concluida: false missoes: - id: J05 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J06 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J07 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J08 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - numero: 3 id: autonomia concluida: false missoes: - id: J09 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J10 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J11 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J12 estado: em_breve numerador: 0 denominador: 1 meta: null disponivel: false concluida_em: null excecao: null - numero: 4 id: visibilidade concluida: false missoes: - id: J13 estado: a_iniciar numerador: 0 denominador: 6 meta: 6 disponivel: true concluida_em: null excecao: null - id: J14 estado: a_iniciar numerador: 0 denominador: 8 meta: 8 disponivel: true concluida_em: null excecao: null - id: J15 estado: a_iniciar numerador: 0 denominador: 0 meta: 100 disponivel: true concluida_em: null excecao: null - id: J16 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - numero: 5 id: controle concluida: false missoes: - id: J17 estado: a_iniciar numerador: 0 denominador: 0 meta: 100 disponivel: true concluida_em: null excecao: null - id: J18 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J19 estado: a_iniciar numerador: 0 denominador: 0 meta: 100 disponivel: true concluida_em: null excecao: null - id: J20 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - numero: 6 id: estrategia concluida: false missoes: - id: J21 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J22 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J23 estado: a_iniciar numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: null - id: J24 estado: a_iniciar numerador: 0 denominador: 3 meta: 3 disponivel: true concluida_em: null excecao: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /onboarding/missions/{missao}/exemption: post: tags: - Órbita financeira summary: Registrar exceção da missão — órbita financeira operationId: extended_post_jornada_missoes_missao_nao_se_aplica description: 'Permissões exigidas na chave: (dashboard.summary). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: missao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. requestBody: required: true content: application/json: example: justificativa: Correção solicitada pelo responsável schema: type: object properties: justificativa: description: Motivo informado para a ação solicitada, registrado para acompanhamento. type: string minLength: 10 maxLength: 500 required: - justificativa responses: '201': description: Registro criado. content: application/json: schema: $ref: '#/components/schemas/PublicContractOnboardingMission' example: id: J03 estado: nao_se_aplica numerador: 0 denominador: 1 meta: null disponivel: true concluida_em: null excecao: justificativa: A empresa não exige este perfil documental. usuario: Operador Exemplo em: '2026-10-29T12:00:00Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' delete: tags: - Órbita financeira summary: Excluir exceção da missão — órbita financeira operationId: extended_delete_jornada_missoes_missao_nao_se_aplica description: 'Permissões exigidas na chave: (dashboard.summary). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: missao in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Excluir exceção da missão — órbita financeira. A resposta informa o resultado da remoção solicitada. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Registro excluído com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications: get: tags: - Notificações summary: Listar — notificações operationId: extended_get_notifications description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar — notificações. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractNotification' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. links: $ref: '#/components/schemas/PublicContractPaginationLinks' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. meta: $ref: '#/components/schemas/PublicContractPaginationMeta' description: Metadados da paginação, incluindo página atual e quantidade de registros. required: - data - links - meta example: data: - id: 20000000-0000-4000-8000-000000000004 message: Recebível Exemplo em atraso. action: account_receivable_due read: false read_at: null sent_at: '2026-10-29T12:00:00.000000Z' data: message: Recebível Exemplo em atraso. links: first: https://empresa-exemplo.invalid/public-api/v1/notifications?page=1 last: https://empresa-exemplo.invalid/public-api/v1/notifications?page=1 prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' active: false page: null - url: https://empresa-exemplo.invalid/public-api/v1/notifications?page=1 label: '1' active: true page: 1 - url: null label: Próximo » active: false page: null path: https://empresa-exemplo.invalid/public-api/v1/notifications per_page: 20 to: 1 total: 1 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' parameters: - name: page in: query required: false schema: type: integer default: 1 description: Número da página. - name: per_page in: query required: false schema: type: integer default: 20 description: Itens por página. Sem teto universal presumido. /notifications/center: get: tags: - Notificações summary: Listar — notificações operationId: extended_get_notifications_center description: 'Permissões exigidas na chave: (accounts.view ou dashboard.cashflow ou fiscal_rps.view ou governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - description: Seção da central de notificações que deve ser consultada. name: tab in: query required: false schema: type: string enum: - pending - unread - history - description: Número da página a consultar ou posicionar no documento, conforme a operação. name: page in: query required: false schema: type: integer minimum: 1 - description: Quantidade de registros por página na consulta paginada. name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Listar — notificações. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicContractNotificationCenterAlert' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. meta: type: object properties: current_page: type: integer description: Número da página retornada na consulta paginada. last_page: type: integer description: Número da última página disponível para os filtros da consulta. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. per_page: type: integer description: Quantidade de registros por página na consulta paginada. unread_count: type: integer description: Quantidade de notificações ainda não lidas. required: - current_page - last_page - total - per_page - unread_count description: Metadados da paginação, incluindo página atual e quantidade de registros. synced_at: type: string nullable: true format: date-time description: Instante em que a sincronização foi registrada. sync_status: type: string description: Estado da sincronização do registro com a fonte externa. required: - data - meta - synced_at - sync_status example: data: - id: 20000000-0000-4000-8000-000000000043 kind: receivable_overdue title: Recebimentos em atraso message: Contas vencidas com saldo em aberto. severity: warning amount: '50.25' count: 1 action_url: /painel/financas/contas-a-receber action_label: Ver contas reference_date: '2026-10-28' created_at: '2026-10-29T12:00:00.000000Z' resolved_at: null read: false read_at: null meta: current_page: 1 last_page: 1 total: 1 per_page: 20 unread_count: 1 synced_at: '2026-10-29T12:00:00.000000Z' sync_status: fresh '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications/center/read-receipts: post: tags: - Notificações summary: Marcar todas como lidas — notificações operationId: extended_post_notifications_center_mark_all description: 'Permissões exigidas na chave: (accounts.view ou dashboard.cashflow ou fiscal_rps.view ou governance.view). Marca como lidas todas as notificações ativas visíveis ao usuário. Não altera as leituras do histórico resolvido. Sucesso: 204 sem corpo.' responses: '204': description: Marcar todas como lidas — notificações. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications/center/{id}/read-receipt: put: tags: - Notificações summary: Marcar como lida — notificações operationId: extended_post_notifications_center_id_read description: 'Permissões exigidas na chave: (accounts.view ou dashboard.cashflow ou fiscal_rps.view ou governance.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: id in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Marcar como lida — notificações. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' '405': description: O método HTTP não é aceito para este endereço. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. Identificador de rota malformado, recusado pela restrição UUID do destino interno; esta combinação de método e URL pode retornar 405. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem405' /notifications/list-config: get: tags: - Notificações summary: Consultar configuração de notificações — notificações operationId: extended_get_notifications_list_config description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar configuração de notificações — notificações. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractNotificationSetting' example: - action: account_payable_notify_upcoming_due_date description: Notificar o vencimento de contas a pagar value: true - action: account_payable_notify_overdue description: Notificar o vencimento de contas a pagar value: true - action: account_payable_notify_upcoming_due_date_days description: Dias para notificar o vencimento de contas a pagar value: 3 - action: account_receivable_notify_upcoming_due_date description: Notificar o vencimento de contas a receber value: true - action: account_receivable_notify_overdue description: Notificar o vencimento de contas a receber value: true - action: account_receivable_notify_upcoming_due_date_days description: Dias para notificar o vencimento de contas a receber value: 3 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications/read-receipts: post: tags: - Notificações summary: Marcar todas como lidas — notificações operationId: extended_post_notifications_mark_all description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Marcar todas como lidas — notificações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Operação realizada com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications/update-config: post: tags: - Notificações summary: Atualizar configuração de notificações — notificações operationId: extended_post_notifications_update_config description: 'Permissões exigidas na chave: (accounts.view) e (accounts.update). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: action: account_payable_notify_upcoming_due_date value: false schema: oneOf: - type: object properties: action: description: 'Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. Opções: `account_payable_notify_upcoming_due_date`, `account_payable_notify_overdue`, `account_receivable_notify_upcoming_due_date`, `account_receivable_notify_overdue`.' type: string enum: - account_payable_notify_upcoming_due_date - account_payable_notify_overdue - account_receivable_notify_upcoming_due_date - account_receivable_notify_overdue value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: boolean required: - action - value - type: object properties: action: description: 'Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. Opções: `account_payable_notify_upcoming_due_date_days`, `account_receivable_notify_upcoming_due_date_days`.' type: string enum: - account_payable_notify_upcoming_due_date_days - account_receivable_notify_upcoming_due_date_days value: description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. type: integer required: - action - value responses: '200': description: Atualizar configuração de notificações — notificações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractMessage' example: message: Operação realizada com sucesso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /notifications/{notification}: post: tags: - Notificações summary: Marcar como lida — notificações operationId: extended_post_notifications_notification description: 'Permissões exigidas na chave: (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: notification in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Marcar como lida — notificações. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: $ref: '#/components/schemas/PublicContractNotification' example: id: 20000000-0000-4000-8000-000000000004 message: Recebível Exemplo em atraso. action: account_receivable_due read: true read_at: '2026-10-29T12:00:00.000000Z' sent_at: '2026-10-29T12:00:00.000000Z' data: message: Recebível Exemplo em atraso. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /permissions: get: tags: - Permissões summary: Listar — permissões operationId: extended_get_permissions description: 'Permissões exigidas na chave: (roles.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Este endpoint consulta o catálogo de permissões da sessão interna e exige `roles.view`. Ele não enumera todas as permissões de chave pública: o catálogo de administração de chaves inclui `api_logs.view`, exigida nas consultas de logs. O requisito de login é definido no vínculo entre a chave de acesso e cada permissão.' responses: '200': description: Listar — permissões. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractPermissionGroup' example: - name: Cartões de crédito perms: - name: cards.view title: Visualizar cartões de crédito - name: cards.create title: Criar cartões de crédito - name: cards.update title: Editar cartões de crédito - name: cards.delete title: Excluir cartões de crédito '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /premium/capabilities: get: tags: - Configurações de consumo summary: Consultar funcionalidades contratadas — configurações de consumo operationId: extended_get_premium_capabilities description: 'Permissões exigidas na chave: (credits.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Consultar funcionalidades contratadas — configurações de consumo. content: application/json: schema: $ref: '#/components/schemas/PublicContractPremiumCapabilities' example: module_ids: - 017a3c84-70ee-599d-8ea8-344a7a5976d8 - 5162725c-265c-5122-8341-52e17c50f9e2 - fb831c47-1e72-5282-a0bd-62161ca9398a managed_by_plan: true document_ai_included: true assistant_included: true antifraud_included: true scan_mode: ai governance_ai: true chat_ai: true billing_email_allowance: included: true period: 2026-10 limit: null used: 2 reserved: 0 remaining: null overage_unit_credits: 0 tariffs: - service: whatsapp credits: 12 version: 2026-10-included-v1-0f38ecd984 unit: mensagem - service: sms credits: 16 version: 2026-10-included-v1-0f38ecd984 unit: mensagem - service: contract_simple credits: 50 version: 2026-10-included-v1-0f38ecd984 unit: assinatura - service: contract_extended credits: 75 version: 2026-10-included-v1-0f38ecd984 unit: assinatura - service: contract_icp_brasil credits: 75 version: 2026-10-included-v1-0f38ecd984 unit: assinatura tariff_version: 2026-10-included-v1-0f38ecd984 invitation_seen: false '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /premium/invitation: post: tags: - Configurações de consumo summary: Responder convite — configurações de consumo operationId: extended_post_premium_invitation description: 'Permissões exigidas na chave: (credits.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' requestBody: required: true content: application/json: example: decision: accepted schema: type: object properties: decision: description: 'Decisão tomada na análise; utilize um dos valores aceitos no enum. Opções: `accepted`, `dismissed`.' type: string enum: - accepted - dismissed required: - decision responses: '200': description: Responder convite — configurações de consumo. A resposta informa o resultado do pedido; confira o estado retornado antes de prosseguir. content: application/json: schema: type: object properties: seen: type: boolean enum: - true description: Quantidade de ocorrências que já receberam a marcação de visualizadas. required: - seen example: seen: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /premium/settings: get: tags: - Configurações de consumo summary: Consultar configurações — configurações de consumo operationId: extended_get_premium_settings description: 'Permissões exigidas na chave: (credits.view). Retorna capacidades e configuração efetiva da empresa, com managed_by_plan=true. OCR (scan_mode) e assistente (chat_ai) são definidos pelos módulos contratados e não podem ser alterados neste endpoint. governance_ai só fica ativo com antifraude contratada e autorização válida;' responses: '200': description: Consultar configurações — configurações de consumo. content: application/json: example: module_ids: - 017a3c84-70ee-599d-8ea8-344a7a5976d8 - 5162725c-265c-5122-8341-52e17c50f9e2 - fb831c47-1e72-5282-a0bd-62161ca9398a managed_by_plan: true document_ai_included: true assistant_included: true antifraud_included: true scan_mode: ai governance_ai: true chat_ai: true pricing_acknowledged_version: null tariff_version: 2026-10-included-v1-0f38ecd984 costs_per_1000: whatsapp: 12000 sms: 16000 contract_simple: 50000 contract_extended: 75000 contract_icp_brasil: 75000 usage_summary: [] schema: $ref: '#/components/schemas/PublicContractPremiumSettings' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' put: tags: - Configurações de consumo summary: Atualizar configurações — configurações de consumo operationId: extended_put_premium_settings description: 'Permissão exigida na chave: credits.recharge. As configurações são geridas pelo plano. O pedido vazio {} mantém compatibilidade e devolve a configuração atual. Enviar valores em scan_mode, chat_ai, pricing_acknowledged_version, governance_ai ou governance_processing_consent é recusado com 422 conforme prohibited; não há ativação nem agendamento de análise por esta rota.' requestBody: required: false content: application/json: schema: type: object properties: governance_ai: type: boolean description: Capacidade gerida pelo plano. Escrita não vazia é recusada (prohibited); não é campo editável neste PUT. governance_processing_consent: type: boolean description: Capacidade gerida pelo plano. Escrita não vazia é recusada (prohibited); não é campo editável neste PUT. not: anyOf: - required: - governance_ai properties: governance_ai: enum: - true - false description: 'Disponibilidade de análise de governança com IA, definida pelo módulo Antifraude do plano. Opções: `True`, `False`.' - required: - governance_processing_consent properties: governance_processing_consent: enum: - true - false description: 'Campo de consentimento para processamento de governança; não pode ser alterado por esta operação. Opções: `True`, `False`.' example: {} responses: '200': description: Atualizar configurações — configurações de consumo. A resposta informa o resultado da atualização solicitada. content: application/json: example: module_ids: - 017a3c84-70ee-599d-8ea8-344a7a5976d8 - 5162725c-265c-5122-8341-52e17c50f9e2 - fb831c47-1e72-5282-a0bd-62161ca9398a managed_by_plan: true document_ai_included: true assistant_included: true antifraud_included: true scan_mode: ai governance_ai: true chat_ai: true pricing_acknowledged_version: null tariff_version: 2026-10-included-v1-0f38ecd984 costs_per_1000: whatsapp: 12000 sms: 16000 contract_simple: 50000 contract_extended: 75000 contract_icp_brasil: 75000 usage_summary: [] schema: $ref: '#/components/schemas/PublicContractPremiumSettings' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /providers/{provider}/documents/required: get: tags: - Fornecedores summary: Listar documentos obrigatórios — fornecedores operationId: extended_get_providers_provider_documents_required description: 'Permissões exigidas na chave: (providers.view) e (documents.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: provider in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. - name: type in: query required: false schema: type: string enum: - PF - PJ - Any - I nullable: false default: Any description: 'Filtro opcional de DocumentProfileType: PF, PJ, Any ou I. Ausência mantém a seleção de perfis Any; valor inválido é 422 errors.type antes da consulta. Um resultado vazio não valida tipo fora do enum.' responses: '200': description: Listar documentos obrigatórios — fornecedores. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRequiredProfile' example: - id: 10000000-0000-4000-8000-000000000010 document_category_id: 10000000-0000-4000-8000-000000000013 name: Comprovante de identificação description: Identificação para cadastro fictício type: Any required: true '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /providers/{provider}/indicadores: get: tags: - Fornecedores summary: Consultar indicadores — fornecedores operationId: extended_get_providers_provider_indicadores description: 'Permissões exigidas na chave: (providers.view) e (accounts.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: provider in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Consultar indicadores — fornecedores. content: application/json: schema: type: object properties: pontualidade: $ref: '#/components/schemas/PublicContractPunctuality' description: Indicadores de pagamento ou recebimento dentro do prazo. frequencia: $ref: '#/components/schemas/PublicContractFrequency' description: Intervalo e quantidade de lançamentos observados para a parte. ticket_medio: type: number description: Ticket médio, em reais. Guardado como o cliente enviou, número ou texto numérico. em_aberto: type: object properties: quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. valor: type: number description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros vencidas: type: integer description: Obrigações com vencimento anterior à data de referência. required: - quantidade - valor - vencidas description: Valor ou quantidade de obrigações ainda em aberto no recorte. total_pago: type: number description: Valor total pago ou recebido no recorte consultado. pago_12_meses: type: number description: Total pago nos últimos doze meses considerados pelo indicador. participacao_na_despesa_12_meses: type: number description: Participação percentual da parte nas despesas dos últimos doze meses. required: - pontualidade - frequencia - ticket_medio - em_aberto - total_pago - pago_12_meses - participacao_na_despesa_12_meses example: total_pago: 2000.0 pago_12_meses: 2000.0 participacao_na_despesa_12_meses: 10.0 pontualidade: pagas: 4 em_dia: 3 atrasadas: 1 percentual_em_dia: 75.0 media_dias_de_atraso: 2.0 frequencia: lancamentos_12_meses: 5 media_dias_entre_lancamentos: 30.0 ultimo_lancamento: '2026-10-20' ticket_medio: 500.0 em_aberto: quantidade: 1 valor: 500.0 vencidas: 0 '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/employees: get: tags: - Usuários summary: Listar funcionários associáveis — usuários operationId: extended_get_users_employees description: 'Permissões exigidas na chave: (users.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar funcionários associáveis — usuários. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRawEmployee' example: - id: 10000000-0000-4000-8000-000000000031 user_id: null employee_workspace_id: 10000000-0000-4000-8000-000000000040 employee_graduation_level_id: 10000000-0000-4000-8000-000000000041 type: PF childs: null has_childs: 0 social_registration: null sector: null employee_code: null term_date: null occupation: null probation_contract: false probation_observation: null probation_duration: null prorrogation_probation_contract: false prorrogation_probation_observation: null prorrogation_probation_duration: null name: Pessoa Exemplo description: Cadastro sintético offline course: null cpf: '00000000000' marital_status: single gender: female payment_day: '05' birth_date: null pis_pasep: null hire_date: null salary: 1500.0 payment_type: monthly active: true work_schedule: null created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' emails: [] user: null phones: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/employees/associates: get: tags: - Usuários summary: Listar funcionários associados — usuários operationId: extended_get_users_employees_associates description: 'Permissões exigidas na chave: (users.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar funcionários associados — usuários. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractUserIndexItem' example: - id: 10000000-0000-4000-8000-000000000020 associate_type: App\Models\Employees\Employee associate_id: 10000000-0000-4000-8000-000000000021 name: Lia Exemplo email: lia@empresa-exemplo.invalid email_verified_at: null ip: null phone: null two_factors: [] active: true created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' deleted_at: null '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/interns: get: tags: - Usuários summary: Listar estagiários associáveis — usuários operationId: extended_get_users_interns description: 'Permissões exigidas na chave: (users.view). Lista estagiários ativos, livres ou já vinculados a usuário. Não promete somente estagiários livres nem permite vínculo duplicado.' responses: '200': description: Listar estagiários associáveis — usuários. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRawIntern' example: - id: 10000000-0000-4000-8000-000000000032 intern_workspace_id: 10000000-0000-4000-8000-000000000040 intern_graduation_level_id: 10000000-0000-4000-8000-000000000041 educational_institution: Instituição Modelo department: Administrativo pis_pasep: '00000000000' period_of_course: 2 current_situation_course: studying termination_date: null internship_mode: non_obligatory name: Pessoa Exemplo description: Cadastro sintético offline course: null cpf: '00000000000' marital_status: single gender: female payment_day: '05' birth_date: null hire_date: null salary: 1500.0 payment_type: monthly active: true work_schedule: null created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' emails: [] user: null phones: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/providers: get: tags: - Usuários summary: Listar fornecedores associáveis — usuários operationId: extended_get_users_providers description: 'Permissões exigidas na chave: (users.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' responses: '200': description: Listar fornecedores associáveis — usuários. content: application/json: schema: type: array items: $ref: '#/components/schemas/PublicContractRawProvider' example: - id: 10000000-0000-4000-8000-000000000033 type: PJ name: Fornecedor Modelo fantasy_name: null cpf: null cnpj: 00000000000191 ie: null im: null description: null active: true international: false provider_since: '2026-10-01' nif: null nao_nif: null created_at: '2026-10-20T12:00:00.000000Z' updated_at: '2026-10-20T12:00:00.000000Z' deleted_at: null emails: [] phones: [] '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/{user}/attachments: get: tags: - Usuários summary: Listar anexos do usuário — usuários operationId: extended_get_users_user_attachments description: 'Permissões exigidas na chave: (users.view). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa.' parameters: - name: user in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '200': description: Listar anexos do usuário — usuários. content: application/json: schema: type: object properties: attachment: $ref: '#/components/schemas/PublicContractAttachment' description: Arquivo anexado ao registro, conforme o tipo e formato declarados no schema. required: - attachment example: attachment: name: Foto type: user:photo size: 1024 mime: image/png ext: png url: https://empresa-exemplo.invalid/user-attachment/MTAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDIwOnVzZXI6cGhvdG86Og==/Foto created_at: '2026-10-20T12:00:00.000000Z' '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/{user}/two-factor-resets: post: tags: - Usuários summary: Redefinir segundo fator — usuários operationId: extended_post_users_user_reset_2fa description: 'Permissões exigidas na chave: (users.reset_2fa). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Redefinir o segundo fator do único administrador ativo da empresa retorna 422.' parameters: - name: user in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Redefinir segundo fator — usuários. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' /users/{user}/password-resets: post: tags: - Usuários summary: Redefinir senha — usuários operationId: extended_post_users_user_reset_pass description: 'Permissões exigidas na chave: (users.reset_pass). Aplica as validações e regras de negócio deste recurso, incluindo os módulos contratados e o acesso da empresa. Redefinir a senha do único administrador ativo da empresa retorna 422.' parameters: - name: user in: path required: true schema: type: string description: Identificador do recurso na empresa autenticada. responses: '204': description: Redefinir senha — usuários. Sem corpo de resposta. '400': description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' '402': description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' '403': description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' '404': description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' '409': description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' '422': description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' '429': description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' '401': $ref: '#/components/responses/Unauthorized' components: examples: Problem400: summary: Erro HTTP 400 em application/problem+json value: type: about:blank title: Requisição inválida status: 400 detail: A requisição é inválida. instance: /public-api/v1/clients code: bad_request Problem401: summary: Erro HTTP 401 em application/problem+json value: type: about:blank title: Não autenticado status: 401 detail: É necessário autenticar-se para acessar este recurso. instance: /public-api/v1/clients code: unauthenticated Problem402: summary: Erro HTTP 402 em application/problem+json value: type: about:blank title: Pagamento necessário status: 402 detail: O período da assinatura terminou. Acesse sua assinatura para renovar. instance: /public-api/v1/clients code: subscription_expired collection: access_allowed: false Problem403: summary: Erro HTTP 403 em application/problem+json value: type: about:blank title: Acesso negado status: 403 detail: Você não tem permissão para acessar este recurso. instance: /public-api/v1/clients code: forbidden Problem404: summary: Erro HTTP 404 em application/problem+json value: type: about:blank title: Recurso não encontrado status: 404 detail: O recurso solicitado não foi encontrado. instance: /public-api/v1/clients code: not_found Problem405: summary: Erro HTTP 405 em application/problem+json value: type: about:blank title: Método não permitido status: 405 detail: O método informado não é permitido para este recurso. instance: /public-api/v1/clients code: method_not_allowed Problem409: summary: Erro HTTP 409 em application/problem+json value: type: about:blank title: Conflito status: 409 detail: A requisição conflita com o estado atual do recurso. instance: /public-api/v1/clients code: conflict Problem410: summary: Erro HTTP 410 em application/problem+json value: type: about:blank title: Recurso indisponível status: 410 detail: O recurso solicitado não está mais disponível. instance: /public-api/v1/clients code: gone Problem422: summary: Erro HTTP 422 em application/problem+json value: type: about:blank title: Dados inválidos status: 422 detail: Os dados informados são inválidos. instance: /public-api/v1/clients code: validation_error errors: email: - O campo e-mail deve ser um endereço de e-mail válido. Problem429: summary: Erro HTTP 429 em application/problem+json value: type: about:blank title: Muitas requisições status: 429 detail: Muitas requisições. Tente novamente mais tarde. instance: /public-api/v1/clients code: too_many_requests Problem500: summary: Erro HTTP 500 em application/problem+json value: type: about:blank title: Erro interno do servidor status: 500 detail: Ocorreu um erro interno ao processar a requisição. instance: /public-api/v1/clients code: internal_server_error Problem503: summary: Erro HTTP 503 em application/problem+json value: type: about:blank title: Serviço indisponível status: 503 detail: O serviço está temporariamente indisponível. Tente novamente mais tarde. instance: /public-api/v1/clients code: service_unavailable ProblemFiscalRejection: summary: Rejeição fiscal real exemplificada em teste de contrato value: type: about:blank title: Dados inválidos status: 422 detail: Rejeição fiscal da regra de negócio. instance: /public-api/v1/service-invoices code: validation_error fiscal_codes: - E1577 - E1600 cause: regra_de_negocio retryable: false ProblemPixEligibility: summary: Elegibilidade do Pix Automático em HTTP 422 value: type: about:blank title: Dados inválidos status: 422 detail: Conta avulsa não tem PIX Automático. instance: /public-api/v1/accounts-receivable/00000000-0000-4000-8000-000000000001/pix-mandate code: validation_error eligibility: available: false reason: not_recurring message: 'Conta avulsa não tem PIX Automático: só contas recorrentes.' securitySchemes: accessKey: type: apiKey in: header name: X-Public-Access-Key description: Chave de acesso criada por um administrador no painel. apiKey: type: apiKey in: header name: X-Public-API-Key description: Chave temporária (24h) obtida em `POST /auth/sessions` (campo `api_key`). parameters: ClientId: name: client in: path required: true description: UUID do cliente. schema: type: string format: uuid example: 9c541dc4-cb1f-4eaf-a643-aadd48c0a2fb DocumentId: name: document in: path required: true description: UUID do documento. schema: type: string format: uuid example: 9c5422a0-ad44-4670-9dc4-46be00252759 ProviderId: name: provider in: path required: true description: UUID do fornecedor. schema: type: string format: uuid responses: Unauthorized: description: A credencial está ausente, inválida ou expirada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem401' PaymentRequired: description: O acesso da empresa está bloqueado pela situação da assinatura. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem402' Forbidden: description: O acesso foi recusado por permissão, requisito de login ou disponibilidade do recurso no plano. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem403' BadRequest: description: A requisição não pôde ser processada. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem400' NotFound: description: O recurso não foi encontrado no escopo da requisição. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem404' Conflict: description: A requisição apresentou um conflito; consulte code e detail para identificar o motivo. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem409' ValidationError: description: Os dados enviados foram recusados; errors pode identificar os campos e suas mensagens. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem422' TooManyRequests: description: O limite de requisições foi atingido; respeite Retry-After quando informado. Resposta em application/problem+json, conforme Problem Details (RFC 9457), com type, title, status, detail, instance e code; request_id é incluído quando disponível. headers: Retry-After: description: Espera mínima em segundos. schema: type: integer content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: problem: $ref: '#/components/examples/Problem429' schemas: ProblemDetails: type: object description: Formato obrigatório de todos os erros HTTP da API pública em application/problem+json, independentemente de Accept. required: - type - title - status - detail - instance - code properties: type: type: string format: uri description: URI de identificação do tipo de problema; atualmente about:blank. title: type: string description: Título legível em português associado ao status HTTP. status: type: integer minimum: 400 maximum: 599 description: Status HTTP do erro, igual ao status da resposta. detail: type: string description: Explicação legível da ocorrência. Não utilize seu texto como código de máquina. instance: type: string pattern: ^/[^?#]*$ description: Caminho público da requisição que falhou, sem query string nem fragmento. code: type: string minLength: 1 description: Código textual estável do erro. Preserva código de domínio quando disponível; caso contrário, usa a classificação do status HTTP. Sempre presente nas respostas de erro públicas. errors: type: object additionalProperties: type: array items: type: string minItems: 1 description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. minProperties: 1 request_id: type: string description: Identificador de correlação fornecido quando há X-Request-Id disponível; não é obrigatório. minLength: 8 maxLength: 64 pattern: ^[A-Za-z0-9_.-]+$ fiscal_codes: type: array items: type: string description: 'Em erros fiscais 4xx, códigos da regra que recusou: do emissor governamental (E####) ou da verificação do Mais Gestão antes do envio (MG-NFSE-*); ausente nos erros 5xx.' minItems: 1 maxItems: 100 cause: type: string description: Causa pública informada pelo emissor em erros fiscais 4xx; ausente em 5xx. regra_de_negocio é a rejeição do sistema do governo; recusa_antes_do_envio é a recusa da verificação do Mais Gestão antes do envio, quando a nota não chegou ao governo; classificacao_categoria é a classificação de IBS e CBS da categoria faltando ou inválida. Para decidir se repete, use retryable. enum: - regra_de_negocio - recusa_antes_do_envio - indisponibilidade - defeito_interno - configuracao_categoria - classificacao_categoria retryable: type: boolean description: Em erros fiscais 4xx, indica se o emissor classifica a falha como passível de nova tentativa. Não autoriza repetir a emissão sem consultar o estado. collection: type: object additionalProperties: false description: Em 402, resumo público da situação da assinatura; somente os campos listados são expostos. Ausente nos erros 5xx. properties: stage: type: string enum: - current - soft - hard - suspended - reactivation - inactive - legacy_debt description: Etapa atual da situação de cobrança da assinatura. severity: type: string nullable: true enum: - info - warning - danger - null description: Severidade de exibição do aviso de cobrança. access_allowed: type: boolean description: Indica se a empresa pode acessar os recursos no estado atual. can_reactivate: type: boolean description: Indica se a empresa pode solicitar reativação neste estado. legacy_debt: type: boolean description: Indica existência de pendência histórica de cobrança. days_overdue: type: integer minimum: 0 description: Quantidade de dias de atraso da assinatura. outstanding_amount_cents: type: integer minimum: 0 description: Valor pendente em centavos de real. reactivation_amount_cents: type: integer minimum: 0 description: Valor para reativação em centavos de real; null quando não definido. nullable: true message: type: string nullable: true description: Mensagem pública sobre a cobrança. Até 2000 bytes, sem caracteres de controle. message_before: type: string nullable: true description: Texto público apresentado antes da ação de regularização. Até 2000 bytes, sem caracteres de controle. action_label: type: string nullable: true description: Rótulo da ação de regularização disponível. Até 2000 bytes, sem caracteres de controle. message_after: type: string nullable: true description: Texto público apresentado após a ação de regularização. Até 2000 bytes, sem caracteres de controle. suspends_on: type: string nullable: true pattern: ^\d{4}-\d{2}-\d{2}$ description: Data prevista de suspensão no formato AAAA-MM-DD; null quando não definida. original_due_at: type: string nullable: true pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$ description: Instante do vencimento original com fuso horário; null quando não definido. eligibility: type: object description: Em recusas 422 de PIX Automático, informa a elegibilidade e o motivo público da recusa. required: - available - reason - message additionalProperties: false properties: available: type: boolean description: Indica se o recebível está elegível para PIX Automático. reason: type: string nullable: true description: Código de máquina do motivo que impede a autorização, quando disponível. message: type: string nullable: true description: Explicação em português para a indisponibilidade, quando disponível. not: required: - status properties: status: minimum: 500 description: Faixa de erros de servidor, a partir de HTTP 500, na qual extensões de domínio não são expostas. anyOf: - required: - errors - required: - fiscal_codes - required: - cause - required: - retryable - required: - collection BatchMovementPage: description: Página de movimentações bancárias para análise de conciliação, com links e metadados de navegação. type: object required: - data - links - meta properties: data: description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. type: array items: $ref: '#/components/schemas/BatchPreviewItem' links: $ref: '#/components/schemas/PaginationLinks' meta: $ref: '#/components/schemas/PaginationMeta' OpenFinanceMovementPage: description: Página de movimentações obtidas pela conexão Open Finance da empresa. type: object required: - data - links - meta properties: data: description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. type: array items: $ref: '#/components/schemas/OpenFinanceMovement' links: $ref: '#/components/schemas/PaginationLinks' meta: $ref: '#/components/schemas/PaginationMeta' OpenFinanceMovement: type: object description: Um movimento trazido pelo Open Finance. required: - id - date - description - amount - currency - direction - nature - situation - cashbox - connection - counterparty - payment_method - account - payment_id - reconciliation_id - matched_by - matched_at - imported_at properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid date: type: string format: date description: Data civil do movimento, AAAA-MM-DD. description: type: string description: Descrição como veio do banco. amount: type: string description: 'Valor decimal com duas casas e sinal: negativo é saída.' example: '-100.00' currency: description: Código da moeda da movimentação, como BRL para real brasileiro. type: string example: BRL direction: description: 'Sentido financeiro da movimentação; utilize os valores aceitos no enum. Opções: `inflow`, `outflow`.' type: string enum: - inflow - outflow nature: description: 'Natureza financeira da movimentação informada pela origem bancária. Opções: `operational`, `internal`, `adjustment`.' type: string enum: - operational - internal - adjustment situation: description: 'Situação da movimentação na classificação ou conciliação. Opções: `pending`, `launched`, `linked`, `reconciled`, `discarded`, `adjustment`, `awaiting_bank`.' type: string enum: - pending - launched - linked - reconciled - discarded - adjustment - awaiting_bank cashbox: description: Caixa financeiro vinculado à movimentação ou ao lançamento. type: object nullable: true required: - id - name properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string connection: type: object nullable: true description: Conexão Open Finance de origem; null quando não é mais possível resolvê-la. required: - id - institution_id - institution_name properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid institution_id: description: Identificador da instituição financeira associada ao registro. type: string institution_name: description: Nome da instituição financeira de origem da movimentação. type: string nullable: true counterparty: description: Pessoa ou empresa identificada como contraparte da movimentação. type: object required: - name - document - masked properties: name: description: Nome utilizado para identificar e exibir o registro. type: string nullable: true document: description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. type: string nullable: true masked: type: boolean description: true quando o banco mascarou o documento. payment_method: description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. type: string nullable: true account: type: object nullable: true description: Conta amarrada ao movimento ou quitada pela baixa dele. required: - type - id properties: type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid payment_id: type: string format: uuid nullable: true description: Baixa gerada ou vinculada. reconciliation_id: type: string format: uuid nullable: true description: Conciliação confirmada em que o movimento entrou. matched_by: description: 'Critério utilizado para vincular a movimentação ao lançamento financeiro. Opções: `boleto`, `documento`, `alias`, `data_valor`, `manual`, `None`.' type: string nullable: true enum: - boleto - documento - alias - data_valor - manual - null matched_at: description: Data e hora em que a movimentação foi vinculada ao lançamento do sistema. type: string format: date-time nullable: true imported_at: description: Data e hora em que a movimentação foi importada para a empresa. type: string format: date-time nullable: true BatchPreview: type: object required: - matched - deduced - incomplete - internal properties: matched: $ref: '#/components/schemas/BatchPreviewLane' deduced: $ref: '#/components/schemas/BatchPreviewLane' incomplete: $ref: '#/components/schemas/BatchPreviewLane' internal: $ref: '#/components/schemas/BatchPreviewLane' description: As quatro faixas sempre estão presentes, inclusive vazias. items é sempre lista, count é inteiro e total é string decimal com sinal. BatchPreviewLane: description: Uma faixa da prévia de conciliação, com quantidade, total decimal em reais e seus itens. type: object required: - lane - count - total - items properties: lane: description: 'Grupo de tratamento atribuído ao item na prévia de conciliação. Opções: `matched`, `deduced`, `incomplete`, `internal`.' type: string enum: - matched - deduced - incomplete - internal count: description: Quantidade de itens no grupo ou resultado apresentado. type: integer minimum: 0 total: description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. type: string pattern: ^-?[0-9]+\.[0-9]{2}$ items: description: Registros que compõem o resultado ou lote desta operação. type: array items: $ref: '#/components/schemas/BatchPreviewItem' BatchPreviewItem: description: Movimentação analisada na prévia, com vínculos sugeridos, conflitos e evidências para conferência. type: object required: - movement_id - source - cashbox_id - account_payable_id - account_receivable_id - matched_by - matched_at - date - amount - direction - nature - raw_description - counterparty_name - counterparty_doc_value - counterparty_suggestion - payment_method - category_id - account_standard_launch_id - supplier_id - client_id - matched_account_id - matched_payment_id - intent - conflicts - suggested_alias - suggested_alias_error - receipt properties: movement_id: description: UUID da movimentação bancária usada na análise de conciliação. type: string format: uuid source: description: 'Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. Opções: `ofx`, `open_finance`.' type: string enum: - ofx - open_finance cashbox_id: description: UUID do caixa financeiro vinculado à operação na empresa autenticada. type: string format: uuid nullable: true account_payable_id: description: UUID da conta a pagar vinculada à movimentação ou pagamento. type: string format: uuid nullable: true account_receivable_id: description: UUID da conta a receber vinculada ao cliente e à operação na empresa autenticada. type: string format: uuid nullable: true matched_by: description: 'Critério utilizado para vincular a movimentação ao lançamento financeiro. Opções: `boleto`, `documento`, `alias`, `data_valor`, `manual`.' type: string enum: - boleto - documento - alias - data_valor - manual - null nullable: true matched_at: description: Data e hora em que a movimentação foi vinculada ao lançamento do sistema. type: string nullable: true format: date-time date: type: string format: date description: Data civil do extrato (YYYY-MM-DD), sem conversão de fuso. amount: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor exato com sinal do extrato, sempre string de duas casas. direction: description: 'Sentido financeiro da movimentação; utilize os valores aceitos no enum. Opções: `inflow`, `outflow`.' type: string enum: - inflow - outflow nature: description: 'Natureza financeira da movimentação informada pela origem bancária. Opções: `operational`, `internal`, `adjustment`.' type: string enum: - operational - internal - adjustment raw_description: description: Descrição original recebida no extrato bancário, antes da classificação. type: string counterparty_name: description: Nome da contraparte informado ou identificado na movimentação bancária. type: string nullable: true counterparty_doc_value: description: CPF ou CNPJ da contraparte identificado na movimentação. type: string nullable: true counterparty_suggestion: $ref: '#/components/schemas/BatchCounterpartySuggestion' payment_method: description: 'Forma de pagamento da operação; utilize um dos valores aceitos no enum. Opções: `pix`, `bank_slip`, `transfer`, `check`, `credit`, `debit_account`, `debit`, `money`, `none`.' type: string enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none nullable: true category_id: description: UUID da categoria financeira utilizada para classificar o lançamento. type: string format: uuid nullable: true account_standard_launch_id: description: UUID do lançamento padrão utilizado para classificar a conta financeira. type: string format: uuid nullable: true supplier_id: description: UUID do fornecedor associado ao lançamento financeiro. type: string format: uuid nullable: true client_id: description: UUID do cliente da empresa autenticada associado ao recurso. type: string format: uuid nullable: true matched_account_id: description: UUID da conta financeira encontrada como correspondência. type: string format: uuid nullable: true matched_payment_id: description: UUID do pagamento encontrado como correspondência da movimentação. type: string format: uuid nullable: true intent: type: string enum: - link_existing - pay_existing - create_and_pay - incomplete description: Intenção efetiva da linha. Em caso de conflito, prevalece incomplete mesmo que matched_account_id ou matched_payment_id estejam preenchidos como evidência. conflicts: description: Inconsistências que impedem aplicar a conciliação sem uma decisão do usuário. type: array items: type: string suggested_alias: description: Nome alternativo sugerido para reconhecer futuros documentos semelhantes. type: string nullable: true suggested_alias_error: description: Motivo pelo qual o nome alternativo sugerido não pôde ser utilizado. type: string nullable: true receipt: $ref: '#/components/schemas/BatchDeductionReceipt' BatchDeductionReceipt: description: Evidências que explicam como foi obtida uma sugestão na conciliação. type: object required: - layer - key - explanation - divergences properties: layer: description: Etapa de análise que produziu a sugestão de correspondência. type: string key: description: Chave que identifica o item no conjunto de evidências ou sugestões. type: string explanation: description: Explicação da correspondência sugerida para apoiar a conferência. type: string divergences: description: Diferenças identificadas entre o extrato e os lançamentos do sistema. type: array items: type: string BatchCounterpartySuggestion: type: object nullable: true required: - cpf_cnpj - type - name description: Sugestão opcional para revisão humana, sem criar cliente ou fornecedor. Pode ser null quando há cadastro associado, documento mascarado/inválido ou dados indisponíveis. CPF retorna os campos básicos; CNPJ depende da modalidade contratada e dos dados já disponíveis. A serialização da prévia não faz consulta externa. Contatos e endereço são opcionais. properties: cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `PF`, `PJ`.' type: string enum: - PF - PJ name: description: Nome utilizado para identificar e exibir o registro. type: string nullable: true fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string nullable: true email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: string address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: object properties: zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string nullable: true address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string nullable: true number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string nullable: true city: description: Município do endereço ou da prestação do serviço, conforme o recurso. type: string nullable: true uf: description: Sigla da unidade federativa brasileira do endereço, como MG. type: string nullable: true state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. Identificação no formato UUID. type: string format: uuid nullable: true city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. Identificação no formato UUID. type: string format: uuid nullable: true AddressInput: description: Endereço de cadastro. Município e estado devem ser obtidos nos catálogos da empresa. type: object required: - state_id - city_id - address - number - neighborhood - zipcode properties: state_id: description: Identificador do estado no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer city_id: description: Identificador do município no catálogo de localidades; preserve o tipo textual ou numérico declarado. type: integer address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string country: description: 'Somente endereço do exterior: código ISO de duas letras da lista de /countries. Em cliente do exterior, um país novo fora da lista retorna 422; o já gravado no cliente é aceito. É o país do cliente na NFS-e.' type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true AuthRequest: description: Credenciais de login; após um desafio de segundo fator, envie também sua identificação e o código recebido. type: object required: - email - password properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email example: usuario@empresa.com password: description: Senha do usuário para autenticação. Trate como segredo e não registre em logs. type: string format: password example: sua-senha challenge_id: type: string format: uuid description: Identificador recebido na resposta 202; obrigatório quando code for enviado. code: type: string minLength: 6 maxLength: 6 description: Código do segundo fator; obrigatório quando challenge_id for enviado. Preserve zeros à esquerda. example: '012345' BankAccountInput: description: Dados de conta bancária vinculada à pessoa ou empresa cadastrada. type: object required: - bank_name properties: bank_name: description: Nome da instituição bancária da conta cadastrada. type: string maxLength: 50 account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: string nullable: true agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true pix: description: Chave PIX cadastrada para identificação da conta de recebimento. type: string nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true CancelFiscalRpsRequest: description: Motivo e classificação do cancelamento solicitado ao emissor fiscal. type: object required: - code properties: code: type: string description: 'Motivo do cancelamento: `"1"` ou `"2"`. Outros valores retornam 422.' enum: - '1' - '2' example: '1' Card: type: object description: Dados de um cartão de crédito. Consulte os tipos de `due_day` e `closing_day` no schema e nos exemplos de resposta. properties: id: type: string format: uuid description: UUID do cartão. example: 9c59f325-7b89-4481-bab8-b7fbba510586 name: type: string maxLength: 60 description: Nome do cartão (único no tenant, desconsiderando registros excluídos). example: Cartão Corporativo origin: type: string enum: - manual - open_finance readOnly: true description: 'Origem do cartão: cadastro manual ou vínculo pelo Open Finance.' example: manual last_four: type: string nullable: true maxLength: 4 readOnly: true description: Últimos quatro dígitos informados pelo Open Finance; null quando indisponíveis. Não contém o número completo do cartão. example: null network: type: string nullable: true maxLength: 64 readOnly: true description: Bandeira informada pelo Open Finance; null quando indisponível. example: null due_day: description: Dia de vencimento da fatura (1–31). Pode retornar como string. oneOf: - type: integer - type: string example: 12 closing_day: description: Dia de fechamento da fatura (1–31). Pode retornar como string. oneOf: - type: integer - type: string example: 10 active: type: boolean nullable: true description: Status ativo/inativo. Pode ser null após criação (antes do primeiro update de status). example: true provider: description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. nullable: true allOf: - $ref: '#/components/schemas/CardProvider' created_at: type: string format: date-time description: Data de criação (ISO 8601). example: '2024-06-23T00:10:53.000000Z' total_invoice: type: number nullable: true description: Total da fatura corrente. Null quando não há fatura aberta. example: null required: - id - name - origin - last_four - network - due_day - closing_day - active - provider - created_at - total_invoice CardBillMoveRequest: type: object required: - payment_id - to_card_bill_id - expected_revision - target_expected_revision description: Dados para mover um pagamento entre faturas. Envie as revisões atuais das duas faturas; alteração concorrente retorna 409, sem mover o lançamento. properties: payment_id: type: string format: uuid description: UUID do pagamento a ser movido. Deve existir na tabela `payments`. example: 9c59f4d3-ff83-4e00-9f5b-d73e9f6771b6 to_card_bill_id: type: string format: uuid description: UUID da fatura de destino. Deve existir na tabela `card_bills`. example: 9c59f98a-0602-4f15-b482-002e60c3bbb1 expected_revision: type: integer minimum: 1 description: Versão atual da fatura de origem. example: 1 target_expected_revision: type: integer minimum: 1 description: Versão atual da fatura de destino. example: 1 CardProvider: type: object description: Dados resumidos do fornecedor do cartão. properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid example: 9c551086-44fc-4a50-8b60-a5bdf0d30176 name: description: Nome utilizado para identificar e exibir o registro. type: string example: Fornecedor Exemplo Ltda cpf_cnpj: type: string nullable: true description: CPF (11 dígitos) ou CNPJ (14 caracteres; o CNPJ alfanumérico tem letras) do fornecedor. example: '11222333000181' active: description: Indica se o registro está ativo para uso pela empresa. type: boolean example: true CardStoreRequest: type: object required: - name - due_day - closing_day - provider_id description: 'Payload para criação de cartão de crédito. Regras de validação: - `name`: obrigatório, string, max 60 chars, único no tenant (desconsiderando registros excluídos). - `due_day`: obrigatório, integer, 1–31. - `closing_day`: obrigatório, integer, 1–31. - `provider_id`: obrigatório, UUID existente em `providers` (desconsiderando registros excluídos). ' properties: name: type: string maxLength: 60 description: Nome do cartão (deve ser único no tenant). example: Cartão Corporativo due_day: type: integer minimum: 1 maximum: 31 description: Dia de vencimento da fatura. example: 15 closing_day: type: integer minimum: 1 maximum: 31 description: Dia de fechamento da fatura. example: 10 provider_id: type: string format: uuid description: UUID do fornecedor associado ao cartão. example: 9c551086-44fc-4a50-8b60-a5bdf0d30176 CardUpdateRequest: type: object description: 'Payload para atualização de cartão de crédito. Todos os campos são opcionais. Regras de validação: - `name`: string, max 60 chars, único no tenant excluindo o próprio cartão. - `due_day`: integer, 1–31. - `closing_day`: integer, 1–31. - `provider_id`: UUID válido, existente em `providers` (desconsiderando registros excluídos). ' properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 example: Cartão Atualizado due_day: description: Dia do mês previsto para o vencimento da obrigação financeira. type: integer minimum: 1 maximum: 31 example: 10 closing_day: description: Dia do mês em que ocorre o fechamento da fatura do cartão. type: integer minimum: 1 maximum: 31 example: 5 provider_id: description: UUID do fornecedor ou provedor vinculado ao recurso consultado. type: string format: uuid example: 9c551086-44fc-4a50-8b60-a5bdf0d30176 CashboxStoreRequest: description: Dados para criar um caixa financeiro; amount é o saldo inicial em reais e aceita zero ou valores negativos. type: object required: - name - amount properties: name: type: string description: Nome utilizado para identificar e exibir o registro. example: Caixa Operacional amount: type: number description: Saldo inicial obrigatório e numérico. Aceita zero e valores negativos. example: 10000.0 default: type: boolean description: Define o caixa como padrão do tenant. Opcional. example: false active: type: boolean description: Define o caixa como ativo na criação. Opcional. example: true CashboxTransferRequest: description: Dados da transferência entre caixas da empresa, com data e valor em reais. type: object required: - cashbox_id - amount - date properties: cashbox_id: type: string format: uuid description: UUID do caixa de destino. Deve existir na tabela `cashboxes`. example: 9c3ff8ac-e390-4558-aa7c-e202028f6e79 amount: type: number minimum: 0.01 description: 'Valor a transferir. Deve ser maior que zero (`min:0.01`). Não há verificação de saldo: o caixa de origem pode ficar negativo. ' example: 500.0 date: type: string format: date description: Data da transferência (formato `YYYY-MM-DD`). example: '2024-06-23' ClientStoreRequest: description: Dados cadastrais para criar ou atualizar um cliente; campos fiscais dependem do tipo de pessoa e domicílio. type: object required: - type properties: type: type: string enum: - PF - PJ description: Tipo do cliente (Pessoa Física ou Jurídica). name: type: string maxLength: 80 description: Obrigatório na criação. Não pode começar com =, +, - ou @. fantasy_name: type: string maxLength: 80 nullable: true description: Não pode começar com =, +, - ou @. billing_day: type: integer minimum: 1 maximum: 31 nullable: true description: Opcional. Quando informado, deve ser um dia entre 1 e 31. code: type: string maxLength: 255 nullable: true description: Código do cliente, digitado e opcional. Preserva zeros à esquerda; não exige unicidade. example: '0010' client_since: type: string format: date nullable: true description: Data em que passou a ser cliente active: description: Indica se o registro está ativo para uso pela empresa. type: boolean international: description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. type: boolean nif: type: string maxLength: 40 nullable: true description: Identificação fiscal no país do cliente (NIF). Só para domiciliado no exterior; obrigatório se nao_nif não for informado. nao_nif: type: string enum: - '0' - '1' - '2' nullable: true description: 'Motivo de não haver NIF: 0 não informado na nota de origem, 1 dispensado, 2 o país não exige.' comex_vinculo: description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. Vale para cliente no Brasil ou no exterior e prevalece sobre o da nota e o da recorrência.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true comex_moeda: description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão pela tela; não vai na nota.' type: string pattern: ^[0-9]{3}$ nullable: true description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true cpf: type: string description: 11 dígitos. Obrigatório quando `type=PF` e não internacional. nullable: true cnpj: type: string description: 14 caracteres (o CNPJ alfanumérico tem letras), sem máscara e em maiúsculas. Obrigatório quando `type=PJ` e não internacional. nullable: true emails: description: Endereços de e-mail vinculados ao cadastro e suas classificações. type: array items: $ref: '#/components/schemas/EmailInput' phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: $ref: '#/components/schemas/PhoneInput' addresses: description: Endereços vinculados ao cadastro, com município e estado de referência. type: array items: $ref: '#/components/schemas/AddressInput' contacts: description: Pessoas de contato vinculadas ao cadastro. type: array items: $ref: '#/components/schemas/ContactInput' bankAccounts: description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. type: array items: $ref: '#/components/schemas/BankAccountInput' ContactInput: type: object description: Nome obrigatório; informe e-mail ou telefone, ou ambos. Cargo é opcional e pode ser null. required: - name anyOf: - required: - email properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: false - required: - phone properties: phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string minLength: 1 maxLength: 200 office: description: Informações do escritório contábil vinculado ao cadastro. type: string nullable: true maxLength: 100 email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email nullable: true maxLength: 60 phone: description: Número de telefone do contato, com DDD quando nacional. type: string nullable: true minLength: 10 maxLength: 13 description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 EmailInput: description: Endereço de e-mail e sua classificação no catálogo de tipos de contato. type: object required: - email - email_type_id properties: email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string format: email description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true email_type_id: description: Identificador da classificação do e-mail no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid PaginationLinks: type: object description: Links da paginação Laravel. `prev` é null na primeira página e `next` é null na última. required: - first - last - prev - next properties: first: description: URL da primeira página da consulta paginada. type: string format: uri last: description: URL da última página da consulta paginada. type: string format: uri prev: description: URL da página anterior; null ou vazio quando não há página anterior, conforme o schema. type: string format: uri nullable: true next: description: URL da próxima página; null ou vazio quando não há próxima página, conforme o schema. type: string format: uri nullable: true PaginationMetaLink: type: object description: 'Item de `meta.links`: anterior, cada página, reticências (page null) e próximo.' required: - url - label - page - active properties: url: description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. type: string format: uri nullable: true label: description: Texto de exibição do link de navegação da paginação. type: string page: description: Número da página a consultar ou posicionar no documento, conforme a operação. type: integer nullable: true active: description: Indica se o registro está ativo para uso pela empresa. type: boolean PaginationMeta: type: object description: Metadados da paginação Laravel. `from` e `to` são null quando a página está vazia. required: - current_page - from - last_page - path - per_page - to - total - links properties: current_page: description: Número da página retornada na consulta paginada. type: integer from: description: Posição do primeiro registro retornado no conjunto paginado; null quando vazio. type: integer nullable: true last_page: description: Número da última página disponível para os filtros da consulta. type: integer path: description: URL base da consulta, utilizada para montar os links de paginação. type: string format: uri per_page: description: Quantidade de registros por página na consulta paginada. type: integer to: description: Posição do último registro retornado no conjunto paginado; null quando vazio. type: integer nullable: true total: description: Quantidade total de registros que atendem aos filtros da consulta. type: integer links: description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. type: array items: $ref: '#/components/schemas/PaginationMetaLink' InvoiceAdvanceRequest: type: object required: - date - payment_method - cashbox_id - card_bill_id - value - receipt - expected_revision description: Envie por multipart/form-data. O serviço exige comprovante e revisão, mesmo que o validador legado aceite esses campos ausentes. Idempotency-Key é obrigatório no cabeçalho. O adiantamento admite total da fatura desconhecido; crédito acima do saldo conhecido exige confirm_credit=true. properties: date: type: string format: date description: Data do pagamento antecipado. example: '2024-06-22' payment_method: type: string description: Meio usado para o pagamento. credit e none são rejeitados para a própria fatura. example: pix enum: - pix - bank_slip - transfer - check - debit_account - debit - money cashbox_id: type: string format: uuid description: UUID de um caixa ativo na empresa autenticada. example: ae0f8e19-5ca3-4055-ba94-47cd24229086 card_bill_id: type: string format: uuid description: UUID da fatura pertencente ao cartão informado na URL. example: 9c59f98a-159e-4ca5-94f3-950da8d595cc value: type: number minimum: 0.01 description: Valor do adiantamento (mínimo R$ 0,01). example: 500.0 receipt: type: string format: binary description: Comprovante obrigatório (PDF, JPG, JPEG ou PNG), enviado como arquivo multipart. expected_revision: type: integer minimum: 1 description: Revisão atual da fatura, obtida na consulta. Obrigatória para executar a antecipação. example: 1 confirm_credit: type: boolean default: false description: Confirma o crédito quando value ultrapassa o saldo conhecido da fatura. Sem confirmação, o serviço retorna 422. PhoneInput: description: Número de telefone e sua classificação no catálogo de tipos de contato. type: object required: - phone - phone_type_id properties: phone: type: string description: 10 a 11 dígitos. description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true phone_type_id: description: Identificador da classificação do telefone no catálogo de tipos de contato. Identificação no formato UUID. type: string format: uuid ReportStoreRequest: description: Filtros e formato utilizados para solicitar um relatório financeiro. type: object required: - from - to - type - orientation properties: from: type: string format: date description: 'Data inicial (YYYY-MM-DD). Deve ser igual ou anterior a `to`. Para `type=cash_flow`, deve ser posterior a hoje (`after:today`). ' example: '2024-06-01' to: type: string format: date description: 'Data final (YYYY-MM-DD), igual ou posterior a `from`. Intervalo máximo de 731 dias para cash_flow e recurrence_forecast; também 731 dias para cash_flow_comparison quando filters.include_estimated_recurrences=true. Nos demais casos, 1827 dias. ' example: '2024-06-30' type: type: string description: Tipo de relatório. Valores fora do enum retornam 422. enum: - balance_sheet - cash_flow - cash_flow_realized - cash_flow_comparison - inputs_outputs - payments - account_payables_provisions - account_payables_delinquency - receipts - account_receivables_provisions - account_receivables_delinquency - aging_payables - aging_receivables - cash_position_reconciliation - fiscal_revenue - recurrence_forecast - management_consolidation example: balance_sheet orientation: type: string description: Orientação da página do PDF. enum: - portrait - landscape example: portrait basis: type: string enum: - cash - accrual description: 'Opcional na entrada. O padrão é accrual para provisões, inadimplência, aging_payables, aging_receivables e recurrence_forecast; cash para os demais tipos. balance_sheet, fiscal_revenue e management_consolidation aceitam ambos os regimes; os demais tipos exigem seu regime padrão. ' grouping: type: string enum: - daily - weekly - monthly description: Opcional. Pela diferença entre from e to, o padrão é daily até 15 dias, weekly até 60 e monthly acima de 60. formats: type: array minItems: 1 uniqueItems: true default: - pdf items: type: string enum: - pdf - xlsx description: Formatos a gerar, sem duplicatas. O padrão é apenas pdf. cashbox_id: type: string format: uuid nullable: true description: UUID de caixa existente neste tenant. Pode ser omitido ou null. cost_center_scope: type: string enum: - all - specific - without_center default: all description: specific exige cost_center_id. Com centros de custo desabilitados, somente all é aceito. cost_center_id: type: string format: uuid nullable: true description: Obrigatório em specific; deve existir no tenant e não estar excluído. Nos outros escopos, deve ser omitido ou null. filters: default: [] description: 'Opcional; o padrão é uma lista vazia. management_consolidation exige um objeto com dimension; comparison_from e comparison_to são opcionais, mas exigem um ao outro, com início anterior ao fim e intervalo máximo de 1827 dias. cash_flow e cash_flow_comparison aceitam somente include_estimated_recurrences. aging_payables e aging_receivables aceitam somente category_id e counterparty_id (fornecedor em aging_payables, cliente em aging_receivables), não excluídos. Nos demais tipos, filters precisa estar vazio. Chaves fora do conjunto do tipo retornam 422. ' oneOf: - type: array maxItems: 0 items: {} - type: object additionalProperties: false properties: dimension: description: 'Dimensão utilizada para agrupar os resultados do relatório financeiro. Opções: `customer`, `provider`, `category`, `chart_account`, `cost_center`.' type: string enum: - customer - provider - category - chart_account - cost_center comparison_from: description: Data inicial do período usado como comparação no relatório. type: string format: date comparison_to: description: Data final do período usado como comparação no relatório. type: string format: date include_estimated_recurrences: description: Inclui na projeção as ocorrências estimadas de recorrências ainda não lançadas. type: boolean category_id: description: UUID da categoria financeira utilizada para classificar o lançamento. type: string format: uuid counterparty_id: description: UUID do cadastro identificado como contraparte da movimentação. type: string format: uuid SpreadsheetStoreRequest: type: object required: - from - to - type description: Dados para solicitar a geração de uma planilha. properties: from: type: string format: date description: Data de início do intervalo (YYYY-MM-DD). Obrigatório. example: '2026-05-21' to: type: string format: date description: Data de fim do intervalo (YYYY-MM-DD). Obrigatório. example: '2026-06-21' type: type: string description: Tipo de planilha. Deve ser um valor válido de GenerateType. enum: - account_payable - account_payable_with_card example: account_payable UserStoreRequest: description: Dados de identificação, autenticação e perfil de acesso do usuário na empresa. type: object required: - name - email - associate_type - associate_id - phone - role properties: name: type: string minLength: 3 maxLength: 80 description: Nome do usuário. example: João Silva email: type: string format: email description: E-mail único entre usuários não excluídos. example: joao.silva@empresa.com associate_type: type: string enum: - Employee - Intern - Partner description: 'Tipo do colaborador ao qual o usuário será vinculado. Valores aceitos: `Employee`, `Intern` ou `Partner`. ' example: Employee associate_id: type: string format: uuid description: 'UUID de um colaborador existente. Deve ser único por `associate_type`: cada colaborador pode ter somente um usuário associado.' example: 7a3e1bc2-0d9f-4c7a-b2e8-123456789abc phone: type: string description: Telefone do usuário (apenas string, sem formato específico validado). example: '11987654321' role: type: string description: Nome do perfil de acesso (deve estar cadastrado na empresa). example: Administrador PixMandate: description: Autorização do pagador para uma série de cobranças por PIX Automático. type: object required: - cancellation_pending - confirmation_pending - id - status - status_description - frequency - frequency_description - amount - start_date - end_date - expires_at - payer_name - payer_tax_id - description - qrcode_payload - qrcode_image_base64 - reject_reason - authorized_at - canceled_at - canceled_by - created_at properties: cancellation_pending: description: Indica que o cancelamento foi solicitado e aguarda confirmação do provedor. type: boolean confirmation_pending: description: Indica que a operação ainda aguarda confirmação do provedor ou pagador. type: boolean id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `pending`, `accepted`, `rejected`, `canceled`, `failed`, `expired`.' type: string enum: - pending - accepted - rejected - canceled - failed - expired status_description: description: Descrição legível da situação atual do recurso. type: string frequency: description: 'Periodicidade das cobranças autorizadas no PIX Automático. Opções: `monthly`, `quarterly`, `semiannual`, `annual`.' type: string enum: - monthly - quarterly - semiannual - annual frequency_description: description: Descrição legível da periodicidade das cobranças autorizadas. type: string amount: description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. type: string pattern: ^\d+\.\d{2}$ example: '150.00' start_date: description: Data inicial do período ou da vigência da autorização, em AAAA-MM-DD. type: string format: date end_date: description: Data final do período ou da vigência da autorização, em AAAA-MM-DD. type: string format: date nullable: true expires_at: description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. type: string format: date-time payer_name: description: Nome do pagador identificado no documento. type: string payer_tax_id: type: string description: CPF ou CNPJ mascarado. example: '***.123.456-**' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true qrcode_payload: type: string nullable: true description: Disponível somente enquanto pendente, enviado ao provedor, não expirado e sem pedido de cancelamento. qrcode_image_base64: description: Imagem do QR Code codificada em base64 para apresentação ao pagador. type: string nullable: true reject_reason: description: Motivo da rejeição informado pelo provedor ou pela instituição financeira. type: string nullable: true authorized_at: description: Data e hora em que a autorização foi confirmada pelo pagador. type: string format: date-time nullable: true canceled_at: description: Data e hora em que o cancelamento foi registrado. type: string format: date-time nullable: true canceled_by: description: 'Identificador do responsável pelo cancelamento, quando disponível. Opções: `payer`, `receiver`, `None`.' type: string nullable: true enum: - payer - receiver - null created_at: description: Data e hora em que o registro foi criado. type: string format: date-time nullable: true PixInstruction: description: Instrução individual de cobrança vinculada à autorização de PIX Automático. type: object required: - id - status - status_description - amount - due_date - settled_at - end_to_end_id - reject_reason - applied_at properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `scheduled`, `settled`, `rejected`, `canceled`, `failed`.' type: string enum: - scheduled - settled - rejected - canceled - failed status_description: description: Descrição legível da situação atual do recurso. type: string amount: description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. type: string pattern: ^\d+\.\d{2}$ example: '150.00' due_date: description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. type: string format: date settled_at: description: Data e hora em que a liquidação financeira foi confirmada. type: string format: date-time nullable: true end_to_end_id: description: Identificador fim a fim da transação PIX fornecido pela instituição financeira. type: string nullable: true reject_reason: description: Motivo da rejeição informado pelo provedor ou pela instituição financeira. type: string nullable: true applied_at: description: Data e hora em que a operação foi aplicada aos registros do sistema. type: string format: date-time nullable: true ActivateReceivingRequest: type: object properties: bank: description: Dados da instituição financeira vinculada ao recurso. type: string nullable: true pattern: ^[0-9]{1,3}$ agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string nullable: true maxLength: 10 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true maxLength: 20 description: Conta de repasse opcional quando já cadastrada. Caso qualquer campo seja informado, envie os três campos. Uma conta de repasse existente é preservada. ReceivingInstrumentActivation: description: Resultado da solicitação de habilitação de um meio de recebimento. type: object properties: method: description: 'Meio utilizado na operação; os valores permitidos constam no enum deste schema. Opções: `boleto`, `pix`, `card`.' type: string enum: - boleto - pix - card provider: description: 'Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. Opções: `pjbank`, `transfeera`.' type: string enum: - pjbank - transfeera module: type: boolean description: O módulo faz parte do plano contratado. active: type: boolean description: Recebimento ativado para este instrumento. self_service: type: boolean description: A empresa pode realizar a ativação por esta API. registered: type: boolean description: Existe credencial gravada para o provedor deste instrumento. manual_credentials: type: boolean description: As credenciais foram informadas manualmente, e não geradas pela ativação por esta API. required: - method - provider - module - active - self_service - registered - manual_credentials ReceivingPaymentActivationStatus: description: Situação de habilitação dos meios de recebimento da empresa. type: object properties: transfer_account: description: Conta bancária de destino dos repasses dos recebimentos. type: object properties: bank: description: Dados da instituição financeira vinculada ao recurso. type: string pattern: ^[0-9]{1,3}$ agency: description: Número da agência bancária, preservando zeros e dígito quando informado. type: string maxLength: 10 number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string maxLength: 20 required: - bank - agency - number nullable: true boleto: $ref: '#/components/schemas/ReceivingInstrumentActivation' pix: $ref: '#/components/schemas/ReceivingInstrumentActivation' card: $ref: '#/components/schemas/ReceivingInstrumentActivation' card_pending_documents: type: boolean description: Cartão credenciado sem primeira transação bem-sucedida registrada. automatic_pix_available: type: boolean description: A empresa pode oferecer PIX Automático. link: type: object description: Ativação própria do link de pagamento. O link reutiliza boleto, PIX e cartão, e não tem provedor. properties: module: type: boolean description: O plano contratado inclui o módulo de link de pagamento. active: type: boolean description: A empresa ligou o link de pagamento. required: - module - active company: type: object description: Dados cadastrais da empresa usados no credenciamento. properties: name: description: Nome utilizado para identificar e exibir o registro. type: string nullable: true fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string nullable: true cnpj: description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: string nullable: true email: type: string nullable: true description: Primeiro e-mail cadastrado da empresa. phone: type: string nullable: true description: Primeiro telefone cadastrado da empresa. address: type: string nullable: true description: Endereço da empresa em uma linha; nulo quando não há endereço cadastrado. required: - name - fantasy_name - cnpj - email - phone - address registration_profile: type: object nullable: true description: Perfil informado no credenciamento do provedor; nulo enquanto nenhum dado foi informado. properties: site: description: Endereço do site da empresa apresentado na identidade do link de pagamento. type: string nullable: true ticket_medio: description: Ticket médio, em reais. Guardado como o cliente enviou, número ou texto numérico. oneOf: - type: number - type: string faturamento_mensal: description: Faturamento mensal, em reais. Guardado como o cliente enviou, número ou texto numérico. oneOf: - type: number - type: string enrolled: type: boolean description: A empresa já está credenciada para receber (boleto ou PIX com módulo contratado, ou cartão credenciado quando o plano só tem cartão). commercial_terms: type: object description: Condições comerciais do plano contratado. properties: plan_name: description: Nome do plano contratado pela empresa. type: string nullable: true payment_boleto_fee: type: string nullable: true pattern: ^-?[0-9]+\.[0-9]{2}$ description: Tarifa por boleto. String decimal de 2 casas. payment_pix_fee: type: string nullable: true pattern: ^-?[0-9]+\.[0-9]{2}$ description: Tarifa por PIX. String decimal de 2 casas. payment_settlement_days: type: integer nullable: true description: Prazo de liquidação, em dias. required: - plan_name - payment_boleto_fee - payment_pix_fee - payment_settlement_days required: - transfer_account - boleto - pix - card - card_pending_documents - automatic_pix_available - link - company - registration_profile - enrolled - commercial_terms PaymentLinkConfiguration: description: Preferências de pagamento e identidade visual aplicadas aos links da empresa. type: object properties: available_methods: description: Meios de pagamento disponíveis conforme as habilitações da empresa. type: array items: type: string enum: - boleto - pix - card default_methods: description: Meios de pagamento utilizados por padrão nos novos links. type: array items: type: string enum: - boleto - pix - card preselected_method: description: 'Meio de pagamento selecionado inicialmente na apresentação do link. Opções: `boleto`, `pix`, `card`, `None`.' type: string nullable: true enum: - boleto - pix - card - null merge: type: boolean description: Agrupamento do link. true junta ao link as contas em aberto do mesmo cliente e vencimento. branding: type: object description: Identidade própria da página pública do link. Campo nulo significa não configurado. properties: logo_url: type: string nullable: true description: Endereço da logo; nulo sem logo configurada ou quando o anexo foi excluído. color: description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' type: string nullable: true display_name: description: Nome de exibição da empresa apresentado ao pagador. type: string nullable: true message: description: Mensagem legível que explica o resultado da operação. type: string nullable: true support_email: description: Endereço de e-mail para atendimento ao pagador no link de pagamento. type: string nullable: true support_phone: type: string nullable: true description: Telefone de suporte já formatado. required: - logo_url - color - display_name - message - support_email - support_phone required: - available_methods - default_methods - preselected_method - branding - merge UpdatePaymentLinkConfigurationRequest: type: object properties: merge: type: boolean description: Opcional. Ausente, mantém o agrupamento gravado. default_methods: description: Meios de pagamento utilizados por padrão nos novos links. type: array items: type: string enum: - boleto - pix - card minItems: 1 uniqueItems: true preselected_method: description: 'Meio de pagamento selecionado inicialmente na apresentação do link. Opções: `boleto`, `pix`, `card`.' type: string enum: - boleto - pix - card required: - default_methods - preselected_method description: default_methods contém apenas métodos disponíveis e sem repetição. preselected_method deve pertencer a default_methods. PaymentLinkAccount: description: Resumo do recebível apresentado no contexto de seu link de pagamento. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true due_date: description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. type: string nullable: true format: date-time balance: description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. type: string pattern: ^-?[0-9]+\.[0-9]{2}$ example: '150.00' required: - id - description - due_date - balance AccountPaymentLink: description: Link de pagamento de um recebível, com meios permitidos e situação de liquidação. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid token: description: Token de identificação ou acesso ao recurso. Trate como informação confidencial. type: string pattern: ^[0-9a-f]{48}$ minLength: 48 maxLength: 48 url: description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. type: string format: uri status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `open`, `paid`, `canceled`.' type: string enum: - open - paid - canceled allowed_methods: description: Meios de pagamento que o pagador pode utilizar neste link específico. type: array items: type: string enum: - boleto - pix - card paid_at: description: Data e hora em que o pagamento do recurso foi confirmado. type: string nullable: true format: date-time paid_method: description: 'Meio de pagamento utilizado na liquidação confirmada. Opções: `boleto`, `pix`, `card`, `None`.' type: string nullable: true enum: - boleto - pix - card - null accounts: description: Contas financeiras incluídas na consulta ou operação. type: array items: $ref: '#/components/schemas/PaymentLinkAccount' required: - id - token - url - status - allowed_methods - paid_at - paid_method - accounts AccountPaymentLinkResponse: description: Envelope que contém o link de pagamento vinculado ao recebível. type: object properties: data: $ref: '#/components/schemas/AccountPaymentLink' required: - data AccountPaymentLinkLookupResponse: description: Envelope de consulta do link de pagamento e de sua situação atual. type: object properties: data: description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid token: description: Token de identificação ou acesso ao recurso. Trate como informação confidencial. type: string pattern: ^[0-9a-f]{48}$ minLength: 48 maxLength: 48 url: description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. type: string format: uri status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `open`, `paid`, `canceled`.' type: string enum: - open - paid - canceled allowed_methods: description: Meios de pagamento que o pagador pode utilizar neste link específico. type: array items: type: string enum: - boleto - pix - card paid_at: description: Data e hora em que o pagamento do recurso foi confirmado. type: string nullable: true format: date-time paid_method: description: 'Meio de pagamento utilizado na liquidação confirmada. Opções: `boleto`, `pix`, `card`, `None`.' type: string nullable: true enum: - boleto - pix - card - null accounts: description: Contas financeiras incluídas na consulta ou operação. type: array items: $ref: '#/components/schemas/PaymentLinkAccount' required: - id - token - url - status - allowed_methods - paid_at - paid_method - accounts nullable: true required: - data IntegrationAccount: type: object additionalProperties: false required: - unit_price - payment_method - due_date - cashbox_id - account_standard_launch_id properties: unit_price: type: number description: Valor do recebível em reais. Nas requisições deste atalho, envie um número JSON sem separador de milhar. example: 150 maximum: 99999999.99 payment_method: type: string description: Método de pagamento (enum PaymentMethod). example: pix enum: - pix - bank_slip - transfer - check - credit - debit_account - debit - money - none due_date: type: string format: date description: 'Data de vencimento. Obrigatório para `type=unique`. Deve ser um dia útil (weekday) e ano válido (ValidWeekday + ValidYear). ' example: '2027-03-03' cashbox_id: type: string format: uuid description: UUID da caixa. Sempre obrigatório; deve existir no tenant. account_standard_launch_id: type: string format: uuid description: UUID de uma conta contábil ativa do tipo receivable (obrigatório). category_id: type: string format: uuid nullable: true description: 'UUID da categoria. Obrigatório se o token tiver permissão `categories.view`. ' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true maxLength: 500 observation: description: Observações complementares para acompanhamento interno do registro. type: string nullable: true maxLength: 500 cost_center_id: type: string format: uuid nullable: true description: Centro de custo desta empresa. No modo múltiplos, informe um centro ativo; no modo único, o padrão é aplicado automaticamente. category: description: Categoria financeira vinculada ao lançamento. type: object required: - name additionalProperties: false properties: name: description: Nome utilizado para identificar e exibir o registro. type: string maxLength: 60 taxes: description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. type: array items: type: string format: uuid nbs: description: Identificador da Nomenclatura Brasileira de Serviços no catálogo fiscal; preserve o tipo declarado. Identificação no formato UUID. type: string format: uuid nullable: true nfse_enabled: type: boolean description: No atalho fiscal, o padrão é true; no de cobrança, false. fiscal_config: type: object nullable: true description: Configuração desta emissão, com precedência sobre recorrência, categoria e empresa. Valores nulos herdam a configuração anterior. properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true ctrib_nac: type: string pattern: ^\d{6}$ description: Informe junto de ctrib_mun quando houver correlação municipal. ctrib_mun: type: string pattern: ^\d{3}$ description: Código municipal correlacionado; 000 não é permitido. description: Cria uma conta única de recebimento para o cliente informado. Informe category_id para reutilizar uma categoria ou category para criá-la; não combine os dois. A configuração de centro de custo continua sendo aplicada. IntegrationChargeOptions: description: Modalidade de cobrança e condições de multa, juros e meios permitidos no link. type: object required: - kind additionalProperties: false properties: kind: type: string enum: - boleto - pix - payment_link description: Meio solicitado; precisa estar habilitado na empresa. methods: type: array minItems: 1 uniqueItems: true items: type: string enum: - boleto - pix - card description: Meios permitidos no link. Sem este campo, usa a configuração da empresa. penalty: type: number minimum: 0 description: Multa. Em percentual (type_penalty percentage), de 0 a 100%; em reais com type_penalty fix. type_penalty: type: string enum: - fix - percentage description: Obrigatório quando penalty for informado. tax: type: number minimum: 0 description: Juros. Em percentual AO MÊS (type_tax percentage), de 0 a 30% ao mês; em reais com type_tax fix. type_tax: type: string enum: - fix - percentage description: Obrigatório quando tax for informado. IntegrationInvoiceOptions: type: object description: Dados do serviço e da emissão. A configuração fiscal enviada vale para esta nota; não altera a configuração permanente da empresa ou filial. O atalho emite somente a conta informada, sem agrupamento automático. required: - city_iso - issqn - cst - use_issqn - issqn_tributation - value - retentions - competence properties: comercio_exterior: type: object nullable: true additionalProperties: false description: 'Dados de comércio exterior desta nota (grupo comExt da DPS). Todos opcionais: o que a nota exige é conferido na emissão, que recusa antes do envio com o código oficial (por exemplo, E0330, E0590 ou E0591). Os padrões (modo de prestação, mecanismos, movimentação e MDIC) ficam em fiscal_config.' properties: pais_resultado: description: 'País onde o resultado do serviço se verifica (cPaisResult): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ.' type: string pattern: ^[A-Z]{2}$ nullable: true pais_prestacao: description: 'País da prestação do serviço no exterior (cPaisPrestacao): código ISO de duas letras da lista de /countries. Não aceita BR nem ZZ; para prestação no Brasil, omita.' type: string pattern: ^[A-Z]{2}$ nullable: true moeda: description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' type: string pattern: ^[0-9]{3}$ nullable: true valor: description: 'Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros e 2 decimais, sem zero à esquerda. Acima de 9999999999999.99, envie como texto. O produto não converte câmbio: value continua em reais.' anyOf: - type: string pattern: ^(0|[1-9][0-9]{0,14})(\.[0-9]{1,2})?$ - type: number minimum: 0 maximum: 9999999999999.99 nullable: true vinculo: description: 'Vínculo entre a sua empresa e o cliente (vincPrest): 0 sem vínculo, 1 controlada, 2 controladora, 3 coligada, 4 matriz, 5 filial ou sucursal, 6 outro vínculo. O comex_vinculo do cadastro do cliente, quando existe, prevalece.' type: string enum: - '0' - '1' - '2' - '3' - '4' - '5' - '6' nullable: true n_di: description: Número da declaração de importação (nDI), até 12 caracteres. Exigido com comex_mov_temp_bens 2; proibido com 1. type: string maxLength: 12 nullable: true n_re: description: Número do registro de exportação (nRE), até 12 caracteres. Exigido com comex_mov_temp_bens 3; proibido com 1. type: string maxLength: 12 nullable: true tax: type: string format: uuid description: Alternativa a tax_code. Informe apenas um dos dois. nbs: type: string format: uuid nullable: true description: Alternativa a nbs_code. Informe apenas um dos dois. city_iso: type: string description: Código do município, consultável em /cities. example: '3106200' issqn: type: number minimum: 0 description: Alíquota ISSQN. example: 0 cst: type: integer minimum: 0 maximum: 9 description: Situação tributária do campo legado da emissão; fiscal_config.cst admite a configuração por nota com dois dígitos. example: 0 use_issqn: description: Indica se o cálculo fiscal deve considerar o ISSQN informado. type: boolean example: false issqn_tributation: description: 'Campo legado da tributação do ISSQN. `none` segue a configuração (recorrência, categoria e empresa); os demais valem para esta nota e sobrepõem a categoria e a empresa. Prefira fiscal_config.trib_issqn; os dois com valores diferentes retornam 422. A escolha é fiscal: confirme com o contador. Opções: `none`, `taxable_operation`, `service_export`, `non_incident`, `immunity`.' type: string enum: - none - taxable_operation - service_export - non_incident - immunity example: none value: type: number minimum: 0 description: Valor do serviço. example: 100 retentions: description: Indica se há retenções tributárias a considerar na emissão ou no lançamento. type: boolean competence: type: string format: date description: Data da competência, obrigatória neste atalho no formato AAAA-MM-DD. example: '2026-10-04' subsidiary: type: string format: uuid nullable: true description: Filial emissora da própria empresa. nif: description: Número de identificação fiscal no país da pessoa domiciliada no exterior. type: string nullable: true require_nif: description: Classificação da exigência de identificação fiscal estrangeira utilizada na emissão. type: integer minimum: 0 maximum: 3 pis: description: Retenção de PIS aplicada ao serviço; consulte o tipo numérico e a configuração fiscal da emissão. type: number cofins: description: Retenção de COFINS aplicada ao serviço; consulte a configuração fiscal da emissão. type: number ir: description: Retenção de Imposto de Renda aplicada ao serviço. type: number csll: description: Retenção de CSLL aplicada ao serviço. type: number inss: description: Retenção previdenciária de INSS aplicada ao serviço. type: number others: description: Outras retenções tributárias aplicadas ao serviço. type: number fiscal_config: type: object nullable: true description: Configuração desta emissão, com precedência sobre recorrência, categoria e empresa. Valores nulos herdam a configuração anterior. properties: ctribmun: description: Código de tributação municipal com três posições; o código 000 não é aceito. type: string pattern: ^(?!000$)[0-9]{3}$ nullable: true ctribnac: description: Código de tributação nacional com seis posições, preservando zeros à esquerda. type: string pattern: ^[0-9]{6}$ nullable: true cst: description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. type: string pattern: ^[0-9]{2}$ nullable: true ibscbs_cst: description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. type: string pattern: ^[0-9]{3}$ nullable: true ibscbs_cclasstrib: description: Código de classificação tributária IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_cindop: description: Código do indicador de operação IBS/CBS com seis dígitos. type: string pattern: ^[0-9]{6}$ nullable: true ibscbs_ccredpres: description: Código do crédito presumido IBS/CBS com dois dígitos. type: string pattern: ^[0-9]{2}$ nullable: true ps_onerosa: description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. type: boolean nullable: true adq_exterior: description: Indica se o adquirente está no exterior para fins da classificação fiscal. type: boolean nullable: true trib_issqn: description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação de serviço, 4 não incidência. Nulo herda o nível anterior (nota, recorrência, categoria, empresa). A escolha é fiscal: confirme com o contador.' type: string enum: - '1' - '2' - '3' - '4' nullable: true tp_imunidade: description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. Só com trib_issqn 2; com outra tributação, retorna 422. type: string enum: - '1' - '2' - '3' - '4' - '5' nullable: true comex_md_prestacao: description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2 consumo no Brasil, 3 movimento temporário de pessoas físicas, 4 consumo no exterior.' type: string enum: - '1' - '2' - '3' - '4' nullable: true comex_mec_af_prestador: description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a 08; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 nullable: true comex_mec_af_tomador: description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; 01 é nenhum. type: string enum: - '01' - '02' - '03' - '04' - '05' - '06' - '07' - 08 - 09 - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' nullable: true comex_mov_temp_bens: description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração de importação, 3 vinculada a declaração de exportação.' type: string enum: - '1' - '2' - '3' nullable: true comex_mdic: description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' type: string enum: - '0' - '1' nullable: true tax_code: type: string maxLength: 20 description: Código de tributação do catálogo nacional ou municipal. Deve identificar um único registro; para código ambíguo, use tax com o UUID. nbs_code: type: string maxLength: 20 description: Código NBS exato do catálogo, preservando zeros e formatação. Alternativa ao UUID em nbs. additionalProperties: false oneOf: - required: - tax not: required: - tax_code - required: - tax_code not: required: - tax IntegrationChargeRequest: description: Pedido de cadastro ou reutilização de cliente e recebível para preparar uma cobrança idempotente. type: object required: - client - account - charge properties: idempotency_key: type: string minLength: 8 maxLength: 128 description: Obrigatória aqui ou no cabeçalho Idempotency-Key. Se ambos forem enviados, devem ser iguais. client: oneOf: - type: object required: - id additionalProperties: false properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid - $ref: '#/components/schemas/ClientStoreRequest' description: Informe somente id para reutilizar um cliente ativo, ou os dados de cadastro. Um CPF/CNPJ já cadastrado é reutilizado sem sobrescrever seu nome ou contatos; documentos duplicados exigem o ID explícito. Boleto/PIX exigem endereço nacional válido. account: $ref: '#/components/schemas/IntegrationAccount' charge: $ref: '#/components/schemas/IntegrationChargeOptions' IntegrationInvoiceRequest: description: Pedido de cadastro ou reutilização de cliente e recebível para preparar uma emissão fiscal idempotente. type: object required: - client - invoice oneOf: - required: - account not: required: - account_receivable_id - required: - account_receivable_id not: required: - account properties: idempotency_key: type: string minLength: 8 maxLength: 128 description: Obrigatória aqui ou no cabeçalho Idempotency-Key. Se ambos forem enviados, devem ser iguais. client: oneOf: - type: object required: - id additionalProperties: false properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid - $ref: '#/components/schemas/ClientStoreRequest' description: Informe somente id para reutilizar um cliente ativo, ou os dados de cadastro. Um CPF/CNPJ já cadastrado é reutilizado sem sobrescrever seu nome ou contatos; documentos duplicados exigem o ID explícito. Boleto/PIX exigem endereço nacional válido. account: $ref: '#/components/schemas/IntegrationAccount' account_receivable_id: type: string format: uuid description: Conta existente do mesmo cliente. Quando omitida, account é obrigatório e a conta será criada. invoice: $ref: '#/components/schemas/IntegrationInvoiceOptions' PublicContractMessage: type: object properties: message: type: string description: Mensagem legível que explica o resultado da operação. required: - message description: Confirmação textual da operação pública. PublicContractPageLink: type: object properties: url: type: string nullable: true description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. label: type: string description: Texto de exibição do link de navegação da paginação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. page: type: integer nullable: true description: Número da página a consultar ou posicionar no documento, conforme a operação. required: - url - label - active description: Link individual de navegação de uma consulta paginada. PublicContractPaginationLinks: type: object properties: first: type: string description: URL da primeira página da consulta paginada. last: type: string description: URL da última página da consulta paginada. prev: type: string nullable: true description: URL da página anterior; null ou vazio quando não há página anterior, conforme o schema. next: type: string nullable: true description: URL da próxima página; null ou vazio quando não há próxima página, conforme o schema. required: - first - last - prev - next description: Endereços de navegação entre páginas da consulta. PublicContractPaginationMeta: type: object properties: current_page: type: integer description: Número da página retornada na consulta paginada. from: type: integer nullable: true description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. last_page: type: integer description: Número da última página disponível para os filtros da consulta. links: type: array items: $ref: '#/components/schemas/PublicContractPageLink' description: Links de navegação entre páginas da mesma consulta, preservando seus filtros. path: type: string description: URL base da consulta, utilizada para montar os links de paginação. per_page: type: integer description: Quantidade de registros por página na consulta paginada. to: type: integer nullable: true description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - current_page - from - last_page - links - path - per_page - to - total description: Posição e quantidades da página retornada. PublicContractContactType: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. sistema: type: boolean description: Indica se o tipo de contato é mantido pelo sistema. required: - id - name - description - sistema description: Classificação cadastrada para um canal de contato. PublicContractPhoneTypeRaw: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - name description: Classificação cadastrada para um canal de contato. PublicContractPermission: type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. required: - name - title description: Permissões de acesso agrupadas por domínio da empresa. PublicContractRole: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. name: type: string description: Nome utilizado para identificar e exibir o registro. is_default_admin: type: boolean description: Indica se o usuário é o administrador padrão da empresa. perms: type: array items: $ref: '#/components/schemas/PublicContractPermission' description: Permissões associadas ao perfil de acesso. required: - id - title - name - is_default_admin - perms description: Perfil de acesso e permissões concedidas ao usuário. PublicContractDocumentCategory: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. slug: type: string description: Código textual estável usado para identificar o plano ou configuração. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - name - slug - created_at description: Categoria usada para organizar os documentos cadastrados. PublicContractDocumentProfile: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. document_category_id: type: string format: uuid description: UUID da categoria documental à qual o documento pertence. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: type: boolean description: Indica se o documento ou informação é obrigatório para concluir o cadastro. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - document_category_id - name - description - type - required - created_at description: Tipo documental exigido ou disponível para uma pessoa. PublicContractBillingCopyRecipient: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. type_label: type: string description: Descrição pública da classificação do registro. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. status: type: string enum: - active - inactive description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - email - type - type_label - active - status - created_at description: Destinatário configurado para receber cópias de cobranças. PublicContractWhatsappCatalogTemplate: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. meta_name: type: string description: Nome técnico do modelo de WhatsApp registrado no catálogo. display_name: type: string description: Nome de exibição da empresa apresentado ao pagador. language: type: string description: Idioma do modelo ou documento. body_preview: type: string nullable: true description: Trecho do conteúdo da mensagem para identificação do envio. button_label: type: string nullable: true description: Texto exibido no botão do modelo de mensagem. header_type: type: string description: Tipo de cabeçalho definido para o modelo de mensagem. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. status_description: type: string description: Descrição legível da situação atual do recurso. sendable: type: boolean description: Indica se o modelo atende aos requisitos para envio. variables: type: array items: type: string description: Variáveis disponíveis para preencher o conteúdo do modelo. required: - id - meta_name - display_name - language - body_preview - button_label - header_type - status - status_description - sendable - variables description: Modelo aprovado de WhatsApp disponível no catálogo de mensagens. PublicContractTemplate: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. subject: type: string nullable: true description: Assunto da mensagem enviada ao destinatário. layout: type: string nullable: true description: 'Layout da prévia: charge para cobrança ou communication para comunicado. Obrigatório' attachments: type: array items: type: string nullable: true description: Arquivos anexados ao registro para comprovação ou consulta. content: type: string nullable: true description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. whatsapp_template_id: type: string nullable: true format: uuid description: Identificador do modelo de WhatsApp aprovado para o envio. whatsapp_template: oneOf: - $ref: '#/components/schemas/PublicContractWhatsappCatalogTemplate' - type: string nullable: true enum: - null description: Modelo aprovado de WhatsApp vinculado à configuração. required: - id - name - description - type - subject - layout - attachments - content - active - whatsapp_template_id description: Modelo de mensagem com conteúdo e configuração do canal. PublicContractBackup: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. expired: type: boolean description: O arquivo passou dos 30 dias e foi apagado. O download responde **410**; solicite o documento created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - name - status - expires_at - expired - created_at - updated_at description: Lote de exportação dos dados da empresa. PublicContractAccountingFirmLink: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. accounting_firm_id: type: string format: uuid description: UUID do escritório contábil associado à empresa ou ao acesso concedido. accounting_firm_name: type: string nullable: true description: Nome do escritório contábil vinculado. accounting_firm_active: type: boolean description: Indica se o vínculo com o escritório contábil está ativo. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. tenant_role_id: type: string nullable: true format: uuid description: UUID do perfil de acesso atribuído ao usuário na empresa. accepted_at: type: string nullable: true format: date-time description: Instante em que o aceite foi registrado. revoked_at: type: string nullable: true format: date-time description: Instante em que a autorização ou justificativa foi revogada. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - accounting_firm_id - accounting_firm_name - accounting_firm_active - origin - status - tenant_role_id - accepted_at - revoked_at - created_at description: Vínculo da empresa com um escritório contábil. PublicContractPeriodicValue: type: object properties: date: type: string format: date-time description: Data de referência da operação financeira. value: type: number description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. required: - date - value description: Valor calculado para um período do indicador. PublicContractCashboxFlow: type: object properties: date: type: string format: date-time description: Data de referência da operação financeira. revenue: type: number description: Receitas apuradas no recorte financeiro apresentado. expense: type: number description: Despesas apuradas no período do indicador. profit: type: number description: Resultado financeiro calculado a partir das receitas e despesas. cashbox: type: number description: Caixa financeiro vinculado à movimentação ou ao lançamento. required: - date - revenue - expense - profit - cashbox description: Totais de entradas e saídas do caixa no período. PublicContractInvoiceCard: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. from: type: string format: date-time description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. to: type: string format: date-time description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. total: type: number description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - id - name - from - to - total description: Resumo de fatura usado na consulta do cartão. PublicContractStatsCategory: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. category: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - id - name - type description: Categoria financeira vinculada ao lançamento. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. required: - id - category - active description: Categoria financeira usada no agrupamento dos indicadores. PublicContractAdministrativeDocument: type: object description: Documento administrativo. A descrição é obrigatória na criação e na atualização. properties: id: type: string format: uuid description: UUID do documento. name: type: string description: Nome do documento. description: type: string nullable: true description: Descrição do documento. Obrigatória na criação e na atualização. active: type: boolean description: Indica se o documento está ativo. documentable_type: type: string nullable: true enum: - client - provider - employee - intern - partner description: Tipo da entidade vinculada. Pode ser nulo quando não há vínculo. documentable_id: type: string format: uuid nullable: true description: UUID da entidade vinculada. Pode ser nulo quando não há vínculo. documentable: type: object nullable: true description: Resumo da entidade vinculada. Nulo quando não há vínculo ou a entidade foi excluída. properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid nome: description: Nome informado para identificar a pessoa ou empresa no cadastro. type: string required: - id - nome expires_at: type: string format: date nullable: true description: Validade do documento (`Y-m-d`). Nulo = não expira. expirado: type: boolean description: Verdadeiro quando `expires_at < hoje`. Sem validade nunca expira. created_at: type: string format: date-time description: Data e hora de criação do documento. attachments: type: array description: Lista de anexos do documento. items: $ref: '#/components/schemas/PublicContractAdministrativeAttachment' required: - id - name - description - active - documentable_type - documentable_id - documentable - expires_at - expirado - created_at - attachments x-reused-from: public/docs/openapi.yaml#/components/schemas/AdministrativeDocument PublicContractAdministrativeAttachment: type: object description: Anexo de documento administrativo. properties: id: type: string format: uuid description: UUID do anexo. name: type: string description: Nome do arquivo (sem extensão). ext: type: string description: Extensão do arquivo. mime: type: string description: Tipo MIME do arquivo. document_id: type: string format: uuid description: UUID do documento administrativo ao qual este anexo pertence. created_at: type: string format: date-time description: Data e hora de criação do anexo. required: - id - name - ext - mime - document_id - created_at x-reused-from: public/docs/openapi.yaml#/components/schemas/AdministrativeAttachment PublicContractDocumentBatch: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. from: type: string format: date-time description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. to: type: string format: date-time description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. type: type: string enum: - account_payable - account_payable_with_brand - account_receivable - complete description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. started_at: type: string nullable: true format: date-time description: Timestamp de início do processamento. Null enquanto pendente. finished_at: type: string nullable: true format: date-time description: Timestamp de conclusão do processamento. Null enquanto em andamento. status: type: string enum: - pending - processing - merging - completed - cancelled - failed description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. progress: type: number description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação created_at: type: string format: date-time description: Data e hora em que o registro foi criado. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. expired: type: boolean description: O arquivo passou dos 30 dias e foi apagado. O download responde **410**; solicite o documento required: - id - from - to - type - started_at - finished_at - status - progress - created_at - expires_at - expired description: Lote de documentos gerados para as entidades selecionadas. PublicContractSpreadsheet: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. from: type: string format: date-time description: Início do intervalo selecionado na consulta; o formato e tipo dependem do recurso. to: type: string format: date-time description: Fim do intervalo selecionado na consulta; o formato e tipo dependem do recurso. type: type: string enum: - account_payable - account_payable_with_card description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. started_at: type: string nullable: true format: date-time description: Timestamp de início do processamento. Null enquanto pendente. finished_at: type: string nullable: true format: date-time description: Timestamp de conclusão do processamento. Null enquanto em andamento. status: type: string enum: - pending - processing_documents - processing - completed - cancelled - failed description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. progress: type: number description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação created_at: type: string format: date-time description: Data e hora em que o registro foi criado. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. expired: type: boolean description: O arquivo passou dos 30 dias e foi apagado. O download responde **410**; solicite o documento failure_reason: type: string nullable: true description: Motivo registrado para a falha da operação. required: - id - from - to - type - started_at - finished_at - status - progress - created_at - expires_at - expired - failure_reason description: Planilha solicitada e situação do arquivo produzido. PublicContractAttachment: type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. size: type: integer description: Tamanho do arquivo em bytes. mime: type: string description: Tipo de conteúdo MIME do arquivo, como application/pdf. ext: type: string nullable: true description: Extensão do arquivo disponibilizado para consulta. url: type: string description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - name - type - size - mime - ext - url - created_at nullable: true description: Metadados públicos de um arquivo anexado. PublicContractPersonDocument: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. document_profile_id: type: string format: uuid description: UUID do perfil que define os documentos exigidos para este cadastro. document_profile_name: type: string description: Nome do perfil que define os documentos exigidos para o cadastro. document_profile_description: type: string nullable: true description: Explicação do perfil de documentos associado ao cadastro. attachment: $ref: '#/components/schemas/PublicContractAttachment' description: Arquivo anexado ao registro, conforme o tipo e formato declarados no schema. original_name: type: string nullable: true description: Nome original do arquivo enviado pelo usuário. required: type: boolean description: Indica se o documento ou informação é obrigatório para concluir o cadastro. required: - id - document_profile_id - document_profile_name - document_profile_description - attachment - original_name - required description: Documento associado ao cadastro de uma pessoa. PublicContractRequiredProfile: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. document_category_id: type: string format: uuid description: UUID da categoria documental à qual o documento pertence. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: type: boolean description: Indica se o documento ou informação é obrigatório para concluir o cadastro. required: - id - document_category_id - name - type - required description: Tipo documental exigido ou disponível para uma pessoa. PublicContractLookupName: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name description: Opção de formação ou local de trabalho disponível no cadastro. PublicContractCourseSituation: type: object properties: value: type: string description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. required: - value - description description: Situação acadêmica registrada para o estagiário. PublicContractCostCenter: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. required: - id - name - active description: Centro de custo usado na classificação financeira. PublicContractCostCenterConfiguration: type: object properties: enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. mode: type: string description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. default_cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo utilizado como padrão quando não houver seleção específica. required: - enabled - mode - default_cost_center_id description: Configuração de uso e centro de custo padrão da empresa. PublicContractBenefitSuggestion: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id - name description: Benefício disponível para inclusão no cadastro de funcionário. PublicContractOpenFinanceInstitution: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. nome: type: string description: Nome informado para identificar a pessoa ou empresa no cadastro. operacional: type: boolean description: Indica o enquadramento operacional do registro ou indicador. escopo: type: string description: Âmbito de aplicação da configuração ou avaliação. documentos_aceitos: type: array items: type: string description: Documentos aceitos para a etapa de identificação ou assinatura. logo_url: type: string nullable: true description: URL da imagem de identificação da marca ou instituição. required: - id - nome - operacional - escopo - documentos_aceitos - logo_url description: Instituição financeira disponível para autorização de compartilhamento. PublicContractOpenFinanceAccount: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. external_id: type: string description: Identificador atribuído pelo sistema externo ao registro. source_account_key: type: string nullable: true description: Chave da identidade bancária na fonte de aquisição. banco: type: string nullable: true description: Dados de identificação da instituição bancária relacionada. agencia: type: string nullable: true description: Número da agência bancária sem o número da conta. numero: type: string nullable: true description: Número de identificação informado no cadastro ou documento. moeda: type: string nullable: true description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. ativa: type: boolean description: Indica se a configuração ou autorização está ativa. sincronizada_ate: type: string nullable: true format: date-time description: Data até a qual os dados da conexão foram sincronizados. ultima_sincronizacao: type: string nullable: true format: date-time description: Instante da sincronização mais recente da conexão. ultima_falha: type: string nullable: true format: date-time description: Instante ou resumo da falha mais recente da conexão. ultimo_erro: type: string nullable: true description: Mensagem registrada para o erro mais recente de sincronização. quarentena: type: array items: type: object properties: external_id: type: string description: Identificador atribuído pelo sistema externo ao registro. motivo: type: string description: Motivo ou motivos que explicam a decisão apresentada. required: - external_id - motivo description: Estado de isolamento da conta bancária que requer conferência antes de vincular. required: - id - external_id - source_account_key - banco - agencia - numero - moeda - cashbox_id - ativa - sincronizada_ate - ultima_sincronizacao - ultima_falha - ultimo_erro - quarentena description: Conta bancária identificada na autorização de compartilhamento. PublicContractOpenFinanceConnection: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. instituicao_id: type: string description: Identificador da instituição financeira na fonte bancária. instituicao: type: string nullable: true description: Instituição financeira responsável pela autorização ou conta. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. produtos: type: array items: type: string description: Produtos bancários abrangidos pela conexão ou autorização. inclui_conta: type: boolean description: Indica se a autorização bancária abrange dados da conta. inclui_cartao: type: boolean description: Indica se a autorização bancária abrange dados de cartões. documento_final: type: string nullable: true description: Quatro últimos caracteres do documento do titular da autorização bancária; nulo em conexões antigas sem titular registrado. documento_da_empresa: type: boolean nullable: true description: Indica se o documento identificado pertence à própria empresa. substitui_conexao_id: type: string nullable: true format: uuid description: Identificador da conexão anterior substituída pela autorização atual. pronta_para_consulta: type: boolean description: Indica se a conexão está utilizável e com dados disponíveis. autorizacao_url: type: string nullable: true description: Endereço para o titular autorizar a conexão bancária. autorizacao_expira_em: type: string nullable: true format: date-time description: Instante de expiração da autorização bancária. ultima_verificacao: type: string nullable: true format: date-time description: Instante da última consulta do estado da autorização. contas: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceAccount' description: Contas financeiras incluídas no resumo. required: - id - instituicao_id - instituicao - status - produtos - inclui_conta - inclui_cartao - documento_final - documento_da_empresa - substitui_conexao_id - pronta_para_consulta - autorizacao_url - autorizacao_expira_em - ultima_verificacao description: Autorização bancária, produtos abrangidos e disponibilidade dos dados. PublicContractBank: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. compe_code: type: string nullable: true description: Código COMPE da instituição financeira, preservando zeros à esquerda. ispb: type: string nullable: true description: Identificador do Sistema de Pagamentos Brasileiro da instituição financeira. name: type: string description: Nome utilizado para identificar e exibir o registro. logo_url: type: string nullable: true description: URL da imagem de identificação da marca ou instituição. required: - id - compe_code - ispb - name - logo_url description: Dados cadastrais da instituição bancária. PublicContractCashbox: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. start_amount: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo inicial, string decimal de duas casas. amount: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. default: type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. editable: type: boolean description: Indica se o registro permite alterações na operação atual. bank_id: type: string nullable: true format: uuid description: Identificador da instituição financeira no catálogo de bancos. bank: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. compe_code: type: string nullable: true description: Código COMPE da instituição financeira, preservando zeros à esquerda. ispb: type: string nullable: true description: Identificador do Sistema de Pagamentos Brasileiro da instituição financeira. name: type: string description: Nome utilizado para identificar e exibir o registro. logo_url: type: string nullable: true description: URL da imagem de identificação da marca ou instituição. required: - id - compe_code - ispb - name - logo_url nullable: true description: Dados da instituição financeira vinculada ao recurso. institution_id: type: string nullable: true description: Identificador da instituição financeira associada ao registro. institution: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. logo_url: type: string nullable: true description: URL da imagem de identificação da marca ou instituição. required: - id - name - logo_url nullable: true description: Instituição financeira vinculada ao caixa. `null` quando `institution_id` é `null`. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - name - start_amount - amount - default - active - editable - bank_id - bank - institution_id - institution - created_at - updated_at description: Caixa financeiro e dados da conta bancária associada. PublicContractCardConfiguration: type: object properties: credential: type: string description: Identificação pública da credencial configurada; não contém o segredo de autenticação. sandbox: type: boolean description: Indica se a configuração utiliza o ambiente de homologação. required: - credential - sandbox description: Parâmetros públicos necessários ao fluxo de pagamento com cartão. PublicContractServiceFiscalConfiguration: type: object properties: ctribmun: type: string nullable: true description: Código de tributação municipal com três posições; o código 000 não é aceito. ctribnac: type: string nullable: true description: Código de tributação nacional com seis posições, preservando zeros à esquerda. cst: type: string nullable: true description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. ibscbs_cst: type: string nullable: true description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. ibscbs_cclasstrib: type: string nullable: true description: Código de classificação tributária IBS/CBS com seis dígitos. ibscbs_cindop: type: string nullable: true description: Código do indicador de operação IBS/CBS com seis dígitos. ibscbs_ccredpres: type: string nullable: true description: Código do crédito presumido IBS/CBS com dois dígitos. ps_onerosa: type: boolean nullable: true description: Indica se a prestação de serviço é onerosa para fins da classificação fiscal. adq_exterior: type: boolean nullable: true description: Indica se o adquirente está no exterior para fins da classificação fiscal. trib_issqn: type: string nullable: true description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação' tp_imunidade: type: string nullable: true description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. comex_md_prestacao: type: string nullable: true description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2' comex_mec_af_prestador: type: string nullable: true description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a comex_mec_af_tomador: type: string nullable: true description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; comex_mov_temp_bens: type: string nullable: true description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração' comex_mdic: type: string nullable: true description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' required: - ctribmun - ctribnac - cst - ibscbs_cst - ibscbs_cclasstrib - ibscbs_cindop - ibscbs_ccredpres - ps_onerosa - adq_exterior - trib_issqn - tp_imunidade - comex_md_prestacao - comex_mec_af_prestador - comex_mec_af_tomador - comex_mov_temp_bens - comex_mdic nullable: true description: Exceções fiscais do serviço usadas para resolver a emissão. PublicContractMunicipalCorrelation: type: object properties: ctrib_nac: type: string nullable: true description: Código de tributação nacional usado para localizar a correlação fiscal. ctrib_mun: type: string nullable: true description: Código de tributação municipal usado para localizar a correlação fiscal. descricao: type: string nullable: true description: Descrição pública do registro ou regra consultada. origem: type: string description: Fonte da configuração ou do valor resolvido. pendente: type: boolean description: Itens ou estado que ainda aguardam conclusão do processamento. opcoes: type: array items: type: object properties: ctrib_nac: type: string description: Código de tributação nacional usado para localizar a correlação fiscal. ctrib_mun: type: string description: Código de tributação municipal usado para localizar a correlação fiscal. descricao: type: string nullable: true description: Descrição pública do registro ou regra consultada. required: - ctrib_nac - ctrib_mun - descricao description: Opções disponíveis para a seleção solicitada. motivo: type: string nullable: true description: Motivo ou motivos que explicam a decisão apresentada. required: - ctrib_nac - ctrib_mun - descricao - origem - pendente - opcoes - motivo description: Resolução dos códigos nacionais e municipais da NFS-e. PublicContractResourceTaxCode: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. sub_item: type: string nullable: true description: Subitem da lista de serviços usado na classificação fiscal. required: - id - description - code - sub_item description: Código de serviço usado na classificação e emissão fiscal. PublicContractStandardLaunchSummary: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - id - name - code - type description: Lançamento padrão e classificação financeira associados. PublicContractCategory: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. taxes: type: array items: $ref: '#/components/schemas/PublicContractResourceTaxCode' description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. nbs: type: string nullable: true format: uuid description: Identificador da Nomenclatura Brasileira de Serviços no catálogo fiscal; preserve o tipo declarado. fiscal_config: $ref: '#/components/schemas/PublicContractServiceFiscalConfiguration' description: Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia nfse_correlacao: $ref: '#/components/schemas/PublicContractMunicipalCorrelation' description: Resolução dos códigos nacionais e municipais para a emissão da NFS-e. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. default: type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. nfse_enabled: type: boolean description: Indica se a categoria está habilitada para uso na emissão de NFS-e. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. standard_launches: type: array items: $ref: '#/components/schemas/PublicContractStandardLaunchSummary' description: Lançamentos padrão associados à categoria consultada. required: - id - name - taxes - nbs - fiscal_config - nfse_correlacao - type - active - default - nfse_enabled - created_at - updated_at description: Categoria do plano de contas e suas configurações financeiras e fiscais. PublicContractAlias: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name description: Termo alternativo associado a um lançamento padrão. PublicContractStandardLaunch: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. aliases: type: array items: $ref: '#/components/schemas/PublicContractAlias' description: Nomes alternativos usados para reconhecer este lançamento nas importações e sugestões. categories: type: array items: $ref: '#/components/schemas/PublicContractCategory' description: Categorias financeiras vinculadas ao lançamento padrão. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. required: - id - name - code - type - aliases - categories - created_at - updated_at description: Lançamento padrão e classificação financeira associados. PublicContractStatsRawCategory: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. default: type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. nfse_enabled: type: boolean description: Indica se a categoria está habilitada para uso na emissão de NFS-e. nbs_id: type: string nullable: true format: uuid description: UUID do código da Nomenclatura Brasileira de Serviços no catálogo fiscal. fiscal_config: $ref: '#/components/schemas/PublicContractServiceFiscalConfiguration' description: Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia required: - name description: Categoria financeira usada no agrupamento dos indicadores. PublicContractCategoryValue: type: object properties: category: $ref: '#/components/schemas/PublicContractStatsRawCategory' description: Categoria financeira vinculada ao lançamento. total_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor total pago ou recebido no recorte consultado. total_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor total calculado para o conjunto apresentado. total_pending: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Quantidade ou valor ainda pendente no conjunto apresentado. required: - category - total_paid - total_price - total_pending description: Valor consolidado de uma categoria no período. PublicContractCategoryProfit: type: object properties: category: $ref: '#/components/schemas/PublicContractStatsRawCategory' description: Categoria financeira vinculada ao lançamento. expense: type: number description: Despesas apuradas no período do indicador. revenue: type: number description: Receitas apuradas no recorte financeiro apresentado. profit: type: number description: Resultado financeiro calculado a partir das receitas e despesas. required: - category - expense - revenue - profit description: Receita, despesa e resultado atribuídos à categoria. PublicContractRawTaxCode: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. sub_item: type: string description: Subitem da lista de serviços do catálogo municipal; null quando não informado. nullable: true maxLength: 5 required: - id - code - description description: Código de serviço usado na classificação e emissão fiscal. PublicContractAuxDocument: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. attachment: $ref: '#/components/schemas/PublicContractAdministrativeAttachment' description: Arquivo anexado ao registro, conforme o tipo e formato declarados no schema. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - attachment - created_at description: Documento auxiliar associado à conta financeira. PublicContractTariff: type: object properties: service: type: string description: Serviço ao qual o lançamento de créditos ou consumo se refere. credits: type: integer description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. unit: type: string description: Unidade de medida usada na quantidade do consumo ou indicador. required: - service - credits - version - unit description: Preço em créditos de uma unidade do serviço. PublicContractBillingEmailAllowance: type: object properties: included: type: boolean description: Indica se o serviço ou uso está incluído na contratação. period: type: string description: Período de referência dos dados apresentados. limit: type: integer nullable: true description: Quantidade máxima de registros solicitada nesta consulta. used: type: integer description: Quantidade efetivamente consumida no período. reserved: type: integer description: Créditos ou unidades reservados por operações ainda não concluídas. remaining: type: integer nullable: true description: Saldo da franquia disponível; nulo quando não há limite contratado. overage_unit_credits: type: integer description: Custo em créditos por unidade excedente da franquia. required: - included - period - limit - used - reserved - remaining - overage_unit_credits description: Uso e reservas dos e-mails de cobrança incluídos no plano. PublicContractPremiumCapabilities: type: object properties: module_ids: type: array items: type: string description: Identificadores dos módulos incluídos na configuração de acesso. managed_by_plan: type: boolean description: Indica que a disponibilidade do recurso é controlada pelo plano contratado. document_ai_included: type: boolean description: Indica se a leitura de documentos por inteligência artificial está incluída. assistant_included: type: boolean description: Indica se o assistente está incluído na configuração de consumo. antifraud_included: type: boolean description: Indica se a análise antifraude está incluída na configuração de consumo. scan_mode: type: string enum: - ai - traditional description: Derivado do módulo de leitura de documentos contratado. governance_ai: type: boolean description: Estado efetivo, considerando plano e autorização vigente. chat_ai: type: boolean description: Derivado do módulo de assistente contratado. billing_email_allowance: $ref: '#/components/schemas/PublicContractBillingEmailAllowance' description: Uso e reserva da franquia de e-mails de cobrança no mês. tariffs: type: array items: $ref: '#/components/schemas/PublicContractTariff' description: Tabela das tarifas em créditos por serviço. tariff_version: type: string description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. invitation_seen: type: boolean description: Indica se o usuário já respondeu ao convite de uso do recurso. required: - module_ids - managed_by_plan - document_ai_included - assistant_included - antifraud_included - scan_mode - governance_ai - chat_ai - billing_email_allowance - tariffs - tariff_version - invitation_seen description: Recursos opcionais e condições de uso habilitados para a empresa. PublicContractCnpjSuggestion: type: object properties: cnpj: type: string description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. email: type: string nullable: true description: Endereço de e-mail do contato ou usuário associado ao recurso. phones: type: array items: type: string description: Números de telefone vinculados ao cadastro e suas classificações. address: type: object properties: zipcode: type: string description: Código postal do endereço; no Brasil, CEP com oito dígitos. address: type: string description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. number: type: string description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. complement: type: string description: Complemento do endereço, como sala, bloco ou apartamento. neighborhood: type: string description: Bairro do endereço informado. city: type: string description: Município do endereço ou da prestação do serviço, conforme o recurso. uf: type: string description: Sigla da unidade federativa brasileira do endereço, como MG. city_id: type: string nullable: true description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state_id: type: string nullable: true description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. required: - zipcode - address - number - complement - neighborhood - city - uf - city_id - state_id description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. required: - cnpj - name - cpf_cnpj - type - fantasy_name - email - phones - address nullable: true description: Dados sugeridos para cadastro a partir do documento consultado. PublicContractContractSigner: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. role: type: string description: Nome do perfil de acesso (deve estar cadastrado na empresa). name: type: string description: Nome utilizado para identificar e exibir o registro. document: type: string description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. phone: type: string description: Número de telefone do contato, com DDD quando nacional. signed_at: type: string nullable: true format: date-time description: Instante em que a assinatura foi concluída. verification_recovery_available: type: boolean description: Indica se está disponível o fluxo de recuperação da verificação de acesso. review_status: type: string description: Estado da conferência do documento ou registro. signature_level: type: string nullable: true description: Nível de assinatura aplicado ao documento. signature_trust_set: type: string nullable: true description: Conjunto de garantias exigidas para validar a assinatura. required: - id - role - name - document - email - phone - signed_at - verification_recovery_available - review_status - signature_level - signature_trust_set description: Signatário do contrato e estado de sua assinatura. PublicContractContractPlacement: type: object properties: signer_id: type: string format: uuid description: Identificador do signatário ao qual a posição de assinatura pertence. page: type: integer description: Número da página a consultar ou posicionar no documento, conforme a operação. x: type: number description: Coordenada horizontal da posição da assinatura na página do documento. y: type: number description: Coordenada vertical da posição da assinatura na página do documento. width: type: number description: Largura da área de assinatura na página do documento. height: type: number description: Altura da área de assinatura na página do documento. required: - signer_id - page - x - y - width - height description: Posição de uma assinatura dentro de uma página do documento. PublicContractContractQuote: type: object properties: total_credits: type: integer description: Créditos totais calculados para a cotação ou consumo. incomplete: type: boolean description: Itens sem informações suficientes para concluir a conciliação. breakdown: type: array items: type: object properties: service: type: string description: Serviço ao qual o lançamento de créditos ou consumo se refere. quantity: type: integer description: Quantidade de unidades do serviço ou produto solicitada. unit_credits: type: integer description: Custo em créditos por unidade do serviço. total_credits: type: integer description: Créditos totais calculados para a cotação ou consumo. required: - service - quantity - unit_credits - total_credits description: Composição dos valores que formam a cobrança ou a cotação. required: - total_credits - incomplete - breakdown description: Cotação de créditos e requisitos para enviar o contrato à assinatura. PublicContractContract: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. mode: type: string nullable: true description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. version: type: integer description: Versão do recurso utilizada para identificar alterações concorrentes. contractable_type: type: string nullable: true description: Tipo de pessoa ou entidade vinculada ao contrato; informe junto com contractable_id. contractable_id: type: string nullable: true format: uuid description: UUID da pessoa ou entidade vinculada ao contrato; informe junto com contractable_type. contractable: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. nome: type: string description: Nome informado para identificar a pessoa ou empresa no cadastro. required: - id - nome nullable: true description: Registro de origem ao qual o contrato está vinculado. signers: type: array items: $ref: '#/components/schemas/PublicContractContractSigner' description: Participantes que devem assinar o contrato e seus dados de identificação. signature_level: type: string nullable: true description: Nível de assinatura aplicado ao documento. vigencia: type: object properties: inicio_modo: type: string nullable: true description: Modo usado para definir o limite inicial da previsão. inicio_data: type: string nullable: true format: date description: Data inicial da janela de previsão ou vigência. fim_modo: type: string nullable: true description: Modo usado para definir o limite final da previsão. fim_data: type: string nullable: true format: date description: Data final da janela de previsão ou vigência. required: - inicio_modo - inicio_data - fim_modo - fim_data description: Período de validade da regra ou classificação. invitation_days: type: integer description: Prazo em dias utilizado para a validade dos convites de assinatura. finalized_at: type: string nullable: true format: date-time description: Instante da finalização do documento. artifacts: type: object properties: final_pdf: type: boolean description: Arquivo final produzido após a assinatura. evidence_pdf: type: boolean description: Arquivo PDF com as evidências da assinatura. evidence_package: type: boolean description: Pacote de evidências produzido para comprovar a assinatura. required: - final_pdf - evidence_pdf - evidence_package description: Arquivos produzidos durante a execução ou assinatura do documento. finalization: type: object properties: error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. required: - error description: Estado da finalização do documento assinado. delivery_summary: type: object properties: pending: type: integer description: Itens ou estado que ainda aguardam conclusão do processamento. sent: type: integer description: Quantidade ou estado dos envios já transmitidos ao canal. failed: type: integer description: Quantidade ou indicação de falhas registradas no processamento. required: - pending - sent - failed description: Resumo consolidado das entregas do documento ou mensagem. concluded_at: type: string nullable: true format: date-time description: Instante em que a execução ou o atendimento foi concluído. placements: type: array items: $ref: '#/components/schemas/PublicContractContractPlacement' description: Posições dos campos de assinatura nas páginas do documento. document: type: object properties: sha256: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. size: type: integer description: Tamanho do arquivo em bytes. required: - sha256 - size nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. validator_code: type: string nullable: true description: Código do validador responsável pela regra do catálogo. quote: $ref: '#/components/schemas/PublicContractContractQuote' description: Trecho do documento que fundamenta a informação extraída. capabilities: type: object properties: send: type: boolean description: Indica se o canal ou tipo de contato deve receber os envios configurados. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. required: - send - reason description: Ações disponíveis para a fatura conforme seu estado e as evidências atuais. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - title - mode - status - version - contractable_type - contractable_id - contractable - signers - signature_level - vigencia - invitation_days - finalized_at - artifacts - finalization - delivery_summary - concluded_at - placements - document - validator_code - quote - capabilities - created_at - updated_at description: Contrato, signatários, documentos e estado do processo de assinatura. PublicContractContractSettings: type: object properties: enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. company_signers: type: array items: type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. document: type: string description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. phone: type: string description: Número de telefone do contato, com DDD quando nacional. required: - name - document - email - phone description: Representantes da empresa que participarão da assinatura do contrato. pricing_acknowledged: type: boolean description: Confirma ciência do custo informado antes de solicitar a operação cobrada. capabilities: type: object properties: icp_validation: type: boolean description: Resultado da validação da assinatura com certificado ICP-Brasil. sending: type: boolean description: Estado dos envios que ainda estão em processamento. storage_configured: type: boolean description: Indica se a configuração de armazenamento está disponível. required: - icp_validation - sending - storage_configured description: Ações disponíveis para a fatura conforme seu estado e as evidências atuais. required: - enabled - company_signers - pricing_acknowledged - capabilities description: Configuração de assinatura usada nos contratos da empresa. PublicContractContractReview: type: object properties: review_revision: type: string description: Revisão da análise que está sendo confirmada; evita aplicar decisões sobre dados desatualizados. signer: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. review_status: type: string description: Estado da conferência do documento ou registro. signed: type: boolean description: Indica se o signatário já concluiu sua assinatura. required: - id - name - review_status - signed description: Signatário responsável pela assinatura ou posicionamento. files: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. mime: type: string description: Tipo de conteúdo MIME do arquivo, como application/pdf. size: type: integer description: Tamanho do arquivo em bytes. required: - id - kind - mime - size description: Estado por formato. Pode estar vazio antes do processamento; relatórios PDF legados concluídos history: type: array items: type: object properties: decision: type: string description: Decisão tomada na análise; utilize um dos valores aceitos no enum. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - decision - reason - created_at description: Histórico de ações ou alterações registradas para o recurso. required: - review_revision - signer - files - history description: Resultado da conferência dos arquivos e da decisão de assinatura. PublicContractReport: type: object description: Relatório gerado de forma assíncrona em PDF e/ou XLSX. `files` informa o estado de cada formato. `started_at` e `finished_at` são nulos enquanto a geração não tiver iniciado ou terminado, respectivamente. properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid cashbox_id: type: string format: uuid nullable: true description: Caixa informado na definição do relatório; null quando não informado. cost_center_id: type: string format: uuid nullable: true description: Centro de custo selecionado quando o escopo é specific. from: type: string format: date-time description: Data inicial do período do relatório (ISO 8601 com timezone). to: type: string format: date-time description: Data final do período do relatório (ISO 8601 com timezone). type: type: string description: Tipo do relatório. enum: - balance_sheet - cash_flow - cash_flow_realized - cash_flow_comparison - inputs_outputs - payments - account_payables_provisions - account_payables_delinquency - receipts - account_receivables_provisions - account_receivables_delinquency - aging_payables - aging_receivables - cash_position_reconciliation - fiscal_revenue - recurrence_forecast - management_consolidation status: type: string nullable: true description: Status de geração. Pode ser nulo imediatamente após a criação. enum: - pending - processing - completed - failed - cancelled basis: type: string enum: - cash - accrual description: Regime efetivo usado na execução, incluindo o fallback para relatórios legados. grouping: type: string nullable: true enum: - daily - weekly - monthly description: Agrupamento solicitado; pode ser null em registros legados. formats: type: array items: type: string enum: - pdf - xlsx description: Formatos solicitados; relatórios legados sem lista usam pdf. cost_center_scope: type: string enum: - all - specific - without_center description: Escopo efetivo de centro de custo; o padrão legado é all. filters: oneOf: - type: object properties: dimension: type: string description: Dimensão utilizada para agrupar os resultados do relatório financeiro. comparison_from: type: string format: date description: Data inicial do período usado como comparação no relatório. comparison_to: type: string format: date description: Data final do período usado como comparação no relatório. include_estimated_recurrences: type: boolean description: Inclui na projeção as ocorrências estimadas de recorrências ainda não lançadas. category_id: type: string format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. counterparty_id: type: string format: uuid description: UUID do cadastro identificado como contraparte da movimentação. required: [] - type: array items: type: string maxItems: 0 description: Definition filters keyed by report type; no filters is [] in ReportResource. files: type: array description: Estado por formato. Pode estar vazio antes do processamento; relatórios PDF legados concluídos incluem o arquivo legado. items: type: object required: - format - status - attachment_id - error_message properties: format: description: 'Formato do arquivo ou relatório solicitado; consulte as opções aceitas na operação. Opções: `pdf`, `xlsx`.' type: string enum: - pdf - xlsx status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `pending`, `processing`, `completed`, `failed`.' type: string enum: - pending - processing - completed - failed attachment_id: description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. Identificação no formato UUID. type: string format: uuid nullable: true error_message: description: Mensagem que explica a falha de processamento do recurso. type: string nullable: true started_at: type: string nullable: true description: 'Timestamp started_at persistido e retornado sem cast datetime pelo modelo Report: texto SQL AAAA-MM-DD HH:MM:SS nas leituras de índice/detalhe, ou null enquanto não preenchido. Não é ISO 8601; created_at/expires_at mantêm seus contratos próprios.' pattern: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$ finished_at: type: string nullable: true description: 'Timestamp finished_at persistido e retornado sem cast datetime pelo modelo Report: texto SQL AAAA-MM-DD HH:MM:SS nas leituras de índice/detalhe, ou null enquanto não preenchido. Não é ISO 8601; created_at/expires_at mantêm seus contratos próprios.' pattern: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$ created_at: description: Data e hora em que o registro foi criado. type: string format: date-time expires_at: type: string format: date-time nullable: true description: 'Até quando o arquivo fica disponível para download: 30 dias depois de concluído. Null enquanto não há arquivo pronto.' expired: type: boolean description: O arquivo passou dos 30 dias e foi apagado. O download responde **410**; solicite o documento de novo. required: - id - cashbox_id - cost_center_id - from - to - type - status - basis - grouping - formats - cost_center_scope - filters - files - started_at - finished_at - created_at - expires_at - expired PublicContractNotificationCenterAlert: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. message: type: string description: Mensagem legível que explica o resultado da operação. severity: type: string description: Severidade de exibição do aviso de cobrança. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. count: type: integer description: Quantidade de itens no grupo ou resultado apresentado. action_url: type: string description: Endereço de destino da ação oferecida na notificação. action_label: type: string description: Rótulo da ação de regularização disponível. Até 2000 bytes, sem caracteres de controle. reference_date: type: string nullable: true format: date description: Data adotada como referência para o agrupamento ou cálculo. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. resolved_at: type: string nullable: true format: date-time description: Instante em que o conflito ou pendência foi resolvido. read: type: boolean description: Indica se a notificação já foi marcada como lida. read_at: type: string nullable: true format: date-time description: Instante em que a notificação foi marcada como lida. required: - id - kind - title - message - severity - amount - count - action_url - action_label - reference_date - created_at - resolved_at - read - read_at description: Alerta financeiro ou operacional exibido na central de notificações. PublicContractDashboardSeriesValue: type: object properties: atual: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor do período atual usado na comparação do indicador. series: type: array items: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Séries de valores calculados para o gráfico ou período. required: - atual - series description: Valor de uma série do painel financeiro. PublicContractDelinquencyValue: type: object properties: previsto: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor previsto para o período, incluindo estimativas habilitadas. em_atraso: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Obrigações cujo vencimento já passou sem liquidação completa. quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. percentual: type: number description: Percentual calculado para o indicador apresentado. required: - previsto - em_atraso - quantidade - percentual description: Valores e percentuais da inadimplência no período. PublicContractAgendaValue: type: object properties: valor: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros quantidade: type: integer description: Quantidade de registros ou unidades considerados no indicador. required: - valor - quantidade description: Resumo das obrigações por situação e janela de vencimento. PublicContractDashboardCard: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. nome: type: string description: Nome informado para identificar a pessoa ou empresa no cadastro. saldo_atual: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo atual registrado para o caixa. series: type: array items: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Séries de valores calculados para o gráfico ou período. required: - id - nome - saldo_atual - series description: Indicador financeiro consolidado do painel. PublicContractOnboardingMission: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. estado: type: string enum: - em_breve - nao_se_aplica - concluida - atencao - em_andamento - a_iniciar description: Estado da federação informado para o endereço ou serviço. numerador: type: integer description: Quantidade ou valor que atende ao critério do indicador. denominador: type: integer description: Base total usada no cálculo do indicador. meta: type: integer nullable: true description: Metadados da paginação, incluindo página atual e quantidade de registros. disponivel: type: boolean description: Indica se o recurso ou catálogo está disponível para uso. concluida_em: type: string nullable: true format: date-time description: Instante em que a execução ou o atendimento foi concluído. excecao: type: object properties: justificativa: type: string description: Motivo informado para a ação solicitada, registrado para acompanhamento. usuario: type: string description: Nome registrado do usuário responsável pela ação. em: type: string nullable: true format: date-time description: Data ou instante de referência do resultado apresentado. required: - justificativa - usuario - em nullable: true description: Indica um tratamento de exceção que precisa ser considerado na conferência. required: - id - estado - numerador - denominador - meta - disponivel - concluida_em - excecao description: Missão da jornada de configuração com progresso e condições de conclusão. PublicContractOnboarding: type: object properties: calculado_em: type: string format: date-time description: Instante em que o cálculo apresentado foi produzido. mes_referencia: type: string description: Mês ao qual os valores apresentados se referem. fase_atual: type: integer description: Fase atual da empresa na jornada de configuração. selo: type: string enum: - profissional - manual - organizada - madura description: Classificação resumida da conclusão ou confiança do resultado. xp: type: object properties: atual: type: integer description: Valor do período atual usado na comparação do indicador. maximo: type: integer description: Limite superior disponível para o indicador ou configuração. required: - atual - maximo description: Pontuação acumulada na jornada de configuração. missoes: type: object properties: concluidas: type: integer description: Quantidade de missões ou etapas concluídas. aplicaveis: type: integer description: Quantidade de verificações aplicáveis ao universo analisado. required: - concluidas - aplicaveis description: Missões e respectivos estados na jornada de configuração. proxima: type: string nullable: true description: Próxima missão disponível na jornada, quando houver. fases: type: array items: type: object properties: numero: type: integer description: Número de identificação informado no cadastro ou documento. id: type: string description: Identificador único do registro no recurso consultado. concluida: type: boolean description: Indica se a missão ou etapa já foi concluída. missoes: type: array items: $ref: '#/components/schemas/PublicContractOnboardingMission' description: Missões e respectivos estados na jornada de configuração. required: - numero - id - concluida - missoes description: Fases da jornada com suas missões e progresso. required: - calculado_em - mes_referencia - fase_atual - selo - xp - missoes - proxima - fases description: Fases, missões e progresso da jornada de configuração da empresa. PublicContractGovernanceRun: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. mode: type: string description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. finished_at: type: string nullable: true format: date-time description: Timestamp de conclusão do processamento. Null enquanto em andamento. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. processed: type: integer description: Quantidade de itens já processados na execução. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. failed_count: type: integer description: Quantidade de itens cujo processamento falhou. fallback_count: type: integer description: Quantidade de análises que usaram o motor alternativo. skipped_count: type: integer description: Quantidade de itens não processados por já atenderem à condição ou estarem inelegíveis. required: - id - status - mode - created_at - finished_at - error - processed - total - failed_count - fallback_count - skipped_count description: Execução de avaliação de governança em lote e seus contadores. PublicContractGovernanceAnalysis: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. operation_id: type: string nullable: true format: uuid description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. requested_engine: type: string description: 'Motor de leitura solicitado: traditional, economic ou ai, conforme o enum.' effective_engine: type: string description: Motor que efetivamente realizou a leitura, inclusive quando houve alternativa ao solicitado. fallback_reason: type: string nullable: true description: Motivo pelo qual foi utilizada uma alternativa ao processamento originalmente solicitado. evaluation_id: type: string nullable: true format: uuid description: Identificador da avaliação registrada. required: - status - operation_id - requested_engine - effective_engine - fallback_reason description: Resultado do acionamento de uma análise e motor efetivamente utilizado. PublicContractReconciliationSource: type: object properties: mode: type: string description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. periods: type: array items: type: object properties: source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. date_from: type: string format: date description: Data inicial do período de conciliação, em AAAA-MM-DD. date_to: type: string nullable: true format: date description: Data final do período, igual ou posterior à data inicial, em AAAA-MM-DD. source_account_key: type: string nullable: true description: Chave da identidade bancária na fonte de aquisição. required: - source - date_from - date_to - source_account_key description: Intervalos de vigência da fonte de conciliação. acquisition: type: object properties: last_attempt_at: type: string nullable: true format: date-time description: Instante da tentativa mais recente de aquisição ou processamento. last_success_at: type: string nullable: true format: date-time description: Instante da última aquisição concluída com sucesso. provider_updated_at: type: string nullable: true format: date-time description: Instante de atualização informado pelo provedor. latest_movement_date: type: string nullable: true format: date description: Data do movimento bancário mais recente disponível. declared_from: type: string nullable: true format: date description: Data inicial declarada pelo extrato ou aquisição. declared_to: type: string nullable: true format: date description: Data final declarada pelo extrato ou aquisição. coverage_status: type: string nullable: true description: Estado da comprovação da cobertura do período. pagination_status: type: string nullable: true description: Estado da leitura paginada dos dados da fonte. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. required: - last_attempt_at - last_success_at - provider_updated_at - latest_movement_date - declared_from - declared_to - coverage_status - pagination_status - error nullable: true description: Estado da aquisição de dados usada na conciliação. required: - mode - periods - acquisition description: Fonte de conciliação escolhida e intervalos de vigência do caixa. PublicContractUserTwoFactor: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. user_token_id: type: string nullable: true format: uuid description: Identificador da credencial de conexão utilizada na sincronização. verified_at: type: string nullable: true format: date-time description: Data e hora em que a informação ou conexão foi verificada. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - type - user_token_id - verified_at - created_at - updated_at description: Estado público da configuração do segundo fator de autenticação. PublicContractUserIndexItem: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. associate_type: type: string nullable: true description: 'Identificador do tipo de colaborador associado: `App\Models\Employees\Employee`, `App\Models\Intern\Intern`' associate_id: type: string nullable: true format: uuid description: UUID do colaborador vinculado. name: type: string description: Nome utilizado para identificar e exibir o registro. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. email_verified_at: type: string nullable: true format: date-time description: Data de verificação do e-mail (null se não verificado). ip: type: string nullable: true description: Endereço IP da requisição que originou a ação. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. two_factors: type: array items: $ref: '#/components/schemas/PublicContractUserTwoFactor' description: Métodos de autenticação de dois fatores configurados. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id - associate_type - associate_id - name - email - email_verified_at - ip - phone - two_factors - active - created_at - updated_at - deleted_at description: Dados públicos do usuário e de seu vínculo com a empresa. PublicContractTransferAccount: type: object properties: bank: type: string description: Dados da instituição financeira vinculada ao recurso. number: type: string description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. agency: type: string description: Número da agência bancária, preservando zeros e dígito quando informado. required: - bank - number - agency nullable: true description: Conta bancária de destino configurada para transferências. PublicContractInstrumentActivation: type: object properties: method: type: string description: Meio utilizado na operação; os valores permitidos constam no enum deste schema. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. module: type: boolean description: O módulo faz parte do plano contratado. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. self_service: type: boolean description: A empresa pode realizar a ativação por esta API. registered: type: boolean description: Existe credencial gravada para o provedor deste instrumento. manual_credentials: type: boolean description: As credenciais foram informadas manualmente, e não geradas pela ativação por esta API. required: - method - provider - module - active - self_service - registered - manual_credentials description: Disponibilidade de um instrumento de pagamento para a empresa. PublicContractLinkActivation: type: object properties: module: type: boolean description: O módulo faz parte do plano contratado. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. required: - module - active description: Disponibilidade do link de pagamento conforme as configurações da empresa. PublicContractPaymentActivation: type: object properties: transfer_account: $ref: '#/components/schemas/PublicContractTransferAccount' description: Conta bancária de destino dos repasses dos recebimentos. boleto: $ref: '#/components/schemas/PublicContractInstrumentActivation' description: Configuração ou resultado de habilitação do recebimento por boleto. pix: $ref: '#/components/schemas/PublicContractInstrumentActivation' description: Chave PIX cadastrada para identificação da conta de recebimento. card: $ref: '#/components/schemas/PublicContractInstrumentActivation' description: Dados do cartão vinculado ao recurso financeiro. card_pending_documents: type: boolean description: Cartão credenciado sem primeira transação bem-sucedida registrada. automatic_pix_available: type: boolean description: A empresa pode oferecer PIX Automático. link: $ref: '#/components/schemas/PublicContractLinkActivation' description: URL do PDF do boleto (`linkBoleto` PJBank). company: oneOf: - type: object additionalProperties: type: string nullable: true x-map-reason: PaymentActivationStatus::$company é array; as chaves identificam os campos de apresentação da empresa. - type: array items: type: string maxItems: 0 description: Dados cadastrais da empresa usados no credenciamento. registration_profile: type: object nullable: true additionalProperties: oneOf: - type: string nullable: true - type: number x-map-reason: PaymentActivationStatus::$registration_profile é array anulável; as chaves são os nomes dos campos cadastrais do provedor. description: Perfil informado no credenciamento do provedor; nulo enquanto nenhum dado foi informado. commercial_terms: oneOf: - type: object additionalProperties: oneOf: - type: string nullable: true - type: integer x-map-reason: PaymentActivationStatus::$commercial_terms é array; as chaves identificam as condições comerciais do provedor. - type: array items: type: string maxItems: 0 description: Condições comerciais do plano contratado. enrolled: type: boolean description: A empresa já está credenciada para receber (boleto ou PIX com módulo contratado, ou cartão required: - transfer_account - boleto - pix - card - card_pending_documents - automatic_pix_available - link - company - registration_profile - commercial_terms - enrolled description: Condições de ativação dos meios de pagamento. PublicContractPaymentLinkBranding: type: object properties: logo_url: type: string nullable: true description: URL da imagem de identificação da marca ou instituição. color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' display_name: type: string nullable: true description: Nome de exibição da empresa apresentado ao pagador. message: type: string nullable: true description: Mensagem legível que explica o resultado da operação. support_email: type: string nullable: true description: Endereço de e-mail para atendimento ao pagador no link de pagamento. support_phone: type: string nullable: true description: Telefone de atendimento apresentado ao pagador no link de pagamento. required: - logo_url - color - display_name - message - support_email - support_phone description: Identidade visual e canais de suporte do link de pagamento. PublicContractPaymentLinkConfiguration: type: object properties: available_methods: type: array items: type: string description: Meios de pagamento disponíveis conforme as habilitações da empresa. default_methods: type: array items: type: string description: Meios de pagamento utilizados por padrão nos novos links. preselected_method: type: string nullable: true description: Meio de pagamento selecionado inicialmente na apresentação do link. branding: $ref: '#/components/schemas/PublicContractPaymentLinkBranding' description: Identidade própria da página pública do link. Campo nulo significa não configurado. merge: type: boolean description: Agrupamento do link. true junta ao link as contas em aberto do mesmo cliente e vencimento. required: - available_methods - default_methods - preselected_method - branding - merge description: Configuração pública dos meios e apresentação do link de pagamento. PublicContractSettlementRule: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. receiving_account_key: type: string description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. business_days: type: integer description: Quantidade de dias úteis considerada no prazo de liquidação. timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. counting_event: type: string description: Evento a partir do qual começa a contagem do prazo de liquidação. cutoff: type: string nullable: true description: Horário de corte utilizado na determinação do dia de liquidação. calendar_version: type: string description: Versão do calendário utilizada no cálculo dos dias úteis. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - receiving_account_key - provider - business_days - timezone - counting_event - calendar_version - version description: Regra usada para estimar datas de crédito dos recebimentos. PublicContractSuccessNullEnvelope: type: object properties: success: type: boolean enum: - true description: Indica se a operação foi aceita ou executada com sucesso no envelope legado. data: type: string nullable: true enum: - null description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. message: type: string description: Mensagem legível que explica o resultado da operação. statusCode: type: integer enum: - 200 description: Código HTTP representado no envelope de resposta legado. required: - success - data - message - statusCode description: Envelope legado preservado quando o resultado de sucesso é nulo. PublicContractDataImport: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. original_file_name: type: string description: Nome original do arquivo enviado. file_path: type: string description: Caminho do arquivo da importação. headings: type: array items: type: string nullable: true description: Cabeçalhos identificados na planilha (derivado de `data.headings`; `[]` quando null). view_headings: type: array items: type: string nullable: true description: Cabeçalhos formatados para exibição (derivado de `data.view_headings`; `[]` quando null). has_errors: type: boolean description: Indica se a verificação encontrou erros nas linhas (derivado de `data.has_errors`; `false` has_nulls: type: boolean description: Indica se há campos nulos obrigatórios nas linhas (derivado de `data.has_nulls`; `false` invalid_file: type: boolean description: Indica se o arquivo é inválido/corrompido (derivado de `data.invalid_file`; `false` quando accepted_rows: type: integer nullable: true description: Quantidade de linhas aceitas na verificação da importação. ignored_rows: type: integer nullable: true description: Quantidade de linhas desconsideradas na importação. rejected_rows: type: integer nullable: true description: Quantidade de linhas rejeitadas na verificação da importação. total_rows: type: integer nullable: true description: Quantidade total de linhas do arquivo importado. suggested_rows: type: integer description: Quantidade de linhas que dependem de aceitar um cadastro sugerido. warnings: type: array items: type: string description: Avisos que precisam ser considerados ao conferir o resultado. progress: type: number description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação error_message: type: string nullable: true description: Mensagem que explica a falha de processamento do recurso. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - type - action - status - original_file_name - file_path - headings - view_headings - has_errors - has_nulls - invalid_file - accepted_rows - ignored_rows - rejected_rows - total_rows - suggested_rows - warnings - progress - error_message - created_at - updated_at description: Importação de planilha e estado do processamento dos seus dados. PublicContractImportCellMap: oneOf: - type: object additionalProperties: type: string x-map-reason: BaseImport::onRow armazena cada cabeçalho reconhecido da planilha como chave e converte explicitamente cada valor de célula para string; os nomes das colunas variam conforme o tipo de importação. - type: array items: type: string maxItems: 0 description: Valores de células indexados pelo nome de coluna da planilha. PublicContractImportRowError: type: object properties: attribute: type: string description: Nome do campo da planilha ao qual o erro de importação se refere. errors: type: array items: type: string description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. required: - attribute - errors description: Erros associados a uma linha e a seus campos na importação. PublicContractImportEntitySuggestion: type: object properties: name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. email: type: string nullable: true description: Endereço de e-mail do contato ou usuário associado ao recurso. phones: type: array items: type: string description: Números de telefone vinculados ao cadastro e suas classificações. address: type: object properties: zipcode: type: string nullable: true description: Código postal do endereço; no Brasil, CEP com oito dígitos. address: type: string nullable: true description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. complement: type: string nullable: true description: Complemento do endereço, como sala, bloco ou apartamento. neighborhood: type: string nullable: true description: Bairro do endereço informado. city: type: string nullable: true description: Município do endereço ou da prestação do serviço, conforme o recurso. uf: type: string nullable: true description: Sigla da unidade federativa brasileira do endereço, como MG. city_id: type: string nullable: true description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state_id: type: string nullable: true description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. required: [] description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. entity_type: type: string description: Tipo de cadastro ao qual o recurso está vinculado. apply_on_import: type: boolean description: Indica se a configuração deve ser aplicada também durante a importação. required: - entity_type - apply_on_import - cpf_cnpj - type nullable: true description: Cadastro sugerido para completar uma linha de importação. PublicContractImportInstallmentPreview: type: object properties: total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. installments: type: integer description: Quantidade de parcelas previstas para o lançamento financeiro. values: type: array items: type: string description: Valores organizados por dimensão ou período da consulta. summary: type: string description: Resumo legível da situação ou avaliação do recurso. required: - total - installments - values - summary nullable: true description: Prévia da divisão em parcelas de uma linha financeira importada. PublicContractDataImportRow: type: object properties: row: type: integer nullable: true description: Número da linha na planilha (1-based após cabeçalho). Null se não disponível. data: $ref: '#/components/schemas/PublicContractImportCellMap' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. errors: type: array items: $ref: '#/components/schemas/PublicContractImportRowError' description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. ignored_reason: type: string nullable: true description: Motivo pelo qual o registro não foi considerado no processamento. installment_preview: $ref: '#/components/schemas/PublicContractImportInstallmentPreview' description: Prévia das parcelas que serão criadas a partir da linha importada. entity_suggestion: $ref: '#/components/schemas/PublicContractImportEntitySuggestion' description: Cadastro sugerido a partir dos dados importados, sem criação automática. required: - row - data - errors - ignored_reason - installment_preview - entity_suggestion description: Linha importada, erros, sugestões e prévia de parcelas. PublicContractDataImportError: type: object properties: Linha: type: integer nullable: true description: Número da linha com erro. Atributo: type: string nullable: true description: Nome do atributo/campo com erro. Erros: type: array items: type: string description: Descrições dos erros no atributo. Dados: $ref: '#/components/schemas/PublicContractImportCellMap' description: Dados completos da linha com erro. required: - Linha - Atributo - Erros - Dados description: Erro da importação apresentado com a linha e o campo de origem. PublicContractCardBillStatsItem: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. close_date: type: string format: date description: Data de fechamento da fatura do cartão. due_date: type: string format: date description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. total: type: string nullable: true description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. paid: type: boolean description: Indica se o documento ou lançamento está identificado como pago. conciliated: type: boolean description: Indica se o registro foi conciliado com uma movimentação externa. reference_source: type: string nullable: true description: Origem do valor utilizado como referência da fatura. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. composition_status: type: string description: Situação da conferência dos lançamentos que compõem a fatura. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. required: - id - close_date - due_date - total - paid - conciliated - reference_source - origin - composition_status - revision description: Indicadores de faturas do cartão por período. PublicContractPunctuality: type: object properties: pagas: type: integer description: Contas já pagas no recorte do indicador. em_dia: type: integer description: Obrigações que atendem ao critério de pontualidade do indicador. atrasadas: type: integer description: Quantidade de obrigações vencidas ainda não liquidadas. percentual_em_dia: type: number description: Percentual das liquidações realizadas dentro do prazo. media_dias_de_atraso: type: number nullable: true description: Média de dias de atraso nas liquidações consideradas. required: - pagas - em_dia - atrasadas - percentual_em_dia - media_dias_de_atraso description: Indicadores de atraso e pontualidade das liquidações da parte. PublicContractFrequency: type: object properties: lancamentos_12_meses: type: integer description: Quantidade de lançamentos considerados nos últimos doze meses. media_dias_entre_lancamentos: type: number nullable: true description: Intervalo médio em dias entre os lançamentos observados. ultimo_lancamento: type: string nullable: true format: date description: Data do lançamento mais recente atribuído à parte. required: - lancamentos_12_meses - media_dias_entre_lancamentos - ultimo_lancamento description: Indicadores de frequência e valores dos lançamentos da parte. PublicContractCityRaw: type: object properties: id: type: string description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state_id: type: string description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. iso: type: integer description: Código de referência padronizado do município ou país cadastrado. iso_ddd: type: integer description: Código de discagem regional ou internacional associado ao telefone. status: type: integer description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. population: type: integer description: Universo de registros elegíveis para o processamento. slug: type: string description: Código textual estável usado para identificar o plano ou configuração. lat: type: string description: Latitude do endereço cadastrado. long: type: string description: Longitude do endereço cadastrado. income_per_capita: type: string description: Renda por pessoa informada no cadastro. created_at: type: string nullable: true description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id - state_id - title description: Município cadastrado para endereços e emissão fiscal. PublicContractReconProgress: type: object properties: payments_progress: type: number description: Percentual das baixas do sistema conciliadas ou justificadas. ofx_progress: type: number description: Percentual de conciliação dos lançamentos dos extratos. global_progress: type: number description: Percentual consolidado de progresso da conciliação. required: - payments_progress - ofx_progress - global_progress description: Progresso da conciliação dos lançamentos do extrato e das baixas. PublicContractBankReconciliation: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. cashbox: $ref: '#/components/schemas/PublicContractCashbox' description: Caixa financeiro vinculado à movimentação ou ao lançamento. cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. origin: type: string enum: - manual - open_finance description: Origem do registro ou forma pela qual foi incluído no sistema. alert_level: type: string nullable: true enum: - attention - danger - warning description: Nível de atenção atribuído ao alerta. overdue: type: boolean description: Valor ou quantidade em atraso no recorte apresentado. closed_at: type: string nullable: true format: date-time description: Instante em que o fechamento foi registrado. progress: $ref: '#/components/schemas/PublicContractReconProgress' description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação date: type: string format: date-time description: Data de referência da operação financeira. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - cashbox - cashbox_id - status - origin - alert_level - overdue - closed_at - progress - date - created_at description: Conciliação mensal do caixa com seus indicadores de progresso. PublicContractRawBank: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. compe_code: type: string nullable: true description: Código COMPE da instituição financeira, preservando zeros à esquerda. ispb: type: string description: Identificador do Sistema de Pagamentos Brasileiro da instituição financeira. name: type: string description: Nome utilizado para identificar e exibir o registro. logo: type: string description: 'Limite do arquivo em KiB: max 102400.' created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id - name nullable: true description: Dados cadastrais da instituição bancária. PublicContractGovernanceRuleConfiguration: type: object properties: enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. weight: type: integer description: Peso atribuído à regra na composição da prioridade. parameters: oneOf: - type: object additionalProperties: oneOf: - type: string - type: integer - type: boolean x-map-reason: GovernancePolicyService::configuration normaliza cada parâmetro do catálogo para booleano, inteiro ou string decimal de precisão fixa; os nomes variam conforme o código da regra. - type: array items: type: string maxItems: 0 description: Parâmetros configurados para avaliar a regra. overrides: oneOf: - type: object properties: payable: type: object properties: enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. weight: type: integer description: Peso atribuído à regra na composição da prioridade. parameters: oneOf: - type: object additionalProperties: oneOf: - type: string - type: integer - type: boolean x-map-reason: GovernancePolicyService::configuration normaliza cada parâmetro do catálogo para booleano, inteiro ou string decimal de precisão fixa; os nomes variam conforme o código da regra. - type: array items: type: string maxItems: 0 description: Parâmetros configurados para avaliar a regra. required: [] description: Contas a pagar ou indicadores dessa direção financeira. receivable: type: object properties: enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. weight: type: integer description: Peso atribuído à regra na composição da prioridade. parameters: oneOf: - type: object additionalProperties: oneOf: - type: string - type: integer - type: boolean x-map-reason: GovernancePolicyService::configuration normaliza cada parâmetro do catálogo para booleano, inteiro ou string decimal de precisão fixa; os nomes variam conforme o código da regra. - type: array items: type: string maxItems: 0 description: Parâmetros configurados para avaliar a regra. required: [] description: Contas a receber ou indicadores dessa direção financeira. required: [] - type: array items: type: string maxItems: 0 description: Exceções de configuração específicas para a direção da conta. required: - enabled - weight - parameters - overrides description: Configuração de habilitação, peso e parâmetros de uma regra. PublicContractGovernancePolicy: type: object properties: version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. rules: type: object additionalProperties: $ref: '#/components/schemas/PublicContractGovernanceRuleConfiguration' x-map-reason: Os códigos das regras antifraude (C/P/R seguidos de número) identificam as entradas de configuração; GovernancePolicyService::present incorpora novos códigos do catálogo às revisões armazenadas. description: Regras configuradas para analisar ou processar os registros desta operação. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. actor_id: type: string nullable: true format: uuid description: Identificador do usuário responsável pela ação registrada. note: type: string nullable: true description: Anotação de acompanhamento ou justificativa da decisão registrada. actor_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. required: - version - rules - created_at - actor_id - note - actor_name description: Política de governança versionada com as regras configuradas. PublicContractGovernanceRuleDefinition: type: object properties: code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. category: type: string description: Categoria financeira vinculada ao lançamento. account_types: type: array items: type: string description: Direções de conta às quais a regra de governança se aplica. default_enabled: type: boolean description: Estado padrão de habilitação da regra. default_weight: type: integer description: Peso padrão atribuído à regra. parameters: oneOf: - type: object additionalProperties: type: object properties: label: type: string description: Texto de exibição do link de navegação da paginação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. default: oneOf: - type: string - type: integer - type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. min: oneOf: - type: string - type: integer description: Limite inferior disponível para o indicador ou configuração. max: oneOf: - type: string - type: integer description: Limite superior disponível para o indicador ou configuração. unit: type: string description: Unidade de medida usada na quantidade do consumo ou indicador. required: - label - type - default x-map-reason: AntifraudRuleCatalog::integer/decimal retornam mapas de definições de parâmetros identificados por nome; uma regra pode não ter parâmetros, caso serializado como []. - type: array items: type: string maxItems: 0 description: Parâmetros configurados para avaliar a regra. required_data: type: array items: type: string description: Fontes de dados necessárias para avaliar a regra. exceptions: type: array items: type: string description: Exceções identificadas durante a análise ou processamento. examples: type: object properties: alert: type: string description: Alerta calculado para o registro que exige atenção na conferência. legitimate: type: string description: Indicação registrada sobre legitimidade, quando essa avaliação está disponível. required: - alert - legitimate description: Exemplos de ocorrências encontrados dentro do limite da simulação. source_urls: type: array items: type: string description: Endereços das fontes normativas ou de referência do catálogo. legacy_rule_codes: type: array items: type: string description: Códigos históricos correspondentes à regra atual. required: - code - title - description - category - account_types - default_enabled - default_weight - parameters - required_data - exceptions - examples - source_urls - legacy_rule_codes description: Definição da regra de governança, fontes necessárias e parâmetros aceitos. PublicContractBatchLineResult: type: object properties: movement_id: type: string format: uuid description: UUID da movimentação bancária usada na análise de conciliação. ok: type: boolean description: Indica que o critério consultado foi atendido. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. account_id: type: string nullable: true format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. payment_id: type: string nullable: true format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. intent: type: string nullable: true description: Intenção efetiva da linha. Em caso de conflito, prevalece incomplete mesmo que matched_account_id application_id: type: string nullable: true format: uuid description: Identificador da aplicação de conciliação associada à operação. required: - movement_id - ok - error - account_id - payment_id - intent - application_id description: Resultado individual do processamento de um item de lote. PublicContractPermissionGroup: type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. perms: type: array items: $ref: '#/components/schemas/PublicContractPermission' description: Permissões associadas ao perfil de acesso. required: - name - perms description: Permissões de acesso agrupadas por domínio da empresa. PublicContractNotificationSetting: type: object properties: action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. value: oneOf: - type: boolean - type: integer description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. required: - action - description - value description: Preferência do usuário para receber uma categoria de notificação. PublicContractFiscalGuidanceRule: type: object properties: codigo: type: string description: Código de identificação da regra ou opção no catálogo consultado. regra: type: string description: Regra aplicada ao cálculo ou validação apresentada. aplicacao: type: string description: Regra ou condição de aplicação da classificação fiscal. efeito: type: string description: Efeito da ação sobre os registros financeiros existentes. mensagem: type: string description: Mensagem legível que explica o resultado da operação ou a pendência. nivel: type: string description: Nível de assinatura ou confiança exigido para o documento. rejeita: type: boolean description: Indica que a condição deve provocar rejeição no tratamento da regra. required: - codigo - regra - aplicacao - efeito - mensagem - nivel - rejeita description: Regra normativa do leiaute fiscal consultado. PublicContractFiscalGuidanceField: type: object properties: campo: type: string description: Campo do documento ou configuração ao qual o resultado se refere. sem_correspondencia: type: boolean description: Registros para os quais não foi encontrada contraparte compatível. motivo: type: string nullable: true description: Motivo ou motivos que explicam a decisão apresentada. rejeita_se_errado: type: boolean description: Indica se divergência no campo exige rejeição pelo leiaute consultado. leiaute: type: object properties: caminho: type: string description: Caminho do campo dentro da estrutura do leiaute fiscal. campo: type: string description: Campo do documento ou configuração ao qual o resultado se refere. caminho_completo: type: string description: Caminho completo do campo na hierarquia do documento fiscal. elemento: type: string description: Nome do elemento no leiaute do documento fiscal. tipo: type: string description: Classificação do registro na representação consultada. ocorrencia: type: string description: Ocorrências de governança identificadas no conjunto ou registro analisado. tamanho: type: string description: Tamanho do arquivo ou elemento na unidade indicada pela representação. descricao: type: string description: Descrição pública do registro ou regra consultada. opcional_no_esquema: type: boolean description: Indica que o campo não é obrigatório no leiaute consultado. required: - caminho - campo - caminho_completo - elemento - tipo - ocorrencia - tamanho - descricao - opcional_no_esquema nullable: true description: Versão do leiaute fiscal usada na resolução. regras: type: array items: $ref: '#/components/schemas/PublicContractFiscalGuidanceRule' description: Conjunto de regras disponíveis ou aplicadas na configuração. required: - campo - sem_correspondencia - motivo - rejeita_se_errado - leiaute - regras description: Campo do leiaute fiscal com sua aplicação e referências normativas. PublicContractFiscalTableCode: type: object properties: codigo: type: string description: Código de identificação da regra ou opção no catálogo consultado. descricao: type: string description: Descrição pública do registro ou regra consultada. required: - codigo - descricao description: Código e descrição de uma opção do catálogo fiscal. PublicContractStoredJsonValue: description: 'Valor JSON persistido sem estrutura fixa: texto, número, booleano, nulo, lista ou mapa recursivo. Usado apenas em colunas JSON/mixed documentadas pela fonte.' oneOf: - type: string nullable: true - type: number - type: boolean - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Objetos internos de um valor JSON persistido preservam as chaves originais do documento, conforme json_decode/casts array/object; os valores seguem recursivamente o domínio JSON. PublicContractPublicAuditLog: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. payload: oneOf: - type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: 'PublicLog.payload é um documento de auditoria redigido por RedactedAuditPayload: suas chaves variam por ação; o cast não impõe uma allowlist de campos.' - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Dados contextuais da movimentação. A estrutura varia conforme o tipo de ip: type: string nullable: true description: Endereço IP da requisição que originou a ação. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id description: Registro público de auditoria das ações da integração. PublicContractNotification: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. message: type: string nullable: true description: Mensagem legível que explica o resultado da operação. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. read: type: boolean description: Indica se a notificação já foi marcada como lida. read_at: type: string nullable: true format: date-time description: Instante em que a notificação foi marcada como lida. sent_at: type: string format: date-time description: Instante em que o envio foi realizado. data: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: NotificationResource devolve o array data de DatabaseNotification; escritores e tipos de notificação têm chaves próprias, incluindo description/account_payable/account_receivable. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. required: - id - message - action - read - read_at - sent_at - data description: Notificação do usuário e seu estado de leitura. PublicContractRawPersonDocument: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. document_profile_id: type: string format: uuid description: UUID do perfil que define os documentos exigidos para este cadastro. attachment_id: type: string nullable: true format: uuid description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. original_name: type: string nullable: true description: Nome original do arquivo enviado pelo usuário. pivot: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: HasDocuments.documents é uma relação belongsToMany; quando carregada, a pivot contém a chave documental e a chave do cadastro (employee/intern/provider/client), conforme o tipo do proprietário. description: Dados do vínculo entre os registros relacionados. required: - id - document_profile_id description: Documento associado ao cadastro de uma pessoa. PublicContractCashboxHistoryLog: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. payload: oneOf: - type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: CashboxLog.payload usa AsArrayObject e registra dados distintos por CashboxLogAction (transferência, saldo e baixa); o Resource preserva esse documento. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Dados contextuais da movimentação. A estrutura varia conforme o tipo de receipt_attachment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. mime: type: string description: Tipo de conteúdo MIME do arquivo, como application/pdf. size: type: integer description: Tamanho do arquivo em bytes. ext: type: string description: Extensão do arquivo disponibilizado para consulta. required: - id - name - mime - size - ext nullable: true description: Anexo do comprovante associado à baixa. transfer_date: type: string nullable: true format: date-time description: Data efetiva da transferência ou movimentação do caixa. balance_before: type: string nullable: true description: Saldo do caixa registrado antes do movimento. balance_after: type: string nullable: true description: Saldo do caixa registrado depois do movimento. balance_status: type: string description: Estado da disponibilidade do saldo apresentado. account_exists: type: boolean description: Indica se a conta referenciada ainda existe no sistema. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - action - description - payload - receipt_attachment - transfer_date - balance_before - balance_after - balance_status - created_at description: Movimentação registrada no histórico do caixa e seus saldos. PublicContractRetentions: type: object properties: retentions: type: boolean description: Indica se há retenções tributárias a considerar na emissão ou no lançamento. pis: type: string nullable: true description: Retenção de PIS aplicada ao serviço; consulte o tipo numérico e a configuração fiscal da emissão. cofins: type: string nullable: true description: Retenção de COFINS aplicada ao serviço; consulte a configuração fiscal da emissão. ir: type: string nullable: true description: Retenção de Imposto de Renda aplicada ao serviço. csll: type: string nullable: true description: Retenção de CSLL aplicada ao serviço. inss: type: string nullable: true description: Retenção previdenciária de INSS aplicada ao serviço. others: type: string nullable: true description: Outras retenções tributárias aplicadas ao serviço. issqn: type: string nullable: true description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. subsidiary: type: string nullable: true description: Filial da empresa associada ao documento ou operação fiscal. use_issqn: type: boolean description: Indica se o cálculo fiscal deve considerar o ISSQN informado. cst: type: string description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. required: - retentions - pis - cofins - ir - csll - inss - others - issqn - subsidiary - use_issqn - cst nullable: true description: Retenções tributárias configuradas para a obrigação ou emissão fiscal. PublicContractRecurrenceForeignTrade: type: object properties: moeda: type: string nullable: true description: 'Moeda (tpMoeda): código numérico de 3 dígitos da tabela de moedas do Banco Central.' valor: type: string nullable: true description: Valor do serviço na moeda estrangeira (vServMoeda), até 15 dígitos inteiros valor_referencia: type: string nullable: true description: Valor da conta em reais a que o valor na moeda estrangeira corresponde. A nota pais_resultado: type: string nullable: true description: 'País onde o resultado do serviço se verifica (cPaisResult): código ISO de duas' pais_prestacao: type: string nullable: true description: 'País da prestação do serviço no exterior (cPaisPrestacao): código ISO de duas' vinculo: type: string nullable: true description: 'Vínculo entre a sua empresa e o cliente (vincPrest): 0 sem vínculo, 1 controlada,' required: - moeda - valor - valor_referencia - pais_resultado - pais_prestacao - vinculo nullable: true description: Dados de comércio exterior específicos da recorrência. PublicContractRawRecurrence: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. recurrenceFor: type: string description: Lado da recorrência (`account_payable` ou `account_receivable`). type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. installments: type: integer description: Quantidade de parcelas previstas para o lançamento financeiro. due_day: oneOf: - type: string nullable: true - type: integer description: Dia do mês da recorrência. Nas consultas, é devolvido como texto. A resposta imediata à criação ou atualização também pode devolver um inteiro. Nulo indica ausência. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. limit_date: type: string nullable: true format: date-time description: Data limite para gerar ou selecionar os lançamentos abrangidos pela operação. active: type: integer description: Indica se o registro está ativo para uso pela empresa. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). unit_price: type: number description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. sequence: type: integer description: Posição do item dentro da sequência de parcelas ou lançamentos. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. pix_mandate_id: type: string nullable: true format: uuid description: UUID da autorização de PIX Automático vinculada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. card_id: type: string nullable: true format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. fiscal_config: $ref: '#/components/schemas/PublicContractServiceFiscalConfiguration' description: Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia comercio_exterior: $ref: '#/components/schemas/PublicContractRecurrenceForeignTrade' description: Dados de comércio exterior das notas emitidas automaticamente por esta recorrência created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. serviceable_type: type: string description: Classe da entidade de serviço associada ao registro; null quando não há vínculo. nullable: true serviceable_id: type: string description: UUID da entidade de serviço associada ao registro; null quando não há vínculo. format: uuid nullable: true required: - id description: Recorrência financeira e parâmetros usados para gerar as contas. PublicContractRecurrenceIndex: type: object properties: cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrenceFor: type: string description: Lado da recorrência (`account_payable` ou `account_receivable`). type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. installments: type: integer description: Quantidade de parcelas previstas para o lançamento financeiro. due_day: type: integer nullable: true description: Dia do mês previsto para o vencimento da obrigação financeira. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. limit_date: type: string nullable: true format: date-time description: Data limite para gerar ou selecionar os lançamentos abrangidos pela operação. active: type: integer description: Indica se o registro está ativo para uso pela empresa. unit_price: type: number description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. sequence: type: integer description: Posição do item dentro da sequência de parcelas ou lançamentos. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. accounts_count: type: integer description: Quantidade de contas financeiras no recorte informado. open_accounts_count: type: integer description: Quantidade de contas ainda abertas no recorte. required: - cost_center_id - id - recurrenceFor - type - description - installments - due_day - due_date - limit_date - active - unit_price - sequence - created_at - accounts_count - open_accounts_count description: Recorrência financeira e parâmetros usados para gerar as contas. PublicContractRecurrenceToGroup: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. unit_price: type: number description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. due_day: type: integer nullable: true description: Dia do mês previsto para o vencimento da obrigação financeira. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. required: - id - description - unit_price - due_day - type - charge_group_id - workflow_id description: Recorrência elegível para compor o agrupamento de cobranças. PublicContractWorkflowSummary: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. linked_count: type: integer description: Quantidade de contas e recorrências ativas vinculadas à régua. needs_rps: type: boolean description: A régua envia e-mail que depende de RPS emitido. required: - id - name - description - active - status - created_at - linked_count - needs_rps description: Resumo do fluxo de cobrança, disponibilidade e quantidade de vínculos. PublicContractWorkflowStep: type: object properties: group: type: string description: Grupo de conciliação ao qual o registro pertence, quando existente. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. branches: oneOf: - type: string nullable: true enum: - null - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' - type: object additionalProperties: type: array items: $ref: '#/components/schemas/PublicContractWorkflowStep' x-map-reason: WorkflowStepData::setBranches associa ramificações condicionais identificadas por nome a sequências expandidas recursivamente; os nomes vêm do tipo de passo. description: Ramificações do fluxo, indexadas pelo nome da saída quando o formato usa mapa. sequence: type: array items: $ref: '#/components/schemas/PublicContractWorkflowStep' description: Posição do item dentro da sequência de parcelas ou lançamentos. index: type: integer description: Posição do passo dentro da sequência do fluxo. properties: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: WorkflowStepData.properties contém a configuração do tipo de passo (gatilho, atraso, condição ou canal); WorkflowService preserva as chaves gravadas para aquele tipo. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Informações estruturadas complementares associadas ao recurso. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. id: type: string nullable: true format: uuid description: Identificador único do registro no recurso consultado. template_name: type: string nullable: true description: Nome do modelo de mensagem associado ao passo do fluxo. required: - group - type - branches - sequence - index - properties - active - id - template_name description: Passo do fluxo, suas ramificações e configuração de execução. PublicContractWorkflow: type: object properties: properties: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. linked_count: type: integer description: Quantidade de contas e recorrências ativas vinculadas à régua. required: - id - name - description - active - status - created_at - linked_count description: Informações estruturadas complementares associadas ao recurso. sequence: type: array items: $ref: '#/components/schemas/PublicContractWorkflowStep' description: Posição do item dentro da sequência de parcelas ou lançamentos. linked_account: type: array items: $ref: '#/components/schemas/PublicContractRawAccountReceivable' description: Contas a receber associadas ao fluxo de cobrança. required: - properties - sequence - linked_account description: Fluxo de cobrança com suas propriedades, sequência e contas vinculadas. PublicContractRawAccountReceivable: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. serviceable_type: type: string description: Classe da entidade de serviço associada ao registro; null quando não há vínculo. nullable: true serviceable_id: type: string description: UUID da entidade de serviço associada ao registro; null quando não há vínculo. format: uuid nullable: true required: - id description: Conta a receber com os dados financeiros e vínculos serializados para esta consulta. PublicContractRawPayment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. value_paid: type: number description: Valor pago na liquidação da conta, em reais. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. penalty: type: number nullable: true description: Multa aplicada à obrigação financeira; a modalidade percentual ou fixa depende da operação. interest: type: number nullable: true description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. charges: type: number nullable: true description: Encargos adicionais incidentes sobre o pagamento, em reais. expedient: type: number nullable: true description: Despesa de expediente incorporada ao pagamento, em reais. iof: type: number nullable: true description: Imposto sobre Operações Financeiras incorporado ao pagamento, em reais. insurance: type: number nullable: true description: Valor de seguro incorporado ao pagamento, em reais. agreement: type: number nullable: true description: Valor de convênio incorporado ao pagamento, em reais. discount_granted: type: number nullable: true description: Desconto concedido na liquidação da conta, em reais. discount_obtained: type: number nullable: true description: Desconto obtido na liquidação da conta, em reais. date: type: string format: date-time description: Data de referência da operação financeira. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. card_id: type: string nullable: true format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. gateway_fee: type: number nullable: true description: Tarifa do processador de pagamento incidente sobre a operação, em reais. invoice_attachment_id: type: string nullable: true format: uuid description: UUID do anexo da nota fiscal associado ao lançamento. receipt_attachment_id: type: string nullable: true format: uuid description: UUID do anexo de comprovante associado ao pagamento. fed_retention: type: number nullable: true description: Valor das retenções federais no pagamento, em reais. iss_retention: type: number nullable: true description: Valor do ISS retido no pagamento, em reais. pivot: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. account_payable_id: type: string format: uuid description: UUID da conta a pagar vinculada à movimentação ou pagamento. account_receivable_id: type: string format: uuid description: UUID da conta a receber vinculada ao cliente e à operação na empresa autenticada. invoice_id: type: string nullable: true format: uuid description: Identificador do documento de cobrança ou nota vinculada. required: [] description: Dados do vínculo entre os registros relacionados. required: - id description: Baixa financeira e suas relações de conciliação, comprovantes e meios de pagamento. PublicContractRawCard: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. due_day: type: integer description: Dia do mês previsto para o vencimento da obrigação financeira. closing_day: type: integer description: Dia do mês em que ocorre o fechamento da fatura do cartão. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. provider_id: type: string nullable: true format: uuid description: UUID do fornecedor ou provedor vinculado ao recurso consultado. origin: type: string description: Origem persistida do cartão; cartões cadastrados manualmente usam manual. maxLength: 24 last_four: type: string description: Quatro últimos dígitos do cartão, quando informados pela integração. nullable: true maxLength: 4 network: type: string description: Bandeira do cartão, quando informada pela integração. nullable: true maxLength: 64 required: - id description: Cartão cadastrado com datas de fechamento e vencimento. PublicContractRawStandardLaunch: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. requires_cnpj: type: boolean description: Indica se a classificação exige informar o CNPJ no lançamento. required: - id description: Lançamento padrão e classificação financeira associados. PublicContractRawProvider: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. name: type: string description: Nome utilizado para identificar e exibir o registro. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. ie: type: string nullable: true description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. im: type: string nullable: true description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. international: type: boolean description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. provider_since: type: string nullable: true format: date description: Data desde a qual a empresa é fornecedora, em AAAA-MM-DD, conforme cast provider_since=date:Y-m-d do modelo Provider; sem hora ou fuso. Nulabilidade e condição de presença seguem o schema. nif: type: string nullable: true description: Número de identificação fiscal no país da pessoa domiciliada no exterior. nao_nif: type: string nullable: true description: Motivo de ausência do NIF; use um dos códigos admitidos no enum ou intervalo declarado. emails: type: array items: $ref: '#/components/schemas/PublicContractRawEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractRawPhone' description: Números de telefone vinculados ao cadastro e suas classificações. required: - id description: Fornecedor e dados cadastrais e de contato associados. PublicContractRawOfxLink: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. ofx_id: type: string format: uuid description: Identificador do extrato OFX ao qual o registro pertence. justification: type: string nullable: true description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. ofx_linkable_type: type: string description: Tipo da entidade no lado do extrato do vínculo OFX. ofx_linkable_id: type: string format: uuid description: Identificador da transação ou grupo no lado do extrato. payment_linkable_type: type: string description: Tipo da entidade no lado dos pagamentos do vínculo OFX. payment_linkable_id: type: string format: uuid description: Identificador do pagamento ou grupo no lado do sistema. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. ofx: oneOf: - $ref: '#/components/schemas/PublicContractRawOfx' - type: string nullable: true enum: - null description: Extrato OFX associado ao vínculo de conciliação. required: - id description: Vínculo de conciliação entre uma entidade do extrato e uma entidade do sistema. PublicContractReconciliationJustification: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. target_type: type: string description: Tipo do registro ao qual a justificativa ou ação se aplica. payment_id: type: string nullable: true format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. bank_movement_id: type: string nullable: true format: uuid description: Identificador do movimento bancário relacionado. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. user_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. justified_at: type: string nullable: true format: date-time description: Instante em que a justificativa foi registrada. revoked_at: type: string nullable: true format: date-time description: Instante em que a autorização ou justificativa foi revogada. revoked_by: type: string nullable: true format: uuid description: Identificador do usuário que registrou a revogação. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id description: Justificativa registrada para tratar um item sem contraparte de conciliação. PublicContractRawOfxGroupItem: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. ofx_group_id: type: string format: uuid description: Identificador do grupo de conciliação OFX. groupable_id: type: string format: uuid description: Identificador do pagamento ou transação que integra o grupo. groupable_type: type: string description: Tipo do registro que integra o grupo de conciliação. group: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxGroup' - type: string nullable: true enum: - null description: Grupo de conciliação ao qual o registro pertence, quando existente. groupable: oneOf: - $ref: '#/components/schemas/PublicContractRawPayment' - $ref: '#/components/schemas/PublicContractRawOfxTransaction' description: Pagamento ou transação OFX que integra o grupo; pode ser nulo após exclusão. required: - id description: Item que associa um pagamento ou transação bancária a um grupo. PublicContractPayment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. value_paid: type: number description: Valor pago na liquidação da conta, em reais. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. penalty: type: number nullable: true description: Multa aplicada à obrigação financeira; a modalidade percentual ou fixa depende da operação. interest: type: number nullable: true description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. charges: type: number nullable: true description: Encargos adicionais incidentes sobre o pagamento, em reais. expedient: type: number nullable: true description: Despesa de expediente incorporada ao pagamento, em reais. iof: type: number nullable: true description: Imposto sobre Operações Financeiras incorporado ao pagamento, em reais. insurance: type: number nullable: true description: Valor de seguro incorporado ao pagamento, em reais. agreement: type: number nullable: true description: Valor de convênio incorporado ao pagamento, em reais. discount_granted: type: number nullable: true description: Desconto concedido na liquidação da conta, em reais. discount_obtained: type: number nullable: true description: Desconto obtido na liquidação da conta, em reais. date: type: string format: date-time description: Data de referência da operação financeira. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. card_id: type: string nullable: true format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. gateway_fee: type: number nullable: true description: Tarifa do processador de pagamento incidente sobre a operação, em reais. invoice_attachment_id: type: string nullable: true format: uuid description: UUID do anexo da nota fiscal associado ao lançamento. receipt_attachment_id: type: string nullable: true format: uuid description: UUID do anexo de comprovante associado ao pagamento. fed_retention: type: number nullable: true description: Valor das retenções federais no pagamento, em reais. iss_retention: type: number nullable: true description: Valor do ISS retido no pagamento, em reais. pivot: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. account_payable_id: type: string format: uuid description: UUID da conta a pagar vinculada à movimentação ou pagamento. account_receivable_id: type: string format: uuid description: UUID da conta a receber vinculada ao cliente e à operação na empresa autenticada. invoice_id: type: string nullable: true format: uuid description: Identificador do documento de cobrança ou nota vinculada. required: [] description: Dados do vínculo entre os registros relacionados. attachment: $ref: '#/components/schemas/PublicContractAttachment' description: Arquivo anexado ao registro, conforme o tipo e formato declarados no schema. attachment_invoice: $ref: '#/components/schemas/PublicContractAttachment' description: Nota fiscal da baixa. Nulo quando não há nota. user: type: object properties: name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. required: - name description: Usuário associado, ou null quando o sócio ainda não possui acesso. card: oneOf: - $ref: '#/components/schemas/PublicContractRawCard' - type: string nullable: true enum: - null description: Dados do cartão vinculado ao recurso financeiro. cashbox: oneOf: - $ref: '#/components/schemas/PublicContractRawCashbox' - type: string nullable: true enum: - null description: Caixa financeiro vinculado à movimentação ou ao lançamento. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. recon_justification: oneOf: - $ref: '#/components/schemas/PublicContractReconciliationJustification' - type: string nullable: true enum: - null description: Evidência pública da justificativa de conciliação sem contraparte. link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: URL do PDF do boleto (`linkBoleto` PJBank). group_item: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxGroupItem' - type: string nullable: true enum: - null description: Grupo de conciliação ao qual o registro pertence, quando existente. required: - id - attachment - attachment_invoice - card - cashbox - reconciled description: Baixa financeira e suas relações de conciliação, comprovantes e meios de pagamento. PublicContractAdherenceFlag: type: object properties: code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. severity: type: string description: Severidade de exibição do aviso de cobrança. field: type: string description: Campo do documento ou configuração ao qual o resultado se refere. document_role: type: string description: Papel do documento na comprovação, como nota ou comprovante. attachment_id: type: string nullable: true format: uuid description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. payment_id: type: string nullable: true format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. expected: type: string nullable: true description: Valor esperado usado na comparação da evidência. observed: type: string nullable: true description: Valor ou estado observado na fonte usada para a comparação. required: - code - severity - field - document_role - attachment_id - payment_id - expected - observed description: Sinal de atenção identificado na leitura e comparação documental. PublicContractAdherenceDocument: type: object properties: attachment_id: type: string format: uuid description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. role: type: string description: Nome do perfil de acesso (deve estar cadastrado na empresa). payment_id: type: string nullable: true format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. score: type: integer nullable: true description: Nota da avaliação; nula fora do status complete. coverage: type: string description: Cobertura efetivamente medida na leitura ou avaliação. fields: type: object additionalProperties: type: string x-map-reason: DocumentEvaluation::toArray associa chaves de AdherenceField a valores do enum FieldState; os campos aplicáveis variam conforme o papel do documento. description: Resultados ou valores organizados por campo do documento ou configuração. flags: type: array items: $ref: '#/components/schemas/PublicContractAdherenceFlag' description: Pontos de atenção encontrados, como gravados pela avaliação. required: - attachment_id - role - payment_id - score - coverage - fields - flags description: Documento lido e resultado da comparação de seus campos. PublicContractDocumentAdherence: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. score: type: integer nullable: true description: Nota da avaliação; nula fora do status complete. range: type: string nullable: true description: Faixa da nota; nula fora do status complete. color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' critical_count: type: integer description: Quantidade de pontos críticos encontrados. summary: type: string description: Resumo persistido do farol; null é legítimo quando a linha ainda não recebeu resumo, inclusive pending. O Resource repassa o valor sem converter null em texto. nullable: true analyzed_at: type: string nullable: true format: date-time description: Instante da avaliação; nulo quando nunca foi avaliada. error_code: type: string nullable: true description: Código do erro quando status é error. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. analyzed_revision: type: integer nullable: true description: Revisão do cadastro que foi de fato analisada. algorithm_version: type: string nullable: true description: Versão do algoritmo que produziu a avaliação. flags: type: array items: $ref: '#/components/schemas/PublicContractAdherenceFlag' description: Pontos de atenção encontrados, como gravados pela avaliação. documents: type: array items: $ref: '#/components/schemas/PublicContractAdherenceDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. evidence: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: DocumentAdherenceResource.evidence preserva o resumo mascarado das evidências fornecido pelo motor, por campo/pagamento; um resumo vazio é explicitamente stdClass, não uma lista. description: Evidências da avaliação; objeto vazio quando não há. required: - status - score - range - color - critical_count - summary - analyzed_at - error_code - revision - analyzed_revision - algorithm_version - flags - documents - evidence description: Resumo da conferência documental da conta a pagar. PublicContractAdherenceHistory: type: object properties: revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. score: type: integer nullable: true description: Nota da avaliação; nula fora do status complete. range: type: string nullable: true description: Faixa da nota; nula fora do status complete. color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' summary: type: string description: Resumo persistido do farol; null é legítimo quando a linha ainda não recebeu resumo, inclusive pending. O Resource repassa o valor sem converter null em texto. nullable: true error_code: type: string nullable: true description: Código do erro quando status é error. flags: type: array items: $ref: '#/components/schemas/PublicContractAdherenceFlag' description: Pontos de atenção encontrados, como gravados pela avaliação. algorithm_version: type: string nullable: true description: Versão do algoritmo que produziu a avaliação. analyzed_at: type: string nullable: true format: date-time description: Instante da avaliação; nulo quando nunca foi avaliada. required: - revision - status - score - range - color - summary - error_code - flags - algorithm_version - analyzed_at description: Revisão histórica da avaliação documental com evidências e resultado. PublicContractLinkedMovement: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. date: type: string format: date description: Data de referência da operação financeira. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. cashbox_id: type: string format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. raw_description: type: string nullable: true description: Descrição original recebida no extrato bancário, antes da classificação. matched_by: type: string nullable: true description: Critério utilizado para vincular a movimentação ao lançamento financeiro. required: - id - date - amount - cashbox_id - payment_method - raw_description - matched_by description: Movimento bancário ligado à conta financeira ou à baixa. PublicContractFiscalXmlContent: oneOf: - type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: FiscalRps.getContentAttribute desserializa a árvore XML municipal legada ou nacional; os nomes dos elementos e dos espaços de nomes dependem do leiaute fiscal. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' - type: string description: Conteúdo fiscal persistido e decodificado; o formato depende do leiaute da nota. PublicContractFiscalFailure: type: object properties: causa: type: string nullable: true description: 'Causa da recusa da emissão fiscal (ex.: lote em processamento).' rotulo: type: string nullable: true description: Rótulo legível da classificação ou da pendência apresentada. retentavel: type: boolean description: Se repetir a operação mais tarde pode funcionar. codigos: type: array items: type: string description: Códigos que identificam as classificações ou pendências apresentadas. mensagem: type: string nullable: true description: Mensagem legível que explica o resultado da operação ou a pendência. tentativas: type: integer description: Quantidade de tentativas registradas na emissão. em: type: string nullable: true format: date-time description: Data ou instante de referência do resultado apresentado. required: - causa - rotulo - retentavel - codigos - mensagem - tentativas - em nullable: true description: Falha de emissão fiscal com causas, tentativas e possibilidade de repetição. PublicContractFiscalNoteRaw: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. receipt: type: string nullable: true description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. access_token: type: string nullable: true description: Identificação de acesso à nota fiscal emitida, preservada na representação fiscal. year: oneOf: - type: string nullable: true - type: integer description: Ano fiscal sem cast normalizador de year no modelo. A criação atribui now()->year como inteiro e retorna o mesmo modelo; representações textuais já descritas para leitura/histórico permanecem aceitas. Não se infere string exclusiva do PHPDoc. Nulabilidade anterior preservada somente no ramo textual. content: $ref: '#/components/schemas/PublicContractFiscalXmlContent' description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. verification: type: string nullable: true description: Código de verificação da NFS-e (null quando indisponível). alerts: type: string nullable: true description: Alertas do RPS (string vazia quando sem alertas). status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. operation_nature: type: string nullable: true description: Natureza da operação. emission: type: string nullable: true description: Data/hora de emissão no formato `Y-m-d H:i:s`. required: - id description: Nota fiscal do lote com estado, conteúdo e resultado da emissão. PublicContractFiscalNote: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. receipt: type: string nullable: true description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. access_token: type: string nullable: true description: Identificação de acesso à nota fiscal emitida, preservada na representação fiscal. year: oneOf: - type: string nullable: true - type: integer description: Ano fiscal sem cast normalizador de year no modelo. A criação atribui now()->year como inteiro e retorna o mesmo modelo; representações textuais já descritas para leitura/histórico permanecem aceitas. Não se infere string exclusiva do PHPDoc. Nulabilidade anterior preservada somente no ramo textual. content: $ref: '#/components/schemas/PublicContractFiscalXmlContent' description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. verification: type: string nullable: true description: Código de verificação da NFS-e (null quando indisponível). alerts: type: string nullable: true description: Alertas do RPS (string vazia quando sem alertas). status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. operation_nature: type: string nullable: true description: Natureza da operação. emission: type: string nullable: true description: Data/hora de emissão no formato `Y-m-d H:i:s`. erro: $ref: '#/components/schemas/PublicContractFiscalFailure' description: Falha fiscal interpretada para exibição, quando disponível. required: - id - erro description: Nota fiscal do lote com estado, conteúdo e resultado da emissão. PublicContractFiscalBatchRaw: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. content: $ref: '#/components/schemas/PublicContractFiscalXmlContent' description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. protocol: type: string nullable: true description: Identificador retornado pelo sistema nacional da NFS-e. year: oneOf: - type: string nullable: true - type: integer description: Ano fiscal sem cast normalizador de year no modelo. A criação atribui now()->year como inteiro e retorna o mesmo modelo; representações textuais já descritas para leitura/histórico permanecem aceitas. Não se infere string exclusiva do PHPDoc. Nulabilidade anterior preservada somente no ramo textual. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. alerts: type: string nullable: true description: Alertas do RPS (string vazia quando sem alertas). forced: type: integer description: Flag indicando emissão forçada (0 = normal, 1 = forçado). rps: type: array items: $ref: '#/components/schemas/PublicContractFiscalNoteRaw' description: RPS individuais associados a este lote. required: - id description: Lote de notas fiscais e resultado do processamento da emissão. PublicContractFiscalBatch: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. content: $ref: '#/components/schemas/PublicContractFiscalXmlContent' description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. protocol: type: string nullable: true description: Identificador retornado pelo sistema nacional da NFS-e. year: oneOf: - type: string nullable: true - type: integer description: Ano fiscal sem cast normalizador de year no modelo. A criação atribui now()->year como inteiro e retorna o mesmo modelo; representações textuais já descritas para leitura/histórico permanecem aceitas. Não se infere string exclusiva do PHPDoc. Nulabilidade anterior preservada somente no ramo textual. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. alerts: type: string nullable: true description: Alertas do RPS (string vazia quando sem alertas). forced: type: integer description: Flag indicando emissão forçada (0 = normal, 1 = forçado). rps: type: array items: $ref: '#/components/schemas/PublicContractFiscalNote' description: RPS individuais associados a este lote. parsed_alerts: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Alertas fiscais interpretados a partir do conteúdo persistido do lote. erro: $ref: '#/components/schemas/PublicContractFiscalFailure' description: Falha fiscal interpretada para exibição, quando disponível. required: - id - rps - parsed_alerts - erro description: Lote de notas fiscais e resultado do processamento da emissão. PublicContractRawCategory: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. default: type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. nfse_enabled: type: boolean description: Indica se a categoria está habilitada para uso na emissão de NFS-e. nbs_id: type: string nullable: true format: uuid description: UUID do código da Nomenclatura Brasileira de Serviços no catálogo fiscal. fiscal_config: $ref: '#/components/schemas/PublicContractServiceFiscalConfiguration' description: Configuração fiscal padrão das notas desta categoria (nível categoria da cadeia required: - id description: Categoria do plano de contas e suas configurações financeiras e fiscais. PublicContractRawCashbox: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. start_amount: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo inicial, string decimal de duas casas. amount: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. default: type: boolean description: Indica que este registro é a opção padrão no contexto do cadastro. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. bank_id: type: string nullable: true format: uuid description: Identificador da instituição financeira no catálogo de bancos. institution_id: type: string nullable: true description: Identificador da instituição financeira associada ao registro. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. institution_name: type: string nullable: true description: Nome da instituição financeira de origem da movimentação. institution_logo_url: type: string nullable: true description: URL da imagem de identificação da instituição financeira. bank: $ref: '#/components/schemas/PublicContractRawBank' description: Banco cru carregado pela relação bank do modelo Cashbox, ou null sem vínculo; RawBank já é nullable. Não é CashboxResource nem se acrescenta uma segunda alternativa null em oneOf. reconciliation_mode: type: string description: Modo de conciliação do caixa (por exemplo `legacy`). editable: type: boolean description: Indica se o registro permite alterações na operação atual. required: - id description: Caixa financeiro e dados da conta bancária associada. PublicContractCardBillRedirect: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. from_bill_id: type: string format: uuid description: Fatura original. to_bill_id: type: string format: uuid description: Fatura de destino. from_close: type: string format: date description: Fechamento da fatura original (YYYY-MM-DD). to_close: type: string format: date description: Fechamento da fatura de destino (YYYY-MM-DD). to_due: type: string format: date description: Vencimento da fatura de destino (YYYY-MM-DD). reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. message: type: string description: Mensagem legível que explica o resultado da operação. required: - payment_id - from_bill_id - to_bill_id - from_close - to_close - to_due - reason - message description: Redirecionamento de uma compra para outra fatura após o fechamento. PublicContractAccountReceivable: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. movimento_amarrado: oneOf: - $ref: '#/components/schemas/PublicContractLinkedMovement' - type: string nullable: true enum: - null description: Movimento do extrato bancário já amarrado à conta e ainda sem baixa. Nulo quando não há movimento payments: type: array items: $ref: '#/components/schemas/PublicContractPayment' description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando invoice: oneOf: - type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - type: string nullable: true enum: - null description: Dados da nota fiscal ou da emissão fiscal associada ao recurso. generated_for_entity_type: type: string nullable: true description: Tipo da pessoa vinculada à conta. Enum AccountPayableFor. Nulo quando não generated_for_entity_name: type: string nullable: true description: Nome da entidade geradora da conta. Null se criada manualmente. generated_for_entity_document: type: string nullable: true description: CPF ou CNPJ da pessoa vinculada, como cadastrado; nulo quando não há pessoa ou ela não tem created_by_name: type: string nullable: true description: Nome do usuário que criou a conta; nulo quando `created_by` é nulo. recurrence: oneOf: - $ref: '#/components/schemas/PublicContractRawRecurrence' - type: string nullable: true enum: - null description: Configuração da recorrência que origina ou agrupa os lançamentos financeiros. category: oneOf: - $ref: '#/components/schemas/PublicContractRawCategory' - type: string nullable: true enum: - null description: Categoria financeira vinculada ao lançamento. card: oneOf: - $ref: '#/components/schemas/PublicContractRawCard' - type: string nullable: true enum: - null description: Dados do cartão vinculado ao recurso financeiro. cashbox: oneOf: - $ref: '#/components/schemas/PublicContractRawCashbox' - type: string nullable: true enum: - null description: Caixa financeiro vinculado à movimentação ou ao lançamento. standard_launch: oneOf: - $ref: '#/components/schemas/PublicContractRawStandardLaunch' - type: string nullable: true enum: - null description: Conta contábil (null se não vinculada ou sem permissão). workflow: oneOf: - $ref: '#/components/schemas/PublicContractWorkflowSummary' - type: string nullable: true enum: - null description: Régua de cobrança vinculada; nulo quando a conta não tem régua. bank_skip: type: string nullable: true enum: - null description: Campo legado emitido como nulo nesta representação da conta. rps_lote: type: array items: $ref: '#/components/schemas/PublicContractFiscalBatchRaw' description: Lotes de RPS (NFS-e) emitidos para a conta. active_rps: oneOf: - $ref: '#/components/schemas/PublicContractFiscalNoteRaw' - type: string nullable: true enum: - null description: Nota fiscal ativa identificada para a conta. charge_in_progress: type: boolean description: Indica se há envio de cobrança em processamento. charge_in_progress_id: type: string nullable: true format: uuid description: Identificador do envio de cobrança que está em processamento. overpaid_amount: type: string description: Valor recebido acima do valor da conta. String decimal de 2 casas; '0.00' serviceable_type: type: string description: Classe da entidade de serviço associada ao registro; null quando não há vínculo. nullable: true serviceable_id: type: string description: UUID da entidade de serviço associada ao registro; null quando não há vínculo. format: uuid nullable: true required: - id - movimento_amarrado - payments - invoice - generated_for_entity_type - generated_for_entity_name - generated_for_entity_document - created_by_name - recurrence - category - card - cashbox - standard_launch - workflow - retentions - bank_skip - rps_lote - active_rps - charge_in_progress - charge_in_progress_id - overpaid_amount description: Conta a receber com os dados financeiros e vínculos serializados para esta consulta. PublicContractAccountPayable: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. card_id: type: string nullable: true format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. invoice_attachment_id: type: string nullable: true format: uuid description: UUID do anexo da nota fiscal associado ao lançamento. receipt_attachment_id: type: string nullable: true format: uuid description: UUID do anexo de comprovante associado ao pagamento. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. movimento_amarrado: oneOf: - $ref: '#/components/schemas/PublicContractLinkedMovement' - type: string nullable: true enum: - null description: Movimento do extrato bancário já amarrado à conta e ainda sem baixa. Nulo quando não há movimento payments: type: array items: $ref: '#/components/schemas/PublicContractPayment' description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando invoice: $ref: '#/components/schemas/PublicContractAttachment' description: Dados da nota fiscal ou da emissão fiscal associada ao recurso. generated_for_entity_type: type: string nullable: true description: Tipo da pessoa vinculada à conta. Enum AccountPayableFor. Nulo quando não generated_for_entity_name: type: string nullable: true description: Nome da entidade geradora da conta. Null se criada manualmente. generated_for_entity_document: type: string nullable: true description: CPF ou CNPJ da pessoa vinculada, como cadastrado; nulo quando não há pessoa ou ela não tem created_by_name: type: string nullable: true description: Nome do usuário que criou a conta; nulo quando `created_by` é nulo. recurrence: oneOf: - $ref: '#/components/schemas/PublicContractRawRecurrence' - type: string nullable: true enum: - null description: Configuração da recorrência que origina ou agrupa os lançamentos financeiros. category: oneOf: - $ref: '#/components/schemas/PublicContractRawCategory' - type: string nullable: true enum: - null description: Categoria financeira vinculada ao lançamento. card: oneOf: - $ref: '#/components/schemas/PublicContractRawCard' - type: string nullable: true enum: - null description: Dados do cartão vinculado ao recurso financeiro. cashbox: oneOf: - $ref: '#/components/schemas/PublicContractRawCashbox' - type: string nullable: true enum: - null description: Caixa financeiro vinculado à movimentação ou ao lançamento. standard_launch: oneOf: - $ref: '#/components/schemas/PublicContractRawStandardLaunch' - type: string nullable: true enum: - null description: Conta contábil (null se não vinculada ou sem permissão). receipt: $ref: '#/components/schemas/PublicContractAttachment' description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. card_bill_redirect: oneOf: - $ref: '#/components/schemas/PublicContractCardBillRedirect' - type: string nullable: true enum: - null description: Aviso de que uma compra no crédito caiu numa fatura conciliada e foi enviada para a próxima card_bill_redirects: type: array items: $ref: '#/components/schemas/PublicContractCardBillRedirect' description: Todos os redirecionamentos feitos nesta requisição; compra parcelada no crédito pode ter payment_target: oneOf: - type: object properties: type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. card_id: type: string format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. bill_id: type: string format: uuid description: Fatura de cartão. required: - type - card_id - bill_id - type: string nullable: true enum: - null description: Destino do pagamento quando a conta é fatura de cartão ou antecipação de fatura. Nulo nos document_adherence: oneOf: - $ref: '#/components/schemas/PublicContractDocumentAdherence' - type: string nullable: true enum: - null description: Farol de aderência documental no formato compacto. Nulo enquanto a conta required: - id - movimento_amarrado - payments - invoice - generated_for_entity_type - generated_for_entity_name - generated_for_entity_document - created_by_name - recurrence - category - card - cashbox - standard_launch - receipt - card_bill_redirect - card_bill_redirects - payment_target - document_adherence description: Conta a pagar com os dados financeiros e vínculos serializados para esta consulta. PublicContractSameDueDateAccount: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. active_rps_amount: oneOf: - type: string - type: number description: Valor líquido da nota ativa; zero quando não há nota ativa com valor disponível. required: - id description: Conta a receber com os dados financeiros e vínculos serializados para esta consulta. PublicContractFiscalBatchAccount: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. required: - id - description - status - unit_price - balance - balance_paid description: Resumo da conta a receber associada ao lote fiscal. PublicContractSubsidiaryFiscalBatch: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. content: $ref: '#/components/schemas/PublicContractFiscalXmlContent' description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. error: type: string nullable: true description: Código de máquina, presente em erros como créditos insuficientes. protocol: type: string nullable: true description: Identificador retornado pelo sistema nacional da NFS-e. year: type: string nullable: true description: Ano de emissão. Serializado como string. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. alerts: type: string nullable: true description: Alertas do RPS (string vazia quando sem alertas). forced: type: integer description: Flag indicando emissão forçada (0 = normal, 1 = forçado). rps: type: array items: $ref: '#/components/schemas/PublicContractFiscalNote' description: RPS individuais associados a este lote. taker: type: string description: Identificação do tomador do serviço na nota fiscal. taker_document: type: string nullable: true description: Documento de identificação do tomador do serviço. accounts: type: array items: $ref: '#/components/schemas/PublicContractFiscalBatchAccount' description: Contas financeiras incluídas na consulta ou operação. required: - id - number - content - error - protocol - year - status - alerts - forced - rps - taker - taker_document - accounts description: Lote fiscal apresentado na consulta geral com seu tomador e contas. PublicContractBankSlipRaw: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount: type: number description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. due_date: type: string format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. order: type: string nullable: true description: Número do pedido interno (igual ao `id` do boleto na emissão inicial). number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. digitable: type: string nullable: true description: Linha digitável do boleto para apresentação ao pagador; não representa confirmação de pagamento. interest: type: number nullable: true description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. mulct: type: number nullable: true description: Multa configurada (percentual ou valor fixo). discount: type: string nullable: true description: Desconto configurado. Normalmente `null` (não preenchido no fluxo atual). link: type: string nullable: true description: URL do PDF do boleto (`linkBoleto` PJBank). status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. link_info: type: string nullable: true description: URL da página de informações do boleto; preenchida assincronamente (pode ser `null`). format: type: string nullable: true description: Formato do arquivo ou relatório solicitado; consulte as opções aceitas na operação. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. provider_receivable_id: type: string nullable: true description: Identificador do recebível informado pelo provedor. pix_copy_paste: type: string nullable: true description: Código PIX copia e cola devolvido pelo provedor; ausente ou null enquanto indisponível. update_sync_status: type: string nullable: true description: Acompanhamento da alteração de um boleto existente, distinto da situação financeira em status. payment_link_id: type: string nullable: true format: uuid description: Identificador do link de pagamento vinculado à cobrança. issuance_state: type: string nullable: true description: Estado do processamento de emissão do documento. issuance_error: type: string nullable: true description: Erro de emissão registrado para o documento fiscal ou cobrança. replaced_by_id: type: string nullable: true format: uuid description: Identificador do registro que substituiu a autorização anterior. pix_qr_code: type: string nullable: true description: Representação do QR Code devolvida pelo fluxo de PIX. pix_query_status: type: string nullable: true description: Resultado da consulta do código PIX nesta resposta; não substitui o status financeiro do pagamento. accounts_receivable: type: array items: $ref: '#/components/schemas/PublicContractRawAccountReceivable' description: Contas a receber relacionadas ao registro. pivot: type: object additionalProperties: false properties: bank_slip_id: type: string description: UUID do boleto no vínculo com a conta. format: uuid account_receivable_id: type: string description: UUID da conta a receber no vínculo com o boleto. format: uuid required: - bank_slip_id - account_receivable_id description: Vínculo entre o boleto e a conta, presente quando o boleto é carregado pela relação da conta. required: - id - pix_qr_code - pix_query_status description: Boleto ou cobrança Pix emitido para a conta a receber. PublicContractBankSlip: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount: type: number description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. due_date: type: string format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. order: type: string nullable: true description: Número do pedido interno (igual ao `id` do boleto na emissão inicial). number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. digitable: type: string nullable: true description: Linha digitável do boleto para apresentação ao pagador; não representa confirmação de pagamento. interest: type: number nullable: true description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. mulct: type: number nullable: true description: Multa configurada (percentual ou valor fixo). discount: type: string nullable: true description: Desconto configurado. Normalmente `null` (não preenchido no fluxo atual). link: type: string nullable: true description: URL do PDF do boleto (`linkBoleto` PJBank). status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. link_info: type: string nullable: true description: URL da página de informações do boleto; preenchida assincronamente (pode ser `null`). format: type: string nullable: true description: Formato do arquivo ou relatório solicitado; consulte as opções aceitas na operação. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. provider_receivable_id: type: string nullable: true description: Identificador do recebível informado pelo provedor. pix_copy_paste: type: string nullable: true description: Código PIX copia e cola devolvido pelo provedor; ausente ou null enquanto indisponível. update_sync_status: type: string nullable: true description: Acompanhamento da alteração de um boleto existente, distinto da situação financeira em status. payment_link_id: type: string nullable: true format: uuid description: Identificador do link de pagamento vinculado à cobrança. issuance_state: type: string nullable: true description: Estado do processamento de emissão do documento. issuance_error: type: string nullable: true description: Erro de emissão registrado para o documento fiscal ou cobrança. replaced_by_id: type: string nullable: true format: uuid description: Identificador do registro que substituiu a autorização anterior. pix_qr_code: type: string nullable: true description: Representação do QR Code devolvida pelo fluxo de PIX. pix_query_status: type: string nullable: true description: Resultado da consulta do código PIX nesta resposta; não substitui o status financeiro do pagamento. accounts_receivable: type: array items: $ref: '#/components/schemas/PublicContractRawAccountReceivable' description: Contas a receber relacionadas ao registro. accounts: type: array items: $ref: '#/components/schemas/PublicContractAccountReceivable' description: Contas financeiras incluídas na consulta ou operação. downloadUrl: type: string nullable: true description: URL temporária (token de 1 hora) para download do PDF do boleto. receipt_url: type: string nullable: true description: Endereço disponibilizado para acessar o comprovante do pagamento. pivot: type: object additionalProperties: false properties: bank_slip_id: type: string description: UUID do boleto no vínculo com a conta. format: uuid account_receivable_id: type: string description: UUID da conta a receber no vínculo com o boleto. format: uuid required: - bank_slip_id - account_receivable_id description: Vínculo entre o boleto e a conta, presente quando o boleto é carregado pela relação da conta. required: - id - accounts - downloadUrl - receipt_url - pix_qr_code - pix_query_status description: Boleto ou cobrança Pix emitido para a conta a receber. PublicContractBillingEmailPreference: type: object properties: email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. changed_at: type: string nullable: true format: date-time description: Instante em que a alteração foi registrada. preferences_url: type: string description: Endereço para gerenciar preferências de recebimento das cobranças. history: type: array items: type: object properties: action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. created_at: type: string description: Data e hora em que o registro foi criado. required: - action - reason - created_at description: Histórico de ações ou alterações registradas para o recurso. required: - email - status - description - changed_at - preferences_url - history description: Preferência de recebimento de e-mails de cobrança e histórico de alterações. PublicContractFiscalIssuer: type: object properties: im: type: string description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. cnpj: type: string description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. cmun: type: string description: Código IBGE do município do emitente fiscal. razao: type: string description: Razão social do emissor conforme seu cadastro fiscal. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. mail: type: string nullable: true description: Endereço de e-mail utilizado para contato com o emissor. tpam: type: integer description: Código do ambiente fiscal usado na emissão. required: - im - cnpj - cmun - razao - phone - mail - tpam description: Identificação do emitente usada na configuração fiscal da empresa. PublicContractFiscalConfiguration: type: object properties: issuer: $ref: '#/components/schemas/PublicContractFiscalIssuer' description: Identificação do emissor responsável pelo documento fiscal. certificate: type: string nullable: true description: 'Limite do arquivo em KiB: max 102400.' issqn_tributation: type: string description: Tributação do ISSQN. Na emissão, `none` segue a configuração; os demais valem para a nota e sobrepõem a categoria e a empresa. serie: type: string nullable: true description: Séries de valores calculados para o gráfico ou período. ctribmun: type: string nullable: true description: Código de tributação municipal com três posições; o código 000 não é aceito. paliq_pis: type: string nullable: true description: Alíquota de PIS informada na configuração fiscal. paliq_cofins: type: string nullable: true description: Alíquota de COFINS informada na configuração fiscal. regime_tributario: type: string nullable: true description: Regime tributário informado para o emitente fiscal. ibscbs_cst: type: string nullable: true description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. ibscbs_cclasstrib: type: string nullable: true description: Código de classificação tributária IBS/CBS com seis dígitos. ibscbs_cindop: type: string nullable: true description: Código do indicador de operação IBS/CBS com seis dígitos. ibscbs_ccredpres: type: string nullable: true description: Código do crédito presumido IBS/CBS com dois dígitos. certificate_holder: type: string nullable: true description: Titular identificado no certificado fiscal. certificate_cnpj: type: string nullable: true description: CNPJ identificado no certificado fiscal configurado. certificate_valid_from: type: string nullable: true description: Início de validade do certificado. certificate_valid_to: type: string nullable: true description: Fim de validade do certificado. pis: type: string nullable: true description: Retenção de PIS aplicada ao serviço; consulte o tipo numérico e a configuração fiscal da emissão. cofins: type: string nullable: true description: Retenção de COFINS aplicada ao serviço; consulte a configuração fiscal da emissão. ir: type: string nullable: true description: Retenção de Imposto de Renda aplicada ao serviço. csll: type: string nullable: true description: Retenção de CSLL aplicada ao serviço. inss: type: string nullable: true description: Retenção previdenciária de INSS aplicada ao serviço. others: type: string nullable: true description: Outras retenções tributárias aplicadas ao serviço. issqn_immunity_type: type: string nullable: true description: Tipo de imunidade da empresa (tpImunidade), de 1 a 5, com o texto do Anexo I. Só issqn_tributation_confirmada_em: type: string nullable: true description: Instante em que a tributação do ISSQN foi confirmada na configuração. tributation: type: string nullable: true description: Tipo de tributação aplicado ao serviço. operationNature: type: string nullable: true description: Natureza de operação fiscal usada na configuração de emissão. reg_ap_trib_sn: type: string nullable: true description: Regime de apuração dos tributos no Simples Nacional. simple: type: string nullable: true description: Indica a modalidade simplificada usada pelo recurso. cultural: type: string nullable: true description: Indicação de incentivo cultural registrada para a emissão fiscal. cst: type: string nullable: true description: Código de situação tributária; o tipo e a quantidade de posições dependem da operação fiscal. issqn: type: string nullable: true description: Alíquota do Imposto Sobre Serviços de Qualquer Natureza, conforme a configuração da emissão. operation_nature: type: string nullable: true description: Natureza da operação. trib_type: type: string nullable: true description: Tipo de tributação aplicado ao serviço. trib_sn: type: string nullable: true description: Percentual de tributação do Simples Nacional considerado na emissão. trib_estadual: type: string nullable: true description: Valor ou percentual da carga tributária estadual informada. trib_municipal: type: string nullable: true description: Valor ou percentual da carga tributária municipal informada. trib_federal: type: string nullable: true description: Valor ou percentual da carga tributária federal informada. logo: type: string nullable: true description: 'Limite do arquivo em KiB: max 102400.' nfse_system: type: string nullable: true description: Sistema de emissão de NFS-e configurado para o município. use_issqn: oneOf: - type: boolean - type: integer - type: string nullable: true description: Indica se o cálculo fiscal deve considerar o ISSQN informado. send_im: oneOf: - type: boolean - type: integer - type: string nullable: true description: Indica se a inscrição municipal deve ser enviada na emissão fiscal. retentions: oneOf: - type: boolean - type: integer - type: string nullable: true description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. required: - issuer - certificate - issqn_tributation - serie - ctribmun - paliq_pis - paliq_cofins - regime_tributario - ibscbs_cst - ibscbs_cclasstrib - ibscbs_cindop - ibscbs_ccredpres - certificate_holder - certificate_cnpj - certificate_valid_from - certificate_valid_to - pis - cofins - ir - csll - inss - others - issqn_immunity_type - issqn_tributation_confirmada_em - tributation - operationNature - reg_ap_trib_sn - simple - cultural - cst - issqn - operation_nature - trib_type - trib_sn - trib_estadual - trib_municipal - trib_federal - logo - nfse_system - use_issqn - send_im - retentions description: Configuração pública de emissão fiscal, sem senha nem conteúdo privado do certificado. PublicContractUnconfiguredFiscalConfiguration: type: object maxProperties: 0 additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: 'ConfigurationController::getFiscalRps retorna explicitamente new stdClass() quando company.fiscal_rps_config é nulo: o único valor válido neste ramo é {}.' description: Configuração fiscal ainda não preenchida; objeto vazio emitido explicitamente pelo controller. PublicContractSimpleContactType: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. required: - id - name - description description: Classificação cadastrada para um canal de contato. PublicContractEmail: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. email_type: type: string nullable: true description: Classificação do endereço de e-mail, como pessoal ou profissional. email_type_id: type: string nullable: true format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. type: oneOf: - $ref: '#/components/schemas/PublicContractSimpleContactType' - type: string nullable: true enum: - null description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. required: - id - email_type - email_type_id - email - type - description description: Endereço de e-mail cadastrado e sua classificação de contato. PublicContractCommonEmail: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: oneOf: - $ref: '#/components/schemas/PublicContractSimpleContactType' - type: string nullable: true enum: - null description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - id - email - description - type description: Endereço de e-mail cadastrado e sua classificação de contato. PublicContractPhone: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. phone_type: type: string nullable: true description: Classificação do número de telefone no cadastro. phone_type_id: type: string nullable: true format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. phone: type: string description: Número de telefone do contato, com DDD quando nacional. wpp: type: boolean description: Indica se o telefone pode ser utilizado para contato por WhatsApp. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. required: - id - phone_type - phone_type_id - phone - wpp - description description: Número de telefone cadastrado e sua classificação de contato. PublicContractCommonPhone: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. phone: type: string description: Número de telefone do contato, com DDD quando nacional. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: oneOf: - $ref: '#/components/schemas/PublicContractSimpleContactType' - type: string nullable: true enum: - null description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - id - phone - description - type description: Número de telefone cadastrado e sua classificação de contato. PublicContractAddress: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. address: type: string nullable: true description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. city_id: type: string nullable: true description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. city: type: string nullable: true description: Município do endereço ou da prestação do serviço, conforme o recurso. state_id: type: string nullable: true description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state: type: string nullable: true description: Estado ou unidade federativa do endereço. stateLetter: type: string nullable: true description: Sigla da unidade federativa do endereço. country: type: string nullable: true description: Identificação do país associado ao endereço ou cadastro. country_name: type: string description: Nome do país associado ao endereço ou cadastro. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. neighborhood: type: string nullable: true description: Bairro do endereço informado. complement: type: string nullable: true description: Complemento do endereço, como sala, bloco ou apartamento. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. zipcode: type: string nullable: true description: Código postal do endereço; no Brasil, CEP com oito dígitos. required: - id - type - address - city_id - city - state_id - state - stateLetter - country - country_name - number - neighborhood - complement - description - zipcode description: Endereço cadastrado com referências geográficas e complementos. PublicContractPersonBankAccount: type: object properties: bank_name: type: string description: Nome da instituição bancária da conta cadastrada. account: type: string description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. agency: type: string description: Número da agência bancária, preservando zeros e dígito quando informado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. pix: type: string nullable: true description: Chave PIX cadastrada para identificação da conta de recebimento. required: - bank_name - account - agency - description - pix description: Dados da conta bancária informada no cadastro da pessoa. PublicContractBenefit: type: object properties: name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. value: type: string description: Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. required: - name - type - value description: Benefício financeiro associado ao funcionário. PublicContractRawEmail: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. email_type_id: type: string format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. pivot: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: 'E-mail/telefone de lookup é serializado pelo model de uma relação belongsToMany: a pivot contém IDs de proprietário e contato, com chave de proprietário variável por cadastro.' description: Dados do vínculo entre os registros relacionados. email_type: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. required: - id - name description: Classificação do endereço de e-mail cadastrado. nullable: true additionalProperties: false required: - id description: Endereço de e-mail cadastrado e sua classificação de contato. PublicContractRawPhone: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. phone: type: string description: Número de telefone do contato, com DDD quando nacional. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. phone_type_id: type: string format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. wpp: type: boolean description: Indica se o telefone pode ser utilizado para contato por WhatsApp. pivot: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: 'E-mail/telefone de lookup é serializado pelo model de uma relação belongsToMany: a pivot contém IDs de proprietário e contato, com chave de proprietário variável por cadastro.' description: Dados do vínculo entre os registros relacionados. type: oneOf: - $ref: '#/components/schemas/PublicContractPhoneTypeRaw' - type: string nullable: true enum: - null description: Classificação do telefone cadastrado. required: - id description: Número de telefone cadastrado e sua classificação de contato. PublicContractRawAddress: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. city_id: type: string nullable: true description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state_id: type: string nullable: true description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. zipcode: type: string description: Código postal do endereço; no Brasil, CEP com oito dígitos. address: type: string nullable: true description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. neighborhood: type: string nullable: true description: Bairro do endereço informado. complement: type: string nullable: true description: Complemento do endereço, como sala, bloco ou apartamento. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. country: type: string nullable: true description: Identificação do país associado ao endereço ou cadastro. i_state: type: string nullable: true description: Identificação do estado no cadastro de endereço do parceiro. i_city: type: string nullable: true description: Identificação do município no cadastro de endereço do parceiro. city: oneOf: - $ref: '#/components/schemas/PublicContractCityRaw' - type: string nullable: true enum: - null description: Dados do município associado ao endereço fiscal. state: type: object nullable: true additionalProperties: false properties: id: type: string description: Identificador textual do catálogo do próprio tenant, incluindo IDs legados numéricos textuais ("1", "21") e UUID. Retornado como string nas leituras persistidas; não converter para inteiro. title: type: string description: Nome do estado. letter: type: string description: Sigla do estado. iso: type: integer description: Código de referência padronizado do município ou país cadastrado. slug: type: string description: Código textual estável usado para identificar o plano ou configuração. population: type: integer description: Universo de registros elegíveis para o processamento. created_at: type: string nullable: true description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true description: Data e hora da exclusão lógica do registro; null quando não excluído. required: - id - title - letter description: Dados completos do estado associado ao endereço fiscal. client_id: type: string description: UUID do cliente associado ao endereço, quando exposto pela consulta. format: uuid address_id: type: string description: UUID do endereço associado ao cliente, quando exposto pela consulta. format: uuid required: - id description: Endereço cadastrado com referências geográficas e complementos. PublicContractRawContact: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. email: type: string nullable: true description: Endereço de e-mail do contato ou usuário associado ao recurso. office: type: string nullable: true description: Informações do escritório contábil vinculado ao cadastro. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. reference_id: type: string nullable: true format: uuid description: Identificador do registro de origem da referência. reference_type: type: string nullable: true description: Tipo do registro apontado pela referência. required: - id description: Contato adicional vinculado à pessoa ou entidade cadastrada. PublicContractRawEmployee: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. employee_workspace_id: type: string nullable: true format: uuid description: Identificador do local de trabalho no catálogo da empresa. employee_graduation_level_id: type: string nullable: true format: uuid description: Identificador do nível de formação no catálogo da empresa. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. course: type: string nullable: true description: Curso de formação informado no cadastro do estudante. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. marital_status: type: string nullable: true description: Estado civil da pessoa, utilizando uma das opções aceitas no enum. gender: type: string nullable: true description: Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. payment_day: type: string nullable: true description: Dia previsto para o pagamento segundo a periodicidade do vínculo. childs: type: integer nullable: true description: Quantidade de filhos informada no cadastro da pessoa. birth_date: type: string nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. pis_pasep: type: string nullable: true description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. social_registration: type: string nullable: true description: Matrícula eSocial salva. Pode conter um valor legado fora do formato atual; editar outros sector: type: string nullable: true description: Setor de trabalho ao qual a pessoa está vinculada. employee_code: type: string nullable: true description: Código interno do funcionário (único por tenant). salary: type: number description: 'Salário. Valor mínimo: 0.01.' payment_type: type: string description: Periodicidade ou critério do pagamento, conforme as opções do enum. hire_date: type: string nullable: true description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. has_childs: type: integer description: Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. occupation: type: string nullable: true description: Ocupação ou profissão informada no cadastro da pessoa. probation_contract: type: boolean nullable: true description: Dados do contrato de experiência do funcionário. probation_observation: type: string nullable: true description: Observações sobre o período do contrato de experiência. probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. prorrogation_probation_contract: type: boolean nullable: true description: Dados da prorrogação do contrato de experiência. prorrogation_probation_observation: type: string nullable: true description: Observações sobre a prorrogação do contrato de experiência. prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. work_schedule: type: string nullable: true description: Jornada de trabalho, em texto livre. emails: type: array items: $ref: '#/components/schemas/PublicContractRawEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractRawPhone' description: Números de telefone vinculados ao cadastro e suas classificações. user: oneOf: - $ref: '#/components/schemas/PublicContractRawUser' - type: string nullable: true enum: - null description: Usuário associado, ou null quando o sócio ainda não possui acesso. required: - id description: Funcionário e seus dados de cadastro, contatos e documentos. PublicContractRawIntern: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. intern_workspace_id: type: string nullable: true format: uuid description: Identificador do local de estágio no catálogo de locais de trabalho da empresa. intern_graduation_level_id: type: string nullable: true format: uuid description: Identificador do nível de formação do estagiário no catálogo da empresa. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. educational_institution: type: string nullable: true description: Instituição de ensino à qual o estudante está vinculado. marital_status: type: string nullable: true description: Estado civil da pessoa, utilizando uma das opções aceitas no enum. gender: type: string nullable: true description: Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. course: type: string nullable: true description: Curso de formação informado no cadastro do estudante. department: type: string nullable: true description: Departamento ao qual o funcionário ou estagiário está vinculado. pis_pasep: type: string nullable: true description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. birth_date: type: string nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. hire_date: type: string nullable: true description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. termination_date: type: string nullable: true description: Data de encerramento do vínculo de trabalho ou estágio, em AAAA-MM-DD. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. salary: type: number description: 'Salário. Valor mínimo: 0.01.' period_of_course: type: integer nullable: true description: Período do curso. Required quando current_situation_course != concluded. current_situation_course: type: string nullable: true description: Situação atual do curso do estudante. payment_type: type: string description: Periodicidade ou critério do pagamento, conforme as opções do enum. payment_day: type: string nullable: true description: Dia previsto para o pagamento segundo a periodicidade do vínculo. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. work_schedule: type: string nullable: true description: Jornada de trabalho, em texto livre. internship_mode: type: string nullable: true description: Modalidade do estágio registrada no cadastro. emails: type: array items: $ref: '#/components/schemas/PublicContractRawEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractRawPhone' description: Números de telefone vinculados ao cadastro e suas classificações. user: oneOf: - $ref: '#/components/schemas/PublicContractRawUser' - type: string nullable: true enum: - null description: Usuário associado, ou null quando o sócio ainda não possui acesso. required: - id description: Estagiário e seus dados acadêmicos, contatos e documentos. PublicContractRawUser: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. email_verified_at: type: string nullable: true format: date-time description: Data de verificação do e-mail (null se não verificado). ip: type: string nullable: true description: Endereço IP da requisição que originou a ação. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. two_factor_method: type: string nullable: true description: Método configurado para o segundo fator de autenticação. associate_type: type: string description: Classe da pessoa associada ao usuário, conforme o morph persistido; não é a chave textual usada no pedido de criação. nullable: true associate_id: type: string description: UUID da pessoa associada ao usuário; null quando não há vínculo. format: uuid nullable: true required: - id description: Dados públicos do usuário e de seu vínculo com a empresa. PublicContractEmployee: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. employee_workspace_id: type: string nullable: true format: uuid description: Identificador do local de trabalho no catálogo da empresa. employee_graduation_level_id: type: string nullable: true format: uuid description: Identificador do nível de formação no catálogo da empresa. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. course: type: string nullable: true description: Curso de formação informado no cadastro do estudante. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. marital_status: type: string nullable: true description: Estado civil da pessoa, utilizando uma das opções aceitas no enum. gender: type: string nullable: true description: Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. payment_day: type: string nullable: true description: Dia previsto para o pagamento segundo a periodicidade do vínculo. childs: type: integer nullable: true description: Quantidade de filhos informada no cadastro da pessoa. birth_date: type: string nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. pis_pasep: type: string nullable: true description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. social_registration: type: string nullable: true description: Matrícula eSocial salva. Pode conter um valor legado fora do formato atual; editar outros sector: type: string nullable: true description: Setor de trabalho ao qual a pessoa está vinculada. employee_code: type: string nullable: true description: Código interno do funcionário (único por tenant). salary: type: number description: 'Salário. Valor mínimo: 0.01.' payment_type: type: string description: Periodicidade ou critério do pagamento, conforme as opções do enum. hire_date: type: string nullable: true description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. term_date: type: string nullable: true description: Data de término do vínculo de trabalho, em AAAA-MM-DD; deve ser posterior à admissão. has_childs: type: integer description: Indica se a pessoa possui filhos; preserve o tipo booleano ou inteiro declarado neste recurso. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. occupation: type: string nullable: true description: Ocupação ou profissão informada no cadastro da pessoa. probation_contract: type: boolean nullable: true description: Dados do contrato de experiência do funcionário. probation_observation: type: string nullable: true description: Observações sobre o período do contrato de experiência. probation_duration: type: integer nullable: true description: Obrigatório se probation_contract=true. prorrogation_probation_contract: type: boolean nullable: true description: Dados da prorrogação do contrato de experiência. prorrogation_probation_observation: type: string nullable: true description: Observações sobre a prorrogação do contrato de experiência. prorrogation_probation_duration: type: integer nullable: true description: Obrigatório se prorrogation_probation_contract=true. work_schedule: type: string nullable: true description: Jornada de trabalho, em texto livre. emails: type: array items: $ref: '#/components/schemas/PublicContractEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractPhone' description: Números de telefone vinculados ao cadastro e suas classificações. bankAccounts: type: array items: $ref: '#/components/schemas/PublicContractPersonBankAccount' description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. benefits: type: array items: $ref: '#/components/schemas/PublicContractBenefit' description: Benefícios vinculados ao funcionário ou estagiário. addresses: type: array items: $ref: '#/components/schemas/PublicContractAddress' description: Endereços vinculados ao cadastro, com município e estado de referência. documents: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. graduation: type: string nullable: true description: Nome do nível de formação (string, não o ID). workspace: type: string nullable: true description: Nome do local de trabalho (string, não o ID). required: - id - emails - phones - bankAccounts - benefits - addresses - documents - salary - graduation - workspace description: Funcionário e seus dados de cadastro, contatos e documentos. PublicContractIntern: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. intern_workspace_id: type: string nullable: true format: uuid description: Identificador do local de estágio no catálogo de locais de trabalho da empresa. intern_graduation_level_id: type: string nullable: true format: uuid description: Identificador do nível de formação do estagiário no catálogo da empresa. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. educational_institution: type: string nullable: true description: Instituição de ensino à qual o estudante está vinculado. marital_status: type: string nullable: true description: Estado civil da pessoa, utilizando uma das opções aceitas no enum. gender: type: string nullable: true description: Gênero informado no cadastro da pessoa, utilizando as opções aceitas no enum. course: type: string nullable: true description: Curso de formação informado no cadastro do estudante. department: type: string nullable: true description: Departamento ao qual o funcionário ou estagiário está vinculado. pis_pasep: type: string nullable: true description: Número de inscrição PIS/PASEP informado no cadastro do trabalhador. birth_date: type: string nullable: true description: Data de nascimento da pessoa, em AAAA-MM-DD. hire_date: type: string nullable: true description: Data de admissão no vínculo de trabalho ou estágio, em AAAA-MM-DD. termination_date: type: string nullable: true description: Data de encerramento do vínculo de trabalho ou estágio, em AAAA-MM-DD. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. salary: type: number description: 'Salário. Valor mínimo: 0.01.' period_of_course: type: integer nullable: true description: Período do curso. Required quando current_situation_course != concluded. current_situation_course: type: string nullable: true description: Situação atual do curso do estudante. payment_type: type: string description: Periodicidade ou critério do pagamento, conforme as opções do enum. payment_day: type: string nullable: true description: Dia previsto para o pagamento segundo a periodicidade do vínculo. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. work_schedule: type: string nullable: true description: Jornada de trabalho, em texto livre. internship_mode: type: string nullable: true description: Modalidade do estágio registrada no cadastro. emails: type: array items: $ref: '#/components/schemas/PublicContractEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractPhone' description: Números de telefone vinculados ao cadastro e suas classificações. bankAccounts: type: array items: $ref: '#/components/schemas/PublicContractPersonBankAccount' description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. benefits: type: array items: $ref: '#/components/schemas/PublicContractBenefit' description: Benefícios vinculados ao funcionário ou estagiário. addresses: type: array items: $ref: '#/components/schemas/PublicContractAddress' description: Endereços vinculados ao cadastro, com município e estado de referência. documents: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. graduation: type: string nullable: true description: Nome do nível de formação (string, não o ID). workspace: type: string nullable: true description: Nome do local de trabalho (string, não o ID). required: - id - emails - phones - bankAccounts - benefits - addresses - documents - salary - graduation - workspace description: Estagiário e seus dados acadêmicos, contatos e documentos. PublicContractProvider: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. name: type: string description: Nome utilizado para identificar e exibir o registro. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. ie: type: string nullable: true description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. im: type: string nullable: true description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. international: type: boolean description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. provider_since: type: string nullable: true format: date description: Data desde a qual a empresa é fornecedora, em AAAA-MM-DD, conforme cast provider_since=date:Y-m-d do modelo Provider; sem hora ou fuso. Nulabilidade e condição de presença seguem o schema. nif: type: string nullable: true description: Número de identificação fiscal no país da pessoa domiciliada no exterior. nao_nif: type: string nullable: true description: Motivo de ausência do NIF; use um dos códigos admitidos no enum ou intervalo declarado. emails: type: array items: $ref: '#/components/schemas/PublicContractEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractPhone' description: Números de telefone vinculados ao cadastro e suas classificações. bankAccounts: type: array items: $ref: '#/components/schemas/PublicContractPersonBankAccount' description: Contas bancárias vinculadas ao cadastro; preserve a representação declarada neste recurso. addresses: type: array items: $ref: '#/components/schemas/PublicContractAddress' description: Endereços vinculados ao cadastro, com município e estado de referência. documents: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. contacts: type: array items: $ref: '#/components/schemas/PublicContractRawContact' description: Pessoas de contato vinculadas ao cadastro. required: - id - emails - phones - bankAccounts - addresses - contacts - documents description: Fornecedor e dados cadastrais e de contato associados. PublicContractUserDetail: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. email_verified_at: type: string nullable: true format: date-time description: Data de verificação do e-mail (null se não verificado). ip: type: string nullable: true description: Endereço IP da requisição que originou a ação. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. two_factor_method: type: string nullable: true description: Método configurado para o segundo fator de autenticação. role: type: string nullable: true description: Nome do perfil de acesso (deve estar cadastrado na empresa). associate_type_name: type: string description: 'Tipo do colaborador: Employee, Intern ou Partner; sem_vinculo quando o usuário nunca teve pessoa associada; vinculo_removido quando o tipo não é reconhecido ou a pessoa associada não existe mais.' enum: - Employee - Intern - Partner - sem_vinculo - vinculo_removido associate_type: type: string description: Classe da pessoa associada ao usuário, conforme o morph persistido; não é a chave textual usada no pedido de criação. nullable: true associate_id: type: string description: UUID da pessoa associada ao usuário; null quando não há vínculo. format: uuid nullable: true required: - id - role - associate_type_name description: Dados públicos do usuário e de seu vínculo com a empresa. PublicContractClient: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. name: type: string description: Nome utilizado para identificar e exibir o registro. code: type: string nullable: true description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. ie: type: string nullable: true description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. im: type: string nullable: true description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. billing_day: type: string nullable: true description: Dia do mês utilizado para o faturamento ou vencimento configurado. client_since: type: string nullable: true format: date description: Data em que passou a ser cliente description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. international: type: boolean description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. nif: type: string nullable: true description: Número de identificação fiscal no país da pessoa domiciliada no exterior. nao_nif: type: string nullable: true description: Motivo de ausência do NIF; use um dos códigos admitidos no enum ou intervalo declarado. comex_vinculo: type: string nullable: true description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada,' comex_moeda: type: string nullable: true description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão' emails: type: array items: $ref: '#/components/schemas/PublicContractCommonEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. phones: type: array items: $ref: '#/components/schemas/PublicContractPhone' description: Números de telefone vinculados ao cadastro e suas classificações. bank_accounts: type: array items: $ref: '#/components/schemas/PublicContractPersonBankAccount' description: Contas bancárias vinculadas ao cadastro, com agência e identificação da instituição. addresses: type: array items: $ref: '#/components/schemas/PublicContractAddress' description: Endereços vinculados ao cadastro, com município e estado de referência. contacts: type: array items: $ref: '#/components/schemas/PublicContractRawContact' description: Pessoas de contato vinculadas ao cadastro. documents: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. required: - id - type - name - code - fantasy_name - cpf - cnpj - ie - im - billing_day - client_since - description - active - international - nif - nao_nif - comex_vinculo - comex_moeda - emails - phones - bank_accounts - addresses - contacts - documents - created_at - updated_at description: Cliente com identificação, contatos, documentos e dados fiscais. PublicContractSubsidiary: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. cnpj: type: string description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. addresses: type: array items: $ref: '#/components/schemas/PublicContractAddress' description: Endereços vinculados ao cadastro, com município e estado de referência. phones: type: array items: $ref: '#/components/schemas/PublicContractCommonPhone' description: Números de telefone vinculados ao cadastro e suas classificações. emails: type: array items: $ref: '#/components/schemas/PublicContractCommonEmail' description: Endereços de e-mail vinculados ao cadastro e suas classificações. fiscal_rps_config: oneOf: - $ref: '#/components/schemas/PublicContractFiscalConfiguration' - type: string nullable: true enum: - null description: Configuração fiscal do emissor para o preenchimento de RPS e NFS-e. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - name - fantasy_name - cnpj - active - addresses - phones - emails - fiscal_rps_config - created_at description: Filial cadastrada e sua configuração fiscal. PublicContractCompactPaginationMeta: type: object properties: current_page: type: integer description: Número da página retornada na consulta paginada. last_page: type: integer description: Número da última página disponível para os filtros da consulta. per_page: type: integer description: Quantidade de registros por página na consulta paginada. total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. required: - current_page - last_page - per_page - total description: Posição e quantidades da página retornada. PublicContractCardReconUser: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. email: type: string nullable: true description: Endereço de e-mail do contato ou usuário associado ao recurso. phone: type: string nullable: true description: Número de telefone do contato, com DDD quando nacional. associate_id: type: string nullable: true format: uuid description: UUID do colaborador vinculado. associate_type: type: string nullable: true description: 'Identificador do tipo de colaborador associado: `App\Models\Employees\Employee`, `App\Models\Intern\Intern`' required: - id - name - email - phone - associate_id - associate_type description: Usuário responsável pela conciliação do cartão. PublicContractCardBillRecon: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. user: oneOf: - $ref: '#/components/schemas/PublicContractCardReconUser' - type: string nullable: true enum: - null description: Usuário associado, ou null quando o sócio ainda não possui acesso. comments: type: string nullable: true description: Comentários associados à análise ou execução do processamento. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. conciliated_at: type: string nullable: true format: date-time description: Instante da conciliação registrada. required: - id - user - comments - status - conciliated_at description: Conciliação legada vinculada à fatura do cartão. PublicContractCardBillAccount: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. unit_price: type: string description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance_paid: type: string description: Total já pago. String decimal de 2 casas, nunca number. balance: type: string description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. due_date: type: string format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. required: - id - description - unit_price - balance_paid - balance - due_date - type - status description: Conta a pagar associada à fatura ou a um adiantamento legado. PublicContractCardBillPayment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. date: type: string format: date-time description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. value_paid: type: number description: Valor pago na liquidação da conta, em reais. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. required: - id - date - description - value_paid - type description: Baixa financeira que compõe a fatura, com dados da obrigação relacionada. PublicContractCardBillSummary: type: object properties: composition_total: type: string description: Total em reais dos lançamentos que compõem a fatura. reference_total: type: string nullable: true description: Total em reais usado como referência para comparar a fatura. payments_total: type: string description: Total em reais dos pagamentos identificados para a fatura. outstanding_total: type: string nullable: true description: Valor em reais ainda em aberto na fatura. credit_balance: type: string description: Crédito em reais disponível após considerar os pagamentos da fatura. difference: type: string nullable: true description: Diferença em reais entre os totais comparados na conciliação. payment_status: type: string description: Situação do pagamento conforme as evidências disponíveis na fatura. reference_source: type: string nullable: true description: Origem do valor utilizado como referência da fatura. reference_basis: type: string nullable: true description: Critério utilizado para estabelecer o total de referência da fatura. embedded_payments_total: type: string description: Total em reais dos pagamentos identificados no conteúdo importado da fatura. payment_evidence_status: type: string description: Situação das evidências disponíveis para confirmar os pagamentos. composition_status: type: string description: Situação da conferência dos lançamentos que compõem a fatura. reconciliation_status: type: string description: Situação da conciliação entre a fatura e os registros do sistema. required: - composition_total - reference_total - payments_total - outstanding_total - credit_balance - difference - payment_status - reference_source - reference_basis - embedded_payments_total - payment_evidence_status - composition_status - reconciliation_status description: Totais exatos da fatura, referência, pagamentos e situação da conciliação. PublicContractCardBill: type: object properties: card_id: type: string format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. summary: $ref: '#/components/schemas/PublicContractCardBillSummary' description: Resumo legível da situação ou avaliação do recurso. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. capabilities: type: object properties: can_pay: type: boolean description: Indica se a fatura pode receber um pagamento no estado atual. can_advance: type: boolean description: Indica se a fatura permite antecipar parcelas no estado atual. can_reconcile: type: boolean description: Indica se a fatura pode ser conciliada no estado atual. can_move: type: boolean description: Indica se os lançamentos podem ser movidos para outra fatura. can_reopen: type: boolean description: Indica se a fatura pode ser reaberta no estado atual. blocking_reasons: type: array items: type: string description: Motivos que impedem executar ações na fatura ou no recurso. required: - can_pay - can_advance - can_reconcile - can_move - can_reopen - blocking_reasons description: Ações disponíveis para a fatura conforme seu estado e as evidências atuais. sync: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. last_synced_at: type: string nullable: true format: date-time description: Data e hora da última sincronização com a origem externa. complete: type: boolean description: Indica se as informações necessárias para a operação estão completas. required: - status - last_synced_at - complete description: Situação da sincronização da fatura com a origem externa. id: type: string format: uuid description: Identificador único do registro no recurso consultado. due: type: string format: date-time description: Data de vencimento da fatura. close: type: string format: date-time description: Data de fechamento da fatura. card_recon: oneOf: - $ref: '#/components/schemas/PublicContractCardBillRecon' - type: string nullable: true enum: - null description: Objeto de conciliação do cartão, ou null se não conciliada. account_bill: oneOf: - $ref: '#/components/schemas/PublicContractCardBillAccount' - type: string nullable: true enum: - null description: Conta a pagar gerada para esta fatura, ou null se não há fatura gerada. accounts_advance: type: array items: $ref: '#/components/schemas/PublicContractCardBillAccount' description: Contas a pagar de adiantamentos legados vinculadas por CardBillAccountAdvance; cada item conserva a identidade da conta a pagar. payments: type: array items: $ref: '#/components/schemas/PublicContractCardBillPayment' description: Baixas financeiras que compõem a fatura, projetadas por PaymentForCardBillResource; o identificador de cada item pertence ao pagamento. required: - card_id - summary - revision - origin - capabilities - sync - id - due - close - card_recon - account_bill - accounts_advance - payments description: Fatura do cartão com resumo financeiro, capacidades, sincronização e vínculos. PublicContractCardPublic: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. last_four: type: string nullable: true description: Últimos quatro dígitos; nulo quando não informados. network: type: string nullable: true description: Bandeira; nula quando não informada. due_day: type: integer description: Dia do mês previsto para o vencimento da obrigação financeira. closing_day: type: integer description: Dia do mês em que ocorre o fechamento da fatura do cartão. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. provider: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. cpf_cnpj: type: string nullable: true description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. required: - id - name - cpf_cnpj - active nullable: true description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. total_invoice: type: number nullable: true description: Total da fatura corrente. Null quando não há fatura aberta. required: - id - name - origin - last_four - network - due_day - closing_day - active - provider - created_at - total_invoice description: Cartão cadastrado com datas de fechamento e vencimento. PublicContractCardOpenFinanceConnection: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. instituicao_id: type: string description: Identificador da instituição financeira na fonte bancária. instituicao: type: string nullable: true description: Instituição financeira responsável pela autorização ou conta. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. produtos: type: array items: type: string description: Produtos bancários abrangidos pela conexão ou autorização. inclui_conta: type: boolean description: Indica se a autorização bancária abrange dados da conta. inclui_cartao: type: boolean description: Indica se a autorização bancária abrange dados de cartões. documento_final: type: string nullable: true description: Quatro últimos caracteres do documento do titular da autorização bancária; nulo em conexões antigas sem titular registrado. documento_da_empresa: type: boolean nullable: true description: Indica se o documento identificado pertence à própria empresa. substitui_conexao_id: type: string nullable: true format: uuid description: Identificador da conexão anterior substituída pela autorização atual. pronta_para_consulta: type: boolean description: Indica se a conexão está utilizável e com dados disponíveis. autorizacao_url: type: string nullable: true description: Endereço para o titular autorizar a conexão bancária. autorizacao_expira_em: type: string nullable: true format: date-time description: Instante de expiração da autorização bancária. ultima_verificacao: type: string nullable: true format: date-time description: Instante da última consulta do estado da autorização. contas: type: array items: $ref: '#/components/schemas/PublicContractOpenFinanceAccount' description: Contas financeiras incluídas no resumo. ready_for_query: type: boolean description: Indica se a conexão está utilizável e com dados disponíveis. required: - id - instituicao_id - instituicao - status - produtos - inclui_conta - inclui_cartao - documento_final - documento_da_empresa - substitui_conexao_id - pronta_para_consulta - autorizacao_url - autorizacao_expira_em - ultima_verificacao - ready_for_query description: Autorização bancária, produtos abrangidos e disponibilidade dos dados. PublicContractCardBillEntry: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. date: type: string format: date description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. card_id: type: string format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. account_id: type: string nullable: true format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. installment_number: type: integer nullable: true description: Número da parcela identificada no lançamento. installment_total: type: integer nullable: true description: Quantidade total de parcelas da compra. required: - id - date - description - amount - payment_method - card_id - account_id - installment_number - installment_total description: Compra ou lançamento financeiro incluído na fatura do cartão. PublicContractCardBillDocument: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. version: type: integer description: Versão do recurso utilizada para identificar alterações concorrentes. original_name: type: string description: Nome original do arquivo enviado pelo usuário. hash: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. reading_status: type: string description: Estado do processamento de leitura do documento. download_url: type: string description: URL de download do documento da cobrança, quando já disponível. facts: oneOf: - type: object properties: source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. confidence: type: string description: Confiança atribuída à leitura do documento; não substitui a conferência. items_complete: type: boolean description: Indica se a leitura documental identificou todos os itens necessários à conferência. missing_fields: type: array items: type: string description: Campos que não puderam ser identificados na leitura do documento. total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. cycle: type: string description: Ciclo mensal identificado para a fatura ou autorização. last_four: type: string description: Últimos quatro dígitos; nulo quando não informados. items: type: array items: oneOf: - type: object properties: payment_id: type: string description: UUID do pagamento local, quando informado na evidência. format: uuid required: - payment_id description: Item documental que informa uma identidade de pagamento. - type: object not: required: - payment_id additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: CardBillEvidenceService::evaluate persiste facts sem impor campos aos itens; flags usa array_column(payment_id), que ignora itens sem essa chave e os trata como evidência insuficiente. As demais chaves do item documental são JSON histórico variável. description: Item de evidência sem payment_id; não comprova correspondência com pagamento local. description: Evidência histórica de item. A presença de payment_id exige UUID; a fonte não garante essa chave em cada item. Não inventa required para satisfazer exemplos. description: Registros que compõem o resultado ou lote desta operação. required: - source - confidence - items_complete - missing_fields - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Fatos registrados pelas fontes e usados na avaliação da regra. flags: type: array items: type: object properties: code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. message: type: string description: Mensagem legível que explica o resultado da operação. evidence: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Evidências de divergência variam por code; CardBillEvidenceService::flags registra expected/observed e totais de comparação. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Evidências da avaliação; objeto vazio quando não há. required: - code - message description: Pontos de atenção encontrados, como gravados pela avaliação. required: - id - version - original_name - hash - created_at - reading_status - download_url - facts - flags description: Versão do PDF anexado à fatura e resultado de sua leitura. PublicContractCommercialFiscalNote: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. download_url: type: string nullable: true description: URL de download do documento da cobrança, quando já disponível. required: - status - number - download_url nullable: true description: Estado e acesso público à nota fiscal do pedido comercial. PublicContractCheckoutDocument: type: object properties: qr_code_base64: type: string description: Imagem do QR Code Pix codificada em base64. copia_e_cola: type: string description: Código Pix copia e cola emitido para o pagamento. expira_em: type: string format: date-time description: Instante em que o documento ou autorização de pagamento expira. redirect_url: type: string description: Endereço de redirecionamento disponibilizado para concluir o pagamento. linha_digitavel: type: string description: Linha digitável do boleto emitido. pdf_url: type: string description: URL de download do PDF fiscal, quando a geração estiver disponível. pdf_base64: type: string description: Conteúdo do PDF do boleto codificado em base64. vencimento: type: string format: date description: Data civil de vencimento do boleto emitido. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. bandeira: type: string description: Bandeira do cartão informada no registro. ultimos_quatro: type: string description: Quatro últimos dígitos do cartão, sem revelar seu número completo. required: [] nullable: true description: Documento de pagamento emitido; os campos disponíveis dependem do instrumento e do estado. PublicContractCreditTopup: type: object properties: fiscal_note: $ref: '#/components/schemas/PublicContractCommercialFiscalNote' description: Resumo da nota fiscal comercial vinculada ao pedido. id: type: string format: uuid description: Identificador único do registro no recurso consultado. idempotency_key: type: string description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. credits: type: integer description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. instrument: type: string description: Meio de pagamento escolhido para a contratação ou recarga. document: $ref: '#/components/schemas/PublicContractCheckoutDocument' description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. confirmed_at: type: string nullable: true format: date-time description: Instante em que a confirmação foi registrada. required: - fiscal_note - id - idempotency_key - status - amount_cents - credits - instrument - document - created_at - confirmed_at description: Recarga de créditos e documento para pagamento do pedido. PublicContractCommercialRefund: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. requested_at: type: string nullable: true format: date-time description: Instante em que a solicitação foi registrada. completed_at: type: string nullable: true format: date-time description: Instante em que a execução ou o atendimento foi concluído. required: - id - status - reason - requested_at - completed_at nullable: true description: Solicitação de estorno do pedido com estado e datas de atendimento. PublicContractCertificateOrder: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. idempotency_key: type: string description: Chave escolhida pelo integrador para identificar uma única intenção de operação. Reutilize a mesma chave com o mesmo conteúdo ao repetir o pedido. product: type: string description: Produto selecionado para a contratação ou recarga. buyer_document: type: string description: CPF ou CNPJ do comprador, conforme o cadastro utilizado na contratação. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. phone: type: string description: Número de telefone do contato, com DDD quando nacional. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. instrument: type: string description: Meio de pagamento escolhido para a contratação ou recarga. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. document: $ref: '#/components/schemas/PublicContractCheckoutDocument' description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. failure_message: type: string nullable: true description: Mensagem pública que explica a falha do pedido. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. confirmed_at: type: string nullable: true format: date-time description: Instante em que a confirmação foi registrada. fulfillment_status: type: string nullable: true description: Estado do atendimento do pedido após a confirmação do pagamento. completed_at: type: string nullable: true format: date-time description: Instante em que a execução ou o atendimento foi concluído. refund: $ref: '#/components/schemas/PublicContractCommercialRefund' description: Resumo da solicitação de estorno vinculada ao pedido. can_complete: type: boolean description: Indica se a conclusão é permitida após conferir os requisitos do recurso. can_refund: type: boolean description: Indica se o pedido pago admite solicitação de estorno. company: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name description: Dados cadastrais da empresa usados no credenciamento. required: - id - idempotency_key - product - buyer_document - email - phone - amount_cents - instrument - status - document - failure_message - created_at - confirmed_at - fulfillment_status - completed_at - refund - can_complete - can_refund description: Pedido de certificado digital com pagamento, atendimento e condições de estorno. PublicContractStorageCharge: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. company_id: type: string format: uuid description: Identificador da empresa à qual o registro pertence. used_bytes: type: integer description: Quantidade de bytes de arquivos registrados em uso. included_bytes: type: integer description: Franquia de armazenamento em bytes; nulo quando não há teto informado. excess_bytes: type: integer description: Quantidade de bytes que excede a franquia considerada. credits: type: integer description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. period: type: string description: Período de referência dos dados apresentados. tariff_version: type: string description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. consented_by: type: string nullable: true description: Identificador do usuário que registrou o consentimento. consented_at: type: string nullable: true format: date-time description: Instante em que o consentimento foi registrado. charged_at: type: string nullable: true format: date-time description: Instante em que o débito de créditos foi registrado. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. required: - id nullable: true description: Registro histórico da medição e cobrança de armazenamento. PublicContractStorageSummary: type: object properties: included: type: boolean description: Indica se o serviço ou uso está incluído na contratação. used_bytes: type: integer description: Quantidade de bytes de arquivos registrados em uso. included_bytes: type: integer nullable: true description: Franquia de armazenamento em bytes; nulo quando não há teto informado. excess_bytes: type: integer description: Quantidade de bytes que excede a franquia considerada. projected_credits: type: integer description: Quantidade de créditos projetada para a cobrança de armazenamento. enabled: type: boolean description: Ativa ou desativa o recurso configurado nesta operação. tariff_version: type: string description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. next_measurement: type: string format: date description: Data prevista para a próxima medição de armazenamento. pending_credits: type: integer description: Créditos pendentes de débito no resumo de armazenamento. latest: $ref: '#/components/schemas/PublicContractStorageCharge' description: Registro mais recente considerado no resumo. required: - included - used_bytes - included_bytes - excess_bytes - projected_credits - enabled - tariff_version - next_measurement - pending_credits - latest description: Uso do armazenamento incluído no plano e medições registradas. PublicContractCreditSummary: type: object properties: balance: type: integer description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. reserved: type: integer description: Créditos ou unidades reservados por operações ainda não concluídas. available: type: integer description: Indica se o recurso está disponível para uso no estado atual. bonus_remaining: type: integer description: Créditos de bônus ainda disponíveis na carteira. recharge_remaining: type: integer description: Créditos provenientes de recargas ainda disponíveis. recovery_debt: type: integer description: Saldo de créditos a recompor antes de liberar novos consumos. billing_email_allowance: $ref: '#/components/schemas/PublicContractBillingEmailAllowance' description: Uso e reserva da franquia de e-mails de cobrança no mês. storage: $ref: '#/components/schemas/PublicContractStorageSummary' description: Uso de armazenamento e situação da franquia contratada. monthly_usage: type: object properties: period: type: string description: Período de referência dos dados apresentados. timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. sms: type: object properties: used: type: integer nullable: true description: Quantidade efetivamente consumida no período. unit: type: string description: Unidade de medida usada na quantidade do consumo ou indicador. limit: type: integer nullable: true description: Quantidade máxima de registros solicitada nesta consulta. required: - used - unit - limit description: Uso, permissão ou configuração do canal SMS. contracts: type: object properties: used: type: integer nullable: true description: Quantidade efetivamente consumida no período. unit: type: string description: Unidade de medida usada na quantidade do consumo ou indicador. limit: type: integer nullable: true description: Quantidade máxima de registros solicitada nesta consulta. required: - used - unit - limit description: Consumo ou registros de contratos no recorte apresentado. whatsapp: type: object properties: used: type: integer nullable: true description: Quantidade efetivamente consumida no período. unit: type: string description: Unidade de medida usada na quantidade do consumo ou indicador. limit: type: integer nullable: true description: Quantidade máxima de registros solicitada nesta consulta. required: - used - unit - limit description: Uso, permissão ou configuração do canal WhatsApp. required: - period - timezone - sms - contracts - whatsapp description: Consumo apurado no mês corrente pelo fuso de cobrança. tariffs: type: array items: $ref: '#/components/schemas/PublicContractTariff' description: Tabela das tarifas em créditos por serviço. updated_at: type: string format: date-time description: Data e hora da última atualização do registro. invitation_seen: type: boolean description: Indica se o usuário já respondeu ao convite de uso do recurso. required: - balance - reserved - available - bonus_remaining - recharge_remaining - recovery_debt - billing_email_allowance - storage - monthly_usage - tariffs - updated_at - invitation_seen description: Saldos da carteira, consumo mensal, franquias e tarifas em créditos. PublicContractCreditEntry: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. company_id: type: string description: Identificador da empresa à qual o registro pertence. reference: type: string description: Referência externa ou de origem usada para identificar a operação. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. credit_source: type: string description: Origem dos créditos movimentados na carteira. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. operation_id: type: string nullable: true format: uuid description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. service: type: string nullable: true description: Serviço ao qual o lançamento de créditos ou consumo se refere. quantity: type: integer description: Quantidade de unidades do serviço ou produto solicitada. credits: type: integer description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. user_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. metadata: type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: CreditEntry.metadata é um JSON de operação, variável conforme serviço e removido em ajustes manuais. description: Metadados complementares persistidos para a operação, variáveis conforme o serviço. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. actor_type: type: string description: 'Origem do responsável pelo consumo: usuário, sistema, atendimento central ou desconhecida.' reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. unit: type: string nullable: true description: Unidade de medida usada na quantidade do consumo ou indicador. unit_credits: type: integer nullable: true description: Custo em créditos por unidade do serviço. tariff_version: type: string nullable: true description: Versão da tabela de tarifas apresentada ao usuário para confirmação do custo. operation_status: type: string nullable: true description: Estado da operação de consumo de créditos associada. account_reference: type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. required: - account_type - account_id nullable: true description: Referência à conta financeira associada ao consumo, quando o usuário pode consultá-la. required: - id - user_id - user_name - actor_type - unit - unit_credits - tariff_version - operation_status - account_reference description: Movimento da carteira com responsável, consumo e referência financeira disponível. PublicContractAutoRecharge: type: object properties: id: type: string nullable: true description: Identificador único do registro no recurso consultado. company_id: type: string nullable: true description: Identificador da empresa à qual o registro pertence. mode: type: string nullable: true description: Modo de funcionamento selecionado para o recurso; consulte as opções do enum. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. status: type: string nullable: true description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. card_last_four: type: string nullable: true description: Quatro últimos dígitos do cartão, usados apenas para identificação visual. consented_by: type: string nullable: true description: Identificador do usuário que registrou o consentimento. consent_version: type: string nullable: true description: Versão dos termos aceita na autorização da cobrança. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. threshold_credits: type: integer nullable: true description: Quantidade de créditos utilizada como limiar para o aviso ou recarga configurada. billing_day: type: integer nullable: true description: Dia do mês utilizado para o faturamento ou vencimento configurado. threshold_cycle: type: integer description: Contador do ciclo de acionamento da recarga por saldo mínimo. threshold_armed: type: boolean description: Indica se a recarga por saldo mínimo está pronta para um novo acionamento. card_on_file: type: boolean description: Indica se existe credencial de cartão armazenada, sem revelar seu conteúdo. consented_at: type: string nullable: true format: date-time description: Instante em que o consentimento foi registrado. next_charge_at: type: string nullable: true format: date-time description: Instante previsto para a próxima cobrança automática. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. mandate_status: type: string nullable: true description: Estado da autorização de débito automático Pix. capabilities: type: object properties: automatic_pix: type: boolean description: Indica se há autorização Pix automática compatível com o ciclo e o valor atuais. required: - automatic_pix description: Ações disponíveis para a fatura conforme seu estado e as evidências atuais. available_payment_methods: type: object properties: monthly: type: array items: type: string description: Configuração ou meios permitidos para a modalidade mensal. threshold: type: array items: type: string description: Limiar configurado para a comparação ou acionamento. required: - monthly - threshold description: Meios de pagamento permitidos por modalidade de recarga automática. mandate: type: object properties: status: type: string nullable: true description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. qrcode_payload: type: string nullable: true description: Disponível somente enquanto pendente, enviado ao provedor, não expirado e sem pedido de cancelamento. qrcode_image_base64: type: string nullable: true description: Imagem do QR Code codificada em base64 para apresentação ao pagador. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. authorized_at: type: string nullable: true format: date-time description: Data e hora em que a autorização foi confirmada pelo pagador. failure_reason: type: string nullable: true description: Motivo registrado para a falha da operação. required: - status - qrcode_payload - qrcode_image_base64 - expires_at - authorized_at - failure_reason nullable: true description: Autorização do pagador para cobranças por PIX Automático. required: - mode - payment_method - amount_cents - status - threshold_credits - billing_day - card_last_four - next_charge_at - capabilities - available_payment_methods - mandate description: Configuração da recarga automática e disponibilidade dos meios de pagamento. PublicContractDataExport: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. file_path: type: string nullable: true description: Caminho do arquivo da importação. data: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. errors: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. expired: type: boolean description: O arquivo passou dos 30 dias e foi apagado. O download responde **410**; solicite o documento required: - id - type - action - status - file_path - data - errors - created_at - updated_at - expires_at - expired description: Exportação dos dados e situação de produção do arquivo. PublicContractRawDataExport: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. file_path: type: string nullable: true description: Caminho do arquivo da importação. data: type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: DataImport.data é cast object contendo estado e contadores variáveis da verificação/importação; DataImportService e leitores por ImportType o atualizam. description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. errors: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. original_file_name: type: string nullable: true description: Nome original do arquivo enviado. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. required: - id description: Exportação dos dados e situação de produção do arquivo. PublicContractRawDataImport: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. action: type: string description: Ação registrada ou solicitada na operação; consulte os valores aceitos neste recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. file_path: type: string nullable: true description: Caminho do arquivo da importação. data: type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: DataImport.data é cast object contendo estado e contadores variáveis da verificação/importação; DataImportService e leitores por ImportType o atualizam. description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. errors: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Em 422, mensagens de validação em PT-BR por nome de campo; ausente quando não há erros estruturados. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. original_file_name: type: string nullable: true description: Nome original do arquivo enviado. deleted_at: type: string nullable: true format: date-time description: Data e hora da exclusão lógica do registro; null quando não excluído. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. required: - id description: Importação de planilha e estado do processamento dos seus dados. PublicContractSubscriptionChange: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. quote_id: type: string format: uuid description: UUID da cotação previamente apresentada para confirmar a contratação ou consumo. change_id: type: string format: uuid description: Identificador da alteração de plano descrita. plan_id: type: string format: uuid description: Identificador do plano de serviço. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. current_plan_name: type: string description: Nome do plano vigente antes da alteração. target_plan_name: type: string description: Nome do plano de destino da alteração. plan_name: type: string description: Nome do plano contratado pela empresa. current_amount_cents: type: integer nullable: true description: Valor recorrente atual da assinatura, em centavos. target_amount_cents: type: integer nullable: true description: Valor recorrente do plano de destino, em centavos. amount_cents: type: integer nullable: true description: Valor monetário em centavos de real; 15000 representa R$ 150,00. billing_cycle: type: string nullable: true description: Periodicidade contratada da cobrança da assinatura. period_starts_at: type: string nullable: true format: date-time description: Início do período contratado ou considerado na cotação. period_ends_at: type: string nullable: true format: date-time description: Fim do período contratado ou considerado na cotação. effective_at: type: string nullable: true format: date-time description: Instante previsto para a alteração de plano produzir efeito. quoted_at: type: string nullable: true format: date-time description: Instante em que a cotação foi criada. expires_at: type: string nullable: true format: date-time description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. after_invoice_id: type: string nullable: true format: uuid description: Fatura após a qual a mudança de plano poderá ser aplicada. review_reason: type: string nullable: true description: Motivo pelo qual a mudança de plano ou o registro exige conferência. breakdown: type: object properties: prorata_cents: type: integer description: Valor proporcional do período remanescente na mudança de plano, em centavos. next_period_cents: type: integer description: Valor do próximo período incluído no pedido, em centavos. next_period_starts_at: type: string nullable: true format: date-time description: Início do próximo período incluído na alteração de plano. next_period_ends_at: type: string nullable: true format: date-time description: Fim do próximo período incluído na alteração de plano. absorbed_invoices: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. period_starts_at: type: string nullable: true format: date-time description: Início do período contratado ou considerado na cotação. period_ends_at: type: string nullable: true format: date-time description: Fim do período contratado ou considerado na cotação. required: - id - amount_cents - period_starts_at - period_ends_at description: Faturas cujo próximo período foi incorporado à cotação do upgrade. required: - prorata_cents - next_period_cents - next_period_starts_at - next_period_ends_at - absorbed_invoices nullable: true description: Composição dos valores que formam a cobrança ou a cotação. allowed_instruments: type: array items: type: string description: Meios de pagamento aceitos para este pedido. payment_url: type: string nullable: true description: Endereço disponibilizado para o pagamento do pedido. required: - id - quote_id - change_id - plan_id - status - origin - current_plan_name - target_plan_name - plan_name - current_amount_cents - target_amount_cents - amount_cents - billing_cycle - period_starts_at - period_ends_at - effective_at - quoted_at - expires_at - after_invoice_id - review_reason - breakdown - allowed_instruments - payment_url description: Cotação ou alteração de plano, valores proporcionais e pedido de pagamento. PublicContractSubscriptionCollection: type: object properties: stage: type: string description: Etapa atual da situação de cobrança da assinatura. days_overdue: type: integer description: Quantidade de dias de atraso da assinatura. original_due_at: type: string nullable: true format: date-time description: Instante do vencimento original com fuso horário; null quando não definido. access_allowed: type: boolean description: Indica se a empresa pode acessar os recursos no estado atual. message: type: string nullable: true description: Mensagem legível que explica o resultado da operação. message_before: type: string nullable: true description: Texto público apresentado antes da ação de regularização. Até 2000 bytes, sem caracteres action_label: type: string nullable: true description: Rótulo da ação de regularização disponível. Até 2000 bytes, sem caracteres de controle. message_after: type: string nullable: true description: Texto público apresentado após a ação de regularização. Até 2000 bytes, sem caracteres suspends_on: type: string nullable: true format: date description: Data prevista de suspensão no formato AAAA-MM-DD; null quando não definida. severity: type: string nullable: true description: Severidade de exibição do aviso de cobrança. can_reactivate: type: boolean description: Indica se a empresa pode solicitar reativação neste estado. reactivation_amount_cents: type: integer nullable: true description: Valor para reativação em centavos de real; null quando não definido. reactivation_breakdown: type: object properties: open_invoices_cents: type: integer description: Saldo de faturas abertas incluídas na reativação, em centavos. next_period_cents: type: integer description: Valor do próximo período incluído no pedido, em centavos. grace_period_cents: type: integer description: Valor correspondente ao período de uso em carência, em centavos. total_cents: type: integer description: Valor total da composição em centavos. invoice_ids: type: array items: type: string format: uuid description: Identificadores das faturas incluídas no cálculo. grace_period_label: type: string description: Texto que identifica o uso durante o período de carência. required: - open_invoices_cents - next_period_cents - grace_period_cents - total_cents - invoice_ids - grace_period_label nullable: true description: Composição do saldo e do uso em carência incluídos na reativação. outstanding_amount_cents: type: integer description: Valor pendente em centavos de real. legacy_debt: type: boolean description: Indica existência de pendência histórica de cobrança. required: - stage - days_overdue - original_due_at - access_allowed - message - message_before - action_label - message_after - suspends_on - severity - can_reactivate - reactivation_amount_cents - reactivation_breakdown - outstanding_amount_cents - legacy_debt description: Situação da cobrança e condições para manter acesso ou reativar a assinatura. PublicContractRevenueReview: type: object properties: annual_protected: type: boolean description: Indica se o ciclo anual protege a assinatura da revisão durante o período contratado. protected_until: type: string nullable: true format: date-time description: Fim do período protegido contra revisão de enquadramento. next_review_at: type: string nullable: true format: date-time description: Instante previsto para a próxima revisão de enquadramento da assinatura. estimate_status: type: string description: Estado da estimativa calculada com os dados disponíveis. annualized_amount_cents: type: integer nullable: true description: Projeção anual dos recebimentos registrados, em centavos. received_amount_cents: type: integer nullable: true description: Recebimentos efetivamente registrados usados na projeção, em centavos. observed_days: type: integer description: Quantidade de dias de histórico usada na estimativa. is_projection: type: boolean description: Indica se o valor apresentado é uma projeção a partir do período observado. calculated_at: type: string nullable: true format: date-time description: Instante em que o cálculo apresentado foi produzido. estimated_plan_slug: type: string nullable: true description: Código comercial do plano estimado. estimated_plan_name: type: string nullable: true description: Nome do plano estimado com base nos recebimentos registrados. estimated_amount_cents: type: integer nullable: true description: Valor estimado do enquadramento de plano, em centavos. notice_days: type: integer description: Antecedência em dias prevista para o aviso de revisão. basis: type: string description: Regime efetivo usado na execução, incluindo o fallback para relatórios legados. disclaimer: type: string description: Limitação de interpretação apresentada junto da estimativa. required: - annual_protected - protected_until - next_review_at - estimate_status - annualized_amount_cents - received_amount_cents - observed_days - is_projection - calculated_at - estimated_plan_slug - estimated_plan_name - estimated_amount_cents - notice_days - basis - disclaimer description: Estimativa de enquadramento baseada nos recebimentos registrados e suas limitações. PublicContractSubscriptionInvoice: type: object properties: absorbed_by_order: type: string nullable: true description: Número do pedido de upgrade que absorveu esta fatura. payment_application_status: type: string nullable: true description: Estado da aplicação do pagamento ao acesso ou à alteração de plano. payment_review_reason: type: string nullable: true description: Motivo pelo qual o pagamento exige revisão antes de ser aplicado. upgrade_status: type: string nullable: true description: Estado da mudança de plano vinculada ao pedido de upgrade. target_plan_name: type: string nullable: true description: Nome do plano de destino da alteração. order_type: type: string description: Tipo do pedido de cobrança, como contratação, renovação ou upgrade. is_upgrade: type: boolean description: Indica se o pedido corresponde a uma mudança para outro plano. settlement_only: type: boolean description: Indica que o pedido serve apenas para quitar saldo existente. automatic_card: type: boolean description: Indica se há cobrança automática por cartão habilitada para a assinatura. full_recurring_amount_cents: type: integer nullable: true description: Valor recorrente integral do plano de destino, em centavos. payable_until: type: string nullable: true format: date-time description: Instante limite para pagar o pedido de alteração de plano. allowed_instruments: type: array items: type: string description: Meios de pagamento aceitos para este pedido. id: type: string format: uuid description: Identificador único do registro no recurso consultado. fiscal_note: $ref: '#/components/schemas/PublicContractCommercialFiscalNote' description: Resumo da nota fiscal comercial vinculada ao pedido. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. paid_cents: type: integer description: Valor já recebido para a fatura por lançamento manual, em centavos. balance_cents: type: integer nullable: true description: Saldo da fatura ainda a pagar, em centavos. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. due_at: type: string nullable: true format: date-time description: Instante de vencimento considerado na cobrança. settled_at: type: string nullable: true format: date-time description: Data e hora em que a liquidação financeira foi confirmada. settled_by_id: type: string nullable: true format: uuid description: Identificador do pedido que quitou a obrigação original. reactivation_of_id: type: string nullable: true format: uuid description: Identificador da fatura cuja reativação originou este pedido. settlement_of_id: type: string nullable: true format: uuid description: Identificador da fatura quitada por este pedido de acerto. payment_state: type: string description: Situação pública da cobrança da fatura, considerando pagamento, atraso e absorção. payment_url: type: string nullable: true description: Endereço disponibilizado para o pagamento do pedido. required: - payment_application_status - payment_review_reason - upgrade_status - target_plan_name - order_type - is_upgrade - settlement_only - automatic_card - full_recurring_amount_cents - payable_until - allowed_instruments - id - fiscal_note - status - amount_cents - paid_cents - balance_cents - created_at - due_at - settled_at - settled_by_id - reactivation_of_id - settlement_of_id - payment_state - payment_url description: Fatura da assinatura com saldo, pagamento, aplicação e eventual absorção por upgrade. PublicContractSubscription: type: object properties: scheduled_change: oneOf: - $ref: '#/components/schemas/PublicContractSubscriptionChange' - type: string nullable: true enum: - null description: Alteração de plano programada pelo atendimento, contratação ou enquadramento. pending_upgrade: oneOf: - $ref: '#/components/schemas/PublicContractSubscriptionChange' - type: string nullable: true enum: - null description: Alteração de plano solicitada pelo cliente que permanece pendente. id: type: string format: uuid description: Identificador único do registro no recurso consultado. plan_name: type: string description: Nome do plano contratado pela empresa. access_plan: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. required: - id - name nullable: true description: Plano que atualmente concede acesso à empresa. billing_cycle: type: string description: Periodicidade contratada da cobrança da assinatura. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. amount_cents: type: integer description: Valor monetário em centavos de real; 15000 representa R$ 150,00. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. automatic_card: type: boolean description: Indica se há cobrança automática por cartão habilitada para a assinatura. automatic_pix: type: boolean description: Indica se há autorização Pix automática compatível com o ciclo e o valor atuais. revenue_review: $ref: '#/components/schemas/PublicContractRevenueReview' description: Estimativa e prazos da revisão do plano baseada em recebimentos registrados. period_starts_at: type: string nullable: true format: date-time description: Início do período contratado ou considerado na cotação. period_ends_at: type: string nullable: true format: date-time description: Fim do período contratado ou considerado na cotação. renewal_canceled_at: type: string nullable: true format: date-time description: Instante do cancelamento da renovação automática da assinatura. refund_eligible: type: boolean description: Indica se a assinatura atende aos critérios de solicitação de estorno. refund_status: type: string nullable: true description: Estado da solicitação de estorno. refund_reason: type: string nullable: true description: Motivo registrado para a solicitação de estorno. can_cancel: type: boolean description: Indica se a renovação da assinatura pode ser cancelada no estado atual. can_upgrade: type: boolean description: Indica se a assinatura admite uma mudança de plano neste momento. upgrade_unavailable_reason: type: string nullable: true description: Mensagem do impedimento atual para a mudança de plano. upgrade_unavailable_code: type: string nullable: true description: Código do impedimento atual para a mudança de plano. access_active: type: boolean description: Indica se a assinatura permite acesso no estado atual da cobrança. collection: $ref: '#/components/schemas/PublicContractSubscriptionCollection' description: Em 402, resumo público da situação da assinatura; somente os campos listados são expostos. invoices: type: array items: $ref: '#/components/schemas/PublicContractSubscriptionInvoice' description: Faturas e pedidos de cobrança relacionados à assinatura. required: - scheduled_change - pending_upgrade - id - plan_name - access_plan - billing_cycle - status - amount_cents - payment_method - automatic_card - automatic_pix - revenue_review - period_starts_at - period_ends_at - renewal_canceled_at - refund_eligible - refund_status - refund_reason - can_cancel - can_upgrade - upgrade_unavailable_reason - upgrade_unavailable_code - access_active - collection - invoices description: Assinatura vigente, acesso, cobrança, revisões e faturas relacionadas. PublicContractGovernanceCheck: type: object properties: rule_id: type: string description: Código da regra de governança associada à avaliação. rule_code: type: string description: Código da regra de governança associada à avaliação. rule_version: type: string description: Versão da definição da regra de governança. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. summary: type: string description: Resumo legível da situação ou avaliação do recurso. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. priority: type: string description: Prioridade atribuída à ocorrência ou avaliação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. engine: type: string description: Motor utilizado para produzir a avaliação. weight: type: integer description: Peso atribuído à regra na composição da prioridade. score: type: integer description: Nota da avaliação; nula fora do status complete. facts: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Fatos por detector C/P/R são produzidos por CommonRuleFacts e DirectionalRuleFacts; chaves dependem da regra, não são um Resource fixo. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Fatos registrados pelas fontes e usados na avaliação da regra. evidence_refs: type: array items: type: string description: Referências às fontes usadas na avaliação. subject_refs: type: array items: type: string description: Referências às entidades avaliadas pela regra. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. independent_event_key: type: string nullable: true description: Identificação do evento independente usada para evitar pontuação duplicada. material_evidence_fingerprint: type: string nullable: true description: Impressão da evidência material usada para reconhecer a mesma ocorrência. evaluated_at: type: string nullable: true format: date-time description: Instante de produção da avaliação. evaluations: type: array items: $ref: '#/components/schemas/PublicContractGovernanceCheck' description: Resultados individuais que compõem uma verificação agregada. required: - rule_id - rule_code - rule_version - title - summary - status - priority - policy_version - engine - weight - score - facts - evidence_refs - subject_refs - limitations - independent_event_key - material_evidence_fingerprint - evaluated_at description: Verificação de uma regra com fatos, referências, cobertura e resultado. PublicContractGovernanceRisk: type: object properties: score: type: integer description: Nota da avaliação; nula fora do status complete. priority: type: string description: Prioridade atribuída à ocorrência ou avaliação. coverage: type: object properties: evaluated: type: integer description: Quantidade de verificações efetivamente avaliadas. applicable: type: integer description: Quantidade de verificações aplicáveis ao universo analisado. not_evaluated: type: integer description: Quantidade de verificações aplicáveis que não puderam ser avaliadas. required: - evaluated - applicable - not_evaluated description: Cobertura efetivamente medida na leitura ou avaliação. contributions: type: array items: type: object properties: independent_event_key: type: string description: Identificação do evento independente usada para evitar pontuação duplicada. rule_codes: type: array items: type: string description: Códigos das regras que contribuíram para a ocorrência. weight: type: integer description: Peso atribuído à regra na composição da prioridade. score: type: integer description: Nota da avaliação; nula fora do status complete. required: - independent_event_key - rule_codes - weight - score description: Contribuições dos eventos independentes para a pontuação de risco. required: - score - priority - coverage - contributions description: Risco calculado com contribuições de eventos independentes e cobertura medida. PublicContractGovernancePayment: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. date: type: string format: date description: Data de referência da operação financeira. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. principal: type: string nullable: true description: Parcela do pagamento atribuída ao valor principal da obrigação. reversed: type: boolean description: Indica se o lançamento foi estornado e deve ser excluído da base. bank_amount: type: string nullable: true description: Valor bancário atribuível ao pagamento; nulo quando a alocação não é verificável. bank_ref: type: string nullable: true format: uuid description: Identificador da evidência bancária usada na baixa. bank_source: type: string nullable: true description: Origem da evidência bancária atribuída ao pagamento. bank_confidence: type: string nullable: true description: Qualidade da procedência da evidência bancária, sem afirmar legitimidade. receipt: type: boolean nullable: true description: Comprovante do pagamento ou recibo fiscal, conforme o tipo declarado neste recurso. receipt_attachment_id: type: string nullable: true format: uuid description: UUID do anexo de comprovante associado ao pagamento. receipt_status: type: string description: Estado de disponibilidade ou avaliação do comprovante. payment_method: type: string nullable: true description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. reconciled: type: boolean description: Indica se a conta já foi conciliada. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. fiscal_eligible: type: boolean description: Indica se o pagamento integra a base de cobertura fiscal. fiscal_amount: type: string nullable: true description: Valor fiscal alocado à baixa; nulo quando a cobertura é indeterminada. classification: type: string description: Classificação financeira explícita; não é inferida automaticamente de texto livre. destination: type: string nullable: true description: Destino financeiro identificado na evidência, quando não está mascarado. components: type: object properties: interest: type: string description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. penalty: type: string description: Multa aplicada à obrigação financeira; a modalidade percentual ou fixa depende da operação. charges: type: string description: Encargos adicionais incidentes sobre o pagamento, em reais. discount_granted: type: string description: Desconto concedido na liquidação da conta, em reais. discount_obtained: type: string description: Desconto obtido na liquidação da conta, em reais. fed_retention: type: string description: Valor das retenções federais no pagamento, em reais. iss_retention: type: string description: Valor do ISS retido no pagamento, em reais. required: - interest - penalty - charges - discount_granted - discount_obtained - fed_retention - iss_retention description: Componentes que formam o valor financeiro apresentado. allocation_determined: type: boolean description: Indica se foi possível determinar a alocação monetária exclusiva da baixa. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. required: - id - date - amount - principal - reversed - bank_amount - bank_ref - bank_source - bank_confidence - receipt - receipt_attachment_id - receipt_status - payment_method - reconciled - cashbox_id - fiscal_eligible - fiscal_amount - classification - destination - components - allocation_determined - limitations description: Baixa financeira projetada para a avaliação de governança. PublicContractGovernanceSnapshot: type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. evaluated_at: type: string format: date-time description: Instante de produção da avaliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. balance: type: string description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. currency: type: string description: Código da moeda da movimentação, como BRL para real brasileiro. currency_basis: type: string description: Explicação da moeda e da base monetária usadas no cálculo. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. due_date: type: string nullable: true format: date description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. party: type: object properties: id: type: string nullable: true format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. document: type: string nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. required: - id - type - document description: Identificação da parte relacionada à obrigação financeira. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. document_refs: type: array items: type: string format: uuid description: Identificadores dos documentos relacionados à conta. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. documents: type: string description: Documentos vinculados ao cadastro, com seus anexos e exigências. payments: type: array items: $ref: '#/components/schemas/PublicContractGovernancePayment' description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando facts: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: SnapshotService::make e DocumentFacts::facts indexam observações heterogêneas por regra legada Gxx; cada detector lê suas chaves próprias. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Fatos registrados pelas fontes e usados na avaliação da regra. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. revision: type: string description: Revisão do cadastro contra a qual o resultado foi gravado. material_revision: type: string description: Revisão dos dados materiais da conta, separada da política de avaliação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. rule_facts: oneOf: - type: object additionalProperties: type: array items: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: CommonRuleFacts/DirectionalRuleFacts retornam observações com fatos próprios de cada detector, referências e completude. x-map-reason: RuleFactsService::enrich indexa listas de observações por código C/P/R habilitado na política. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Observações indexadas pelo código da regra, usadas pelo motor tradicional. extraction: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. analyzed_revision: type: integer nullable: true description: Revisão do cadastro que foi de fato analisada. documents: type: array items: $ref: '#/components/schemas/PublicContractAdherenceDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. flags: type: array items: $ref: '#/components/schemas/PublicContractAdherenceFlag' description: Pontos de atenção encontrados, como gravados pela avaliação. required: - status - revision - analyzed_revision - documents - flags nullable: true description: Resultado da leitura documental disponível para a conta. fiscal_documents: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. exclusive: type: boolean description: Indica se o documento fiscal pertence exclusivamente à conta avaliada. emission: type: string nullable: true description: Data/hora de emissão no formato `Y-m-d H:i:s`. required: - id - status - amount - exclusive - emission description: Documentos fiscais relacionados à conta e dados de alocação. card_bill: type: object properties: card_bill_id: type: string format: uuid description: UUID da fatura pertencente ao cartão informado na URL. card_id: type: string format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. document: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. version: type: integer description: Versão do recurso utilizada para identificar alterações concorrentes. hash: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. reading_status: type: string description: Estado do processamento de leitura do documento. bill_revision: type: integer description: Revisão da fatura em que o documento foi anexado. facts: oneOf: - type: object properties: source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. confidence: type: string description: Confiança atribuída à leitura do documento; não substitui a conferência. items_complete: type: boolean description: Indica se a leitura documental identificou todos os itens necessários à conferência. missing_fields: type: array items: type: string description: Campos que não puderam ser identificados na leitura do documento. total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. cycle: type: string description: Ciclo mensal identificado para a fatura ou autorização. last_four: type: string description: Últimos quatro dígitos; nulo quando não informados. items: type: array items: oneOf: - type: object properties: payment_id: type: string description: UUID do pagamento local, quando informado na evidência. format: uuid required: - payment_id description: Item documental que informa uma identidade de pagamento. - type: object not: required: - payment_id additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: CardBillEvidenceService::evaluate persiste facts sem impor campos aos itens; flags usa array_column(payment_id), que ignora itens sem essa chave e os trata como evidência insuficiente. As demais chaves do item documental são JSON histórico variável. description: Item de evidência sem payment_id; não comprova correspondência com pagamento local. description: Evidência histórica de item. A presença de payment_id exige UUID; a fonte não garante essa chave em cada item. Não inventa required para satisfazer exemplos. description: Registros que compõem o resultado ou lote desta operação. required: - source - confidence - items_complete - missing_fields - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Fatos registrados pelas fontes e usados na avaliação da regra. flags: type: array items: type: object properties: code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. message: type: string description: Mensagem legível que explica o resultado da operação. evidence: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: Evidências de divergência variam por code; CardBillEvidenceService::flags registra expected/observed e totais de comparação. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Evidências da avaliação; objeto vazio quando não há. required: - code - message description: Pontos de atenção encontrados, como gravados pela avaliação. required: - id - version - hash - reading_status - bill_revision - facts - flags nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. required: - card_bill_id - card_id - revision - document description: Fatura do cartão com resumo, revisão e capacidades disponíveis. required: - account_type - account_id - evaluated_at - amount - balance - currency - currency_basis - status - due_date - created_at - party - category_id - document_number - document_refs - installment - installments - recurrence_id - documents - payments - facts - limitations - revision - material_revision - policy_version - rule_facts description: Retrato material da conta e de suas evidências usado pela governança. PublicContractGovernanceEvent: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. occurrence_id: type: string format: uuid description: Identificador da ocorrência de governança relacionada. actor_id: type: string format: uuid description: Identificador do usuário responsável pela ação registrada. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. note: type: string nullable: true description: Anotação de acompanhamento ou justificativa da decisão registrada. created_at: type: string description: Data e hora em que o registro foi criado. outcome: type: string nullable: true description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. assigned_to: type: string nullable: true format: uuid description: Identificador do usuário responsável por acompanhar a ocorrência. required: - id description: Evento imutável de revisão da ocorrência. PublicContractGovernanceOccurrenceRule: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. occurrence_id: type: string format: uuid description: Identificador da ocorrência de governança relacionada. evaluation_id: type: string format: uuid description: Identificador da avaliação registrada. rule_code: type: string description: Código da regra de governança associada à avaliação. created_at: type: string description: Data e hora em que o registro foi criado. required: - id description: Vínculo histórico entre a ocorrência e a avaliação que identificou uma regra. PublicContractGovernanceEvaluation: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. revision: type: string description: Revisão do cadastro contra a qual o resultado foi gravado. engine: type: string description: Motor utilizado para produzir a avaliação. operation_id: type: string nullable: true format: uuid description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. snapshot: $ref: '#/components/schemas/PublicContractGovernanceSnapshot' description: Retrato dos dados materiais e evidências disponíveis no momento da avaliação. result: type: object nullable: true additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: GovernanceEvaluation.result persiste motores tradicional/IA/fallback e versões históricas; campos adicionais dependem do motor. description: Resultado produzido pela execução ou pelo cálculo consultado. created_at: type: string description: Data e hora em que o registro foi criado. material_revision: type: string nullable: true description: Revisão dos dados materiais da conta, separada da política de avaliação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. stale: type: boolean description: Indica que a avaliação pertence a uma revisão diferente da conta atual. required: - id description: Avaliação histórica da conta, seu retrato material e resultado do motor. PublicContractGovernanceOccurrence: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. rule_code: type: string description: Código da regra de governança associada à avaliação. rule_version: type: string description: Versão da definição da regra de governança. independent_event_key: type: string description: Identificação do evento independente usada para evitar pontuação duplicada. fingerprint: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. previous_occurrence_id: type: string nullable: true format: uuid description: Identificador da ocorrência anterior ligada à mesma evolução de evidência. evaluation_id: type: string format: uuid description: Identificador da avaliação registrada. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. summary: type: string description: Resumo legível da situação ou avaliação do recurso. priority: type: string description: Prioridade atribuída à ocorrência ou avaliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. evidence: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: GovernanceOccurrence.evidence persiste fatos e agrupamentos por motor/regra; GovernanceOccurrencePresenter preserva a evidência imutável. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Evidências da avaliação; objeto vazio quando não há. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. created_at: type: string description: Data e hora em que o registro foi criado. score: type: integer description: Nota da avaliação; nula fora do status complete. weight: type: integer description: Peso atribuído à regra na composição da prioridade. engine: type: string description: Motor utilizado para produzir a avaliação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. events: type: array items: $ref: '#/components/schemas/PublicContractGovernanceEvent' description: Eventos registrados no histórico do recurso. triggered_rules: type: array items: $ref: '#/components/schemas/PublicContractGovernanceOccurrenceRule' description: Vínculos imutáveis entre a ocorrência e as regras que a identificaram. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. outcome: type: string nullable: true description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. assigned_to: type: string nullable: true format: uuid description: Identificador do usuário responsável por acompanhar a ocorrência. original_score: type: integer description: Pontuação registrada originalmente na ocorrência. original_priority: type: string description: Prioridade registrada originalmente na ocorrência. original_policy_version: type: string description: Versão da política registrada na criação da ocorrência. score_measured: type: boolean description: Indica se a pontuação foi medida; registros legados podem manter apenas a prioridade. ordering_note: type: string nullable: true description: Explicação sobre a pontuação ou prioridade preservada do histórico. rule_codes: type: array items: type: string description: Códigos das regras que contribuíram para a ocorrência. effective_rule_codes: type: array items: type: string description: Códigos das regras atuais correspondentes às evidências da ocorrência. active_rule_codes: type: array items: type: string description: Códigos das regras associadas à ocorrência e habilitadas na política atual. rule_title: type: string description: Título público da regra associada à ocorrência. required: - id - status - outcome - assigned_to - events - triggered_rules - original_score - original_priority - original_policy_version - score - weight - priority - score_measured - ordering_note - policy_version - rule_codes - effective_rule_codes - active_rule_codes description: Ocorrência de governança com evidências, histórico e ordenação pela política atual. PublicContractGovernanceOccurrenceListing: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. rule_code: type: string description: Código da regra de governança associada à avaliação. rule_version: type: string description: Versão da definição da regra de governança. independent_event_key: type: string description: Identificação do evento independente usada para evitar pontuação duplicada. fingerprint: type: string description: Resumo criptográfico usado para identificar conteúdo ou revisão sem reproduzi-los. previous_occurrence_id: type: string nullable: true format: uuid description: Identificador da ocorrência anterior ligada à mesma evolução de evidência. evaluation_id: type: string format: uuid description: Identificador da avaliação registrada. title: type: string description: Título pelo qual o contrato ou documento será apresentado aos participantes. summary: type: string description: Resumo legível da situação ou avaliação do recurso. priority: type: string description: Prioridade atribuída à ocorrência ou avaliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. evidence: oneOf: - type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: GovernanceOccurrence.evidence persiste fatos e agrupamentos por motor/regra; GovernanceOccurrencePresenter preserva a evidência imutável. - type: array items: $ref: '#/components/schemas/PublicContractStoredJsonValue' maxItems: 0 description: Evidências da avaliação; objeto vazio quando não há. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. created_at: type: string description: Data e hora em que o registro foi criado. score: type: integer description: Nota da avaliação; nula fora do status complete. weight: type: integer description: Peso atribuído à regra na composição da prioridade. engine: type: string description: Motor utilizado para produzir a avaliação. policy_version: type: string description: Versão da política de governança aplicada ao resultado. events: type: array items: $ref: '#/components/schemas/PublicContractGovernanceEvent' description: Eventos registrados no histórico do recurso. triggered_rules: type: array items: $ref: '#/components/schemas/PublicContractGovernanceOccurrenceRule' description: Vínculos imutáveis entre a ocorrência e as regras que a identificaram. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. outcome: type: string nullable: true description: Resultado da análise da ocorrência; utilize uma das opções aceitas no enum. assigned_to: type: string nullable: true format: uuid description: Identificador do usuário responsável por acompanhar a ocorrência. original_score: type: integer description: Pontuação registrada originalmente na ocorrência. original_priority: type: string description: Prioridade registrada originalmente na ocorrência. original_policy_version: type: string description: Versão da política registrada na criação da ocorrência. score_measured: type: boolean description: Indica se a pontuação foi medida; registros legados podem manter apenas a prioridade. ordering_note: type: string nullable: true description: Explicação sobre a pontuação ou prioridade preservada do histórico. rule_codes: type: array items: type: string description: Códigos das regras que contribuíram para a ocorrência. effective_rule_codes: type: array items: type: string description: Códigos das regras atuais correspondentes às evidências da ocorrência. active_rule_codes: type: array items: type: string description: Códigos das regras associadas à ocorrência e habilitadas na política atual. rule_title: type: string description: Título público da regra associada à ocorrência. first_review_at: type: string nullable: true format: date-time description: Instante da primeira revisão registrada para a ocorrência. seconds_to_first_review: type: number nullable: true description: Tempo em segundos entre a criação da ocorrência e sua primeira revisão. required: - id - status - outcome - assigned_to - events - triggered_rules - original_score - original_priority - original_policy_version - score - weight - priority - score_measured - ordering_note - policy_version - rule_codes - effective_rule_codes - active_rule_codes - first_review_at - seconds_to_first_review description: Ocorrência de governança com evidências, histórico e ordenação pela política atual. PublicContractGovernanceReportAccountRow: type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. limitations: type: array items: type: string description: Limitações conhecidas dos dados ou do resultado apresentado. payment: $ref: '#/components/schemas/PublicContractGovernancePayment' description: Pagamento da conta incluído na linha do relatório de governança, conforme o retrato usado no relatório. related_accounts: type: array items: type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. required: - account_type - account_id description: Contas financeiras relacionadas ao mesmo pagamento ou evidência. cash_amount: type: string description: Valor efetivamente liquidado antes da separação da base fiscal. principal: type: string nullable: true description: Parcela do pagamento atribuída ao valor principal da obrigação. covered: type: string nullable: true description: Valor da base fiscal com cobertura identificada. category: type: string description: Categoria financeira vinculada ao lançamento. documentation: type: string description: Situação da documentação da obrigação financeira. document_refs: type: array items: type: string format: uuid description: Identificadores dos documentos relacionados à conta. independent_observations: type: integer description: Quantidade de observações independentes na amostra comparável. median: type: string nullable: true description: Mediana monetária da amostra comparável; nulo quando a amostra é insuficiente. observed_amount: type: string description: Valor da conta avaliada na comparação com a amostra. difference: type: string nullable: true description: Diferença em reais entre os totais comparados na conciliação. threshold: type: number nullable: true description: Limiar configurado para a comparação ou acionamento. reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. payments: type: array items: type: object properties: payment_id: type: string format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. principal: type: string nullable: true description: Parcela do pagamento atribuída ao valor principal da obrigação. components: type: object properties: interest: type: string description: Juros aplicados à obrigação financeira, conforme a modalidade e unidade da operação. penalty: type: string description: Multa aplicada à obrigação financeira; a modalidade percentual ou fixa depende da operação. charges: type: string description: Encargos adicionais incidentes sobre o pagamento, em reais. discount_granted: type: string description: Desconto concedido na liquidação da conta, em reais. discount_obtained: type: string description: Desconto obtido na liquidação da conta, em reais. fed_retention: type: string description: Valor das retenções federais no pagamento, em reais. iss_retention: type: string description: Valor do ISS retido no pagamento, em reais. required: - interest - penalty - charges - discount_granted - discount_obtained - fed_retention - iss_retention nullable: true description: Componentes que formam o valor financeiro apresentado. required: - payment_id - principal - components description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. due_date: type: string nullable: true format: date description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. tolerance_policy: type: string nullable: true description: Política de tolerância disponível para avaliar os prazos; nulo quando não definida. destinations: type: array items: type: string description: Destinos financeiros distintos observados nas baixas. changes: type: array items: type: object properties: before: oneOf: - type: array items: type: string - type: object properties: payments: type: array items: $ref: '#/components/schemas/PublicContractGovernancePayment' description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando document_refs: type: array items: type: string format: uuid description: Identificadores dos documentos relacionados à conta. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. party: type: object properties: id: type: string nullable: true format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. document: type: string nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. required: - id - type - document description: Identificação da parte relacionada à obrigação financeira. required: - payments - document_refs - amount - party description: Dados registrados antes da alteração. after: oneOf: - type: array items: type: string - type: object properties: payments: type: array items: $ref: '#/components/schemas/PublicContractGovernancePayment' description: Baixas registradas na conta, como registros brutos de pagamento. Vazia quando document_refs: type: array items: type: string format: uuid description: Identificadores dos documentos relacionados à conta. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. party: type: object properties: id: type: string nullable: true format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. document: type: string nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. required: - id - type - document description: Identificação da parte relacionada à obrigação financeira. required: - payments - document_refs - amount - party description: Dados registrados após a alteração. observed_at: type: string format: date-time description: Instante em que o dado foi observado na fonte. actor_id: type: string nullable: true format: uuid description: Identificador do usuário responsável pela ação registrada. required: - before - after - observed_at - actor_id description: Alterações observadas entre revisões registradas. party: type: object properties: id: type: string nullable: true format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. document: type: string nullable: true description: Documento de identificação ou arquivo documental, conforme o tipo e formato deste schema. required: - id - type - document description: Identificação da parte relacionada à obrigação financeira. account_count: type: integer description: Quantidade de contas financeiras no recorte informado. party_amount: type: string description: Valor total das contas atribuídas à mesma parte no recorte. meaning: type: string description: Explicação de como interpretar o valor ou a data apresentada. candidates: type: array items: anyOf: - type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. direction: type: string description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. currency: type: string description: Código da moeda da movimentação, como BRL para real brasileiro. date: type: string format: date description: Data de referência da operação financeira. source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. required: - id - amount - direction - currency - date - source - type: object properties: account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. shared_refs: type: array items: type: string format: uuid description: Documentos compartilhados pelas contas candidatas à comparação. same_number: type: boolean description: Indica se os documentos comparados possuem o mesmo número informado. required: - account_type - account_id - shared_refs - same_number description: Registros candidatos à composição ou comparação solicitada; não representam vínculo confirmado. material_revision_count: type: integer description: Quantidade de revisões materiais observadas no histórico. measured_since: type: string nullable: true format: date-time description: Início do histórico efetivamente medido pela funcionalidade. checks: type: object additionalProperties: $ref: '#/components/schemas/PublicContractGovernanceCheck' x-map-reason: AntifraudEngine::evaluate indexa checks pelo código do catálogo de regras; todos os valores seguem baseCheck. description: Verificações realizadas, identificadas pelo código da regra. identity_present: type: boolean description: Indica se há documento de identificação disponível para a parte. extraction: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. analyzed_revision: type: integer nullable: true description: Revisão do cadastro que foi de fato analisada. documents: type: array items: $ref: '#/components/schemas/PublicContractAdherenceDocument' description: Documentos vinculados ao cadastro, com seus anexos e exigências. flags: type: array items: $ref: '#/components/schemas/PublicContractAdherenceFlag' description: Pontos de atenção encontrados, como gravados pela avaliação. required: - status - revision - analyzed_revision - documents - flags nullable: true description: Resultado da leitura documental disponível para a conta. required: - account_type - account_id - amount - status - limitations description: Linha do relatório de consulta; as colunas variam conforme o código R01 a R23 selecionado. PublicContractGovernanceReportRow: anyOf: - $ref: '#/components/schemas/PublicContractGovernanceReportAccountRow' - $ref: '#/components/schemas/PublicContractGovernanceOccurrenceListing' - type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. account_type: type: string description: Tipo da conta financeira consultada ou vinculada; use as opções aceitas nesta operação. account_id: type: string format: uuid description: Identificador da conta financeira no escopo da empresa autenticada. operation_id: type: string nullable: true format: uuid description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. execution: oneOf: - $ref: '#/components/schemas/PublicContractGovernanceAnalysis' - type: string nullable: true enum: - null description: Metadados do processamento realizado pelo motor de análise. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. operation_status: type: string nullable: true description: Estado da operação de consumo de créditos associada. reused: type: boolean description: Indica se a avaliação reutilizou uma análise já adquirida. credits: type: integer nullable: true description: Quantidade de créditos atribuída ao consumo, recarga ou estorno. measured_since: type: string nullable: true format: date-time description: Início do histórico efetivamente medido pela funcionalidade. required: - id - account_type - account_id - operation_id - execution - created_at - amount - operation_status - reused - credits - measured_since description: 'Linha de relatório de governança: conta investigada, ocorrência revisada ou consumo da análise.' PublicContractRawOfxTransaction: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. ofx_id: type: string format: uuid description: Identificador do extrato OFX ao qual o registro pertence. payment_id: type: string nullable: true format: uuid description: UUID do pagamento vinculado ao lançamento financeiro. unique: type: string description: Identificador FITID do lançamento no arquivo OFX. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. memo: type: string nullable: true description: Histórico textual do movimento informado no extrato OFX. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. justification: type: string nullable: true description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. date: type: string format: date-time description: Data de referência da operação financeira. timezone: type: string nullable: true description: Fuso horário utilizado para interpretar datas e horários da regra. sic: type: string nullable: true description: Código de classificação informado no lançamento OFX. check_number: type: string nullable: true description: Número do cheque informado no extrato OFX, quando disponível. ref_number: type: string nullable: true description: Número de referência informado no lançamento OFX. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: URL do PDF do boleto (`linkBoleto` PJBank). group_item: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxGroupItem' - type: string nullable: true enum: - null description: Grupo de conciliação ao qual o registro pertence, quando existente. required: - id description: Lançamento bancário do arquivo OFX com os vínculos de conciliação disponíveis. PublicContractRawOfxGroup: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. ofx_id: type: string format: uuid description: Identificador do extrato OFX ao qual o registro pertence. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. dir: type: string description: Diretório selecionado na estrutura de arquivos da empresa. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. nullable: true ofx_link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: Identificador ou endereço do arquivo OFX selecionado para a conciliação. payment_link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: Identificação do link de pagamento associado à operação. items: type: array items: $ref: '#/components/schemas/PublicContractRawOfxGroupItem' description: Registros que compõem o resultado ou lote desta operação. required: - id description: Grupo de pagamentos ou transações usado na conciliação OFX. PublicContractRawOfx: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. bank_recon_id: type: string format: uuid description: Identificador da conciliação bancária do extrato. attachment_id: type: string nullable: true format: uuid description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. start: type: string format: date-time description: Início do intervalo coberto pelo extrato. end: type: string format: date-time description: Fim do intervalo coberto pelo extrato. timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. transactions: type: array items: $ref: '#/components/schemas/PublicContractRawOfxTransaction' description: Lançamentos bancários extraídos do arquivo OFX. bank_recon: type: object additionalProperties: false properties: id: type: string description: UUID da conciliação bancária. format: uuid cashbox_id: type: string description: UUID do caixa da conciliação. format: uuid cashbox: $ref: '#/components/schemas/PublicContractRawCashbox' status: type: string description: Estado persistido da conciliação bancária. date: type: string format: date-time description: Dia de referência da conciliação bancária. closed_at: type: string format: date-time nullable: true description: Instante de fechamento da conciliação, quando existente. closure_source: type: string description: Origem persistida do fechamento da conciliação. nullable: true maxLength: 24 required: - id description: Conciliação bancária associada ao extrato. required: - id description: Extrato OFX importado com seus atributos persistidos e transações carregadas. PublicContractReconJustificationEvidence: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. target_type: type: string description: Tipo do registro ao qual a justificativa ou ação se aplica. reason: type: string description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. user_name: type: string nullable: true description: Nome registrado do usuário responsável pela ação. justified_at: type: string format: date-time description: Instante em que a justificativa foi registrada. origin: type: string description: Origem do registro ou forma pela qual foi incluído no sistema. required: - id - target_type - reason - user_id - user_name - justified_at - origin nullable: true description: Justificativa registrada para tratar um item sem contraparte de conciliação. PublicContractOfxTransaction: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. check_number: type: string nullable: true description: Número do cheque informado no extrato OFX, quando disponível. date: type: string format: date-time description: Data de referência da operação financeira. justification: type: string nullable: true description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. memo: type: string nullable: true description: Histórico textual do movimento informado no extrato OFX. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. ofx_id: type: string format: uuid description: Identificador do extrato OFX ao qual o registro pertence. sic: type: string nullable: true description: Código de classificação informado no lançamento OFX. timezone: type: string nullable: true description: Fuso horário utilizado para interpretar datas e horários da regra. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. unique: type: string description: Identificador FITID do lançamento no arquivo OFX. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: URL do PDF do boleto (`linkBoleto` PJBank). groupItem: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxGroupItem' - type: string nullable: true enum: - null description: Grupo de conciliação ao qual o registro pertence, quando existente. recon_justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Evidência pública da justificativa de conciliação sem contraparte. required: - id - amount - check_number - date - justification - memo - name - ofx_id - sic - timezone - type - unique - ofx_transaction_id - link - groupItem - recon_justification description: Lançamento bancário do arquivo OFX com os vínculos de conciliação disponíveis. PublicContractOfxGroupItem: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. ofx_group_id: type: string format: uuid description: Identificador do grupo de conciliação OFX. groupable_type: type: string description: Tipo do registro que integra o grupo de conciliação. groupable: anyOf: - $ref: '#/components/schemas/PublicContractRawPayment' - $ref: '#/components/schemas/PublicContractRawOfxTransaction' - type: string nullable: true enum: - null description: Pagamento ou transação OFX que integra o grupo; pode ser nulo após exclusão. required: - id - ofx_group_id - groupable_type - groupable description: Item que associa um pagamento ou transação bancária a um grupo. PublicContractOfxGroup: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. dir: type: string description: Diretório selecionado na estrutura de arquivos da empresa. name: type: string description: Nome utilizado para identificar e exibir o registro. nullable: true total: type: string description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. nullable: true items: type: array items: $ref: '#/components/schemas/PublicContractOfxGroupItem' description: Registros que compõem o resultado ou lote desta operação. link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: URL do PDF do boleto (`linkBoleto` PJBank). paymentLink: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: Vínculo do grupo com o lado dos pagamentos na conciliação OFX. required: - id - type - dir - name - total - items - link - paymentLink description: Grupo de pagamentos ou transações usado na conciliação OFX. PublicContractPaymentToOfx: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. date: type: string format: date-time description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. value_paid: type: number description: Valor pago na liquidação da conta, em reais. link: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxLink' - type: string nullable: true enum: - null description: URL do PDF do boleto (`linkBoleto` PJBank). group_item: oneOf: - $ref: '#/components/schemas/PublicContractRawOfxGroupItem' - type: string nullable: true enum: - null description: Grupo de conciliação ao qual o registro pertence, quando existente. recon_justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Evidência pública da justificativa de conciliação sem contraparte. required: - id - cashbox_id - date - description - observation - value_paid - link - group_item - recon_justification description: Baixa financeira projetada para a conferência com o extrato OFX. PublicContractBankReconOfx: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. bank_recon: $ref: '#/components/schemas/PublicContractBankReconciliation' description: Conciliação bancária à qual o extrato pertence. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. start: type: string format: date-time description: Início do intervalo coberto pelo extrato. end: type: string format: date-time description: Fim do intervalo coberto pelo extrato. progress: type: object properties: progress: type: number description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação total: type: integer description: Total do conjunto consultado; o tipo declarado distingue quantidade e montante financeiro. linked: type: integer description: Quantidade de registros vinculados na conciliação. justified: type: integer description: Quantidade de itens resolvidos por justificativa sem contraparte. required: - progress - total - linked - justified description: Progresso do processamento (0–100). Pode ser nulo ou retornar 100 quando não há informação timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. transactions: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractRawOfxTransaction' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractRawOfxTransaction' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Lançamentos bancários extraídos do arquivo OFX. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - bank_recon - status - start - end - progress - timezone - transactions - created_at description: Extrato da conciliação bancária com período, progresso e transações. PublicContractViewOfxModel: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. bank_recon_id: type: string format: uuid description: Identificador da conciliação bancária do extrato. attachment_id: type: string nullable: true format: uuid description: Identificador do anexo associado ao registro; consulte a condição de ausência no schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. start: type: string format: date-time description: Início do intervalo coberto pelo extrato. end: type: string format: date-time description: Fim do intervalo coberto pelo extrato. timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. transactions: oneOf: - type: array items: $ref: '#/components/schemas/PublicContractOfxTransaction' - type: object additionalProperties: $ref: '#/components/schemas/PublicContractOfxTransaction' x-map-reason: Collection::sortBy preserva índices originais sem values(); json_encode devolve mapa de índices quando a ordem deixa de ser sequencial. description: Lançamentos bancários extraídos do arquivo OFX. groups: type: array items: $ref: '#/components/schemas/PublicContractRawOfxGroup' description: Grupos formados para conciliar os registros do extrato e do sistema. required: - id description: Extrato consultado com transações projetadas e grupos carregados. PublicContractCardReconciliation: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. card: $ref: '#/components/schemas/PublicContractCardPublic' description: Dados do cartão vinculado ao recurso financeiro. card_id: type: string format: uuid description: UUID do cartão de despesas vinculado à fatura ou lançamento. card_bill: $ref: '#/components/schemas/PublicContractCardBill' description: Fatura do cartão com resumo, revisão e capacidades disponíveis. card_bill_id: type: string format: uuid description: UUID da fatura pertencente ao cartão informado na URL. user: oneOf: - $ref: '#/components/schemas/PublicContractCardReconUser' - type: string nullable: true enum: - null description: Usuário associado, ou null quando o sócio ainda não possui acesso. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. conciliated_at: type: string nullable: true format: date-time description: Instante da conciliação registrada. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. comments: type: string nullable: true description: Comentários associados à análise ou execução do processamento. difference: type: string description: Diferença em reais entre os totais comparados na conciliação. invoice_value: type: string description: Valor total da nota ou fatura considerado na operação. virtual_bill_value: type: number description: Soma dos pagamentos que compõem a fatura no sistema. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. required: - id - card - card_id - card_bill - card_bill_id - user - user_id - conciliated_at - status - comments - difference - invoice_value - virtual_bill_value - created_at description: Conciliação do cartão com fatura, responsável e comparação de valores. PublicContractParsedOfxTransaction: type: object properties: type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. date: type: object properties: date: type: string description: Data de referência da operação financeira. timezone_type: type: integer description: Tipo de representação do fuso horário fornecido pela data do extrato. timezone: type: string description: Fuso horário utilizado para interpretar datas e horários da regra. required: - date - timezone_type - timezone description: Data de referência da operação financeira. amount: type: number description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. rawAmount: type: string description: Texto original do valor no arquivo OFX, antes de qualquer conversão numérica. uniqueId: type: string description: Identificador FITID do lançamento no arquivo OFX. name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. memo: type: string nullable: true description: Histórico textual do movimento informado no extrato OFX. sic: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: OfxParser::buildTransactions atribui o nó SimpleXMLElement sem cast; JSON preserva texto, atributos e filhos do elemento XML em mapa. description: Nó XML opcional do código SIC do arquivo OFX; o parser preserva o elemento sem cast textual. nullable: true checkNumber: type: object additionalProperties: $ref: '#/components/schemas/PublicContractStoredJsonValue' x-map-reason: OfxParser::buildTransactions atribui o nó SimpleXMLElement sem cast; JSON preserva texto, atributos e filhos do elemento XML em mapa. description: Nó XML opcional do número de cheque do arquivo OFX; o parser preserva o elemento sem cast textual. nullable: true refNumber: type: string nullable: true description: Número de referência informado no lançamento OFX. required: - type - date - amount - rawAmount - uniqueId - name - memo - sic - checkNumber - refNumber description: Transação original interpretada do arquivo OFX para sugerir correspondências. PublicContractUnifiedBankEntry: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. side: type: string description: 'Lado da conciliação ao qual o registro pertence: banco ou sistema.' source_id: type: string format: uuid description: Identificador do registro na fonte que originou o lançamento. date: type: string nullable: true format: date description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. direction: type: string description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. residual: type: string nullable: true description: Valor do lançamento que ainda não foi alocado em vínculos confirmados. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. eligible_actions: type: array items: type: string description: Ações atualmente permitidas para o registro. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. allocated: type: string description: Valor já alocado em vínculos de conciliação confirmados. reconciliations: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - id - revision - amount description: Vínculos de conciliação confirmados associados ao lançamento. reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. reconciliation_revision: type: integer description: Revisão do vínculo de conciliação considerado no registro. justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. required: - id - side - source_id - date - description - amount - direction - residual - status - version - eligible_actions - reason - allocated - reconciliations - source description: Movimento do banco com valor residual, vínculos e ações permitidas na conciliação unificada. PublicContractUnifiedSystemEntry: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. side: type: string description: 'Lado da conciliação ao qual o registro pertence: banco ou sistema.' source_id: type: string format: uuid description: Identificador do registro na fonte que originou o lançamento. date: type: string nullable: true format: date description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. direction: type: string description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. residual: type: string nullable: true description: Valor do lançamento que ainda não foi alocado em vínculos confirmados. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. eligible_actions: type: array items: type: string description: Ações atualmente permitidas para o registro. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. allocated: type: string description: Valor já alocado em vínculos de conciliação confirmados. reconciliations: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - id - revision - amount description: Vínculos de conciliação confirmados associados ao lançamento. reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. reconciliation_revision: type: integer description: Revisão do vínculo de conciliação considerado no registro. justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. entry_key: type: string description: Chave estável que identifica o efeito financeiro no lado do sistema. reason_code: type: string description: Código do motivo de cancelamento ou substituição no catálogo aceito pelo emissor. settlement: type: object properties: payment_id: type: string nullable: true description: UUID do pagamento vinculado ao lançamento financeiro. allocated_net: type: string nullable: true description: Parcela líquida do recebimento alocada ao pagamento. id: type: string nullable: true description: Identificador único do registro no recurso consultado. provider: type: string nullable: true description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. external_reference: type: string nullable: true description: Referência da operação no processador externo para acompanhamento. credit_informed_date: type: string nullable: true description: Data de crédito informada pelo adquirente ou instituição. credit_estimated_date: type: string nullable: true description: Data estimada para o crédito do repasse. integrity_status: type: string nullable: true description: Estado da verificação de integridade dos dados do recebimento. net: type: string nullable: true description: Valor líquido do recebimento após os descontos aplicáveis. gross: type: string nullable: true description: Valor bruto do recebimento antes das tarifas. fee: type: string nullable: true description: Tarifa descontada do valor bruto do recebimento. receiving_account_key: type: string nullable: true description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. affected_reconciliation_ids: type: string nullable: true description: Identificadores das conciliações afetadas pela revisão da evidência do repasse. reference: type: string nullable: true description: Referência externa ou de origem usada para identificar a operação. payment_date: type: string nullable: true description: Data do pagamento identificado no documento ou registrado na conta. credit_date: type: string nullable: true description: Data de crédito bancário usada na composição do repasse. credit_date_kind: type: string nullable: true description: Indica se a data do crédito foi informada ou estimada. receipt_net: type: string nullable: true description: Valor líquido total original do recebimento. receipt_gross: type: string nullable: true description: Valor bruto total original do recebimento. receipt_fee: type: string nullable: true description: Tarifa total original do recebimento, antes da alocação entre pagamentos. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. receipt_payment_count: type: integer description: Quantidade de pagamentos associados ao mesmo recebimento. required: - payment_id - allocated_net - id - provider - external_reference - credit_informed_date - credit_estimated_date - integrity_status - net - gross - fee - receiving_account_key - affected_reconciliation_ids - reference - payment_date - credit_date - credit_date_kind - receipt_net - receipt_gross - receipt_fee - revision - receipt_payment_count description: Dados do repasse bancário relacionados ao recebimento. required: - id - side - source_id - date - description - amount - direction - residual - status - version - eligible_actions - reason - allocated - reconciliations - entry_key description: Efeito financeiro do sistema com valor residual, vínculos e dados do repasse disponível. PublicContractUnifiedBankEntryWithVersion: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. side: type: string description: 'Lado da conciliação ao qual o registro pertence: banco ou sistema.' source_id: type: string format: uuid description: Identificador do registro na fonte que originou o lançamento. date: type: string nullable: true format: date description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. direction: type: string description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. residual: type: string nullable: true description: Valor do lançamento que ainda não foi alocado em vínculos confirmados. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. eligible_actions: type: array items: type: string description: Ações atualmente permitidas para o registro. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. allocated: type: string description: Valor já alocado em vínculos de conciliação confirmados. reconciliations: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - id - revision - amount description: Vínculos de conciliação confirmados associados ao lançamento. reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. reconciliation_revision: type: integer description: Revisão do vínculo de conciliação considerado no registro. justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. source: type: string description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. financial_version: type: string description: Impressão dos dados que determinam o efeito financeiro do registro. required: - id - side - source_id - date - description - amount - direction - residual - status - version - eligible_actions - reason - allocated - reconciliations - source - financial_version description: Movimento do banco com valor residual, vínculos e ações permitidas na conciliação unificada. PublicContractUnifiedSystemEntryWithVersion: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. side: type: string description: 'Lado da conciliação ao qual o registro pertence: banco ou sistema.' source_id: type: string format: uuid description: Identificador do registro na fonte que originou o lançamento. date: type: string nullable: true format: date description: Data de referência da operação financeira. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. amount: type: string nullable: true description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. direction: type: string description: Sentido financeiro da movimentação; utilize os valores aceitos no enum. residual: type: string nullable: true description: Valor do lançamento que ainda não foi alocado em vínculos confirmados. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. eligible_actions: type: array items: type: string description: Ações atualmente permitidas para o registro. reason: type: string nullable: true description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. allocated: type: string description: Valor já alocado em vínculos de conciliação confirmados. reconciliations: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. required: - id - revision - amount description: Vínculos de conciliação confirmados associados ao lançamento. reconciliation_id: type: string format: uuid description: Conciliação confirmada em que o movimento entrou. reconciliation_revision: type: integer description: Revisão do vínculo de conciliação considerado no registro. justification: $ref: '#/components/schemas/PublicContractReconJustificationEvidence' description: Justificativa apresentada para a ação solicitada, mantida para acompanhamento. entry_key: type: string description: Chave estável que identifica o efeito financeiro no lado do sistema. reason_code: type: string description: Código do motivo de cancelamento ou substituição no catálogo aceito pelo emissor. settlement: type: object properties: payment_id: type: string nullable: true description: UUID do pagamento vinculado ao lançamento financeiro. allocated_net: type: string nullable: true description: Parcela líquida do recebimento alocada ao pagamento. id: type: string nullable: true description: Identificador único do registro no recurso consultado. provider: type: string nullable: true description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. external_reference: type: string nullable: true description: Referência da operação no processador externo para acompanhamento. credit_informed_date: type: string nullable: true description: Data de crédito informada pelo adquirente ou instituição. credit_estimated_date: type: string nullable: true description: Data estimada para o crédito do repasse. integrity_status: type: string nullable: true description: Estado da verificação de integridade dos dados do recebimento. net: type: string nullable: true description: Valor líquido do recebimento após os descontos aplicáveis. gross: type: string nullable: true description: Valor bruto do recebimento antes das tarifas. fee: type: string nullable: true description: Tarifa descontada do valor bruto do recebimento. receiving_account_key: type: string nullable: true description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. affected_reconciliation_ids: type: string nullable: true description: Identificadores das conciliações afetadas pela revisão da evidência do repasse. reference: type: string nullable: true description: Referência externa ou de origem usada para identificar a operação. payment_date: type: string nullable: true description: Data do pagamento identificado no documento ou registrado na conta. credit_date: type: string nullable: true description: Data de crédito bancário usada na composição do repasse. credit_date_kind: type: string nullable: true description: Indica se a data do crédito foi informada ou estimada. receipt_net: type: string nullable: true description: Valor líquido total original do recebimento. receipt_gross: type: string nullable: true description: Valor bruto total original do recebimento. receipt_fee: type: string nullable: true description: Tarifa total original do recebimento, antes da alocação entre pagamentos. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. receipt_payment_count: type: integer description: Quantidade de pagamentos associados ao mesmo recebimento. required: - payment_id - allocated_net - id - provider - external_reference - credit_informed_date - credit_estimated_date - integrity_status - net - gross - fee - receiving_account_key - affected_reconciliation_ids - reference - payment_date - credit_date - credit_date_kind - receipt_net - receipt_gross - receipt_fee - revision - receipt_payment_count description: Dados do repasse bancário relacionados ao recebimento. financial_version: type: string description: Impressão dos dados que determinam o efeito financeiro do registro. required: - id - side - source_id - date - description - amount - direction - residual - status - version - eligible_actions - reason - allocated - reconciliations - entry_key - financial_version description: Efeito financeiro do sistema com valor residual, vínculos e dados do repasse disponível. PublicContractSettlementProposal: type: object properties: id: type: string description: Identificador único do registro no recurso consultado. kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. label: type: string description: Texto de exibição do link de navegação da paginação. effect: type: string description: Efeito da ação sobre os registros financeiros existentes. bank_items: type: array items: type: object properties: movement_id: type: string format: uuid description: UUID da movimentação bancária usada na análise de conciliação. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - movement_id - amount - expected_version description: Movimentações do banco incluídas na conciliação solicitada. system_items: type: array items: type: object properties: entry_key: type: string description: Chave estável que identifica o efeito financeiro no lado do sistema. amount: type: string description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. expected_version: type: string description: Versão lida pelo cliente; evita sobrescrever uma alteração concorrente. required: - entry_key - amount - expected_version description: Lançamentos do sistema incluídos na conciliação solicitada. bank_entries: type: array items: $ref: '#/components/schemas/PublicContractUnifiedBankEntryWithVersion' description: Movimentos bancários que compõem a proposta ou consulta de conciliação. system_entries: type: array items: $ref: '#/components/schemas/PublicContractUnifiedSystemEntryWithVersion' description: Lançamentos do sistema considerados na consulta ou composição de conciliação. evidence: type: array items: type: object properties: kind: type: string description: Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. label: type: string description: Texto de exibição do link de navegação da paginação. required: - kind - label description: Evidências da avaliação; objeto vazio quando não há. warnings: type: array items: type: string description: Avisos que precisam ser considerados ao conferir o resultado. explanation: type: string description: Explicação da correspondência sugerida para apoiar a conferência. difference: type: string description: Diferença em reais entre os totais comparados na conciliação. bank_amount: type: string description: Valor bancário atribuível ao pagamento; nulo quando a alocação não é verificável. gross: type: string description: Valor bruto do recebimento antes das tarifas. fee: type: string description: Tarifa descontada do valor bruto do recebimento. net: type: string description: Valor líquido do recebimento após os descontos aplicáveis. receipt_ids: type: array items: type: string format: uuid description: Identificadores dos recebimentos que compõem a proposta de repasse. required: - id - kind - label - effect - bank_items - system_items - bank_entries - system_entries - evidence - warnings - explanation - difference - bank_amount description: Proposta de composição entre movimentos e lançamentos existentes, sem confirmação automática. PublicContractSettlementCandidate: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. provider: type: string description: Identificação do fornecedor ou processador responsável pelo recurso, conforme o tipo declarado. receiving_account_key: type: string description: Chave da conta de recebimento utilizada para localizar os candidatos à liquidação. gross: type: string nullable: true description: Valor bruto do recebimento antes das tarifas. fee: type: string nullable: true description: Tarifa descontada do valor bruto do recebimento. net: type: string nullable: true description: Valor líquido do recebimento após os descontos aplicáveis. paid_at: type: string nullable: true format: date-time description: Data e hora em que o pagamento do recurso foi confirmado. credit_informed_date: type: string nullable: true format: date description: Data de crédito informada pelo adquirente ou instituição. credit_estimated_date: type: string nullable: true format: date description: Data estimada para o crédito do repasse. provenance: type: string description: Procedência da informação utilizada na sugestão ou cálculo. integrity_status: type: string description: Estado da verificação de integridade dos dados do recebimento. revision: type: integer description: Revisão do cadastro contra a qual o resultado foi gravado. system_entries: type: array items: $ref: '#/components/schemas/PublicContractUnifiedSystemEntryWithVersion' description: Lançamentos do sistema considerados na consulta ou composição de conciliação. available: type: string nullable: true description: Indica se o recurso está disponível para uso no estado atual. allocated: type: string nullable: true description: Valor já alocado em vínculos de conciliação confirmados. required: - id - provider - receiving_account_key - gross - fee - net - paid_at - credit_informed_date - credit_estimated_date - provenance - integrity_status - revision - system_entries - available - allocated description: Recebimento candidato à composição do crédito bancário e suas alocações disponíveis. PublicContractFiscalPayer: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. international: type: boolean nullable: true description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. phone: oneOf: - $ref: '#/components/schemas/PublicContractRawPhone' - type: string nullable: true enum: - null description: Número de telefone do contato, com DDD quando nacional. email: oneOf: - $ref: '#/components/schemas/PublicContractRawEmail' - type: string nullable: true enum: - null description: Endereço de e-mail do contato ou usuário associado ao recurso. address: oneOf: - $ref: '#/components/schemas/PublicContractRawAddress' - type: string nullable: true enum: - null description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. required: - id - name - cpf - cnpj - type - international - phone - email - address description: Dados do pagador usados na emissão de boleto ou nota fiscal. PublicContractRawCategoryTax: type: object properties: category_id: type: string format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. tax_code_id: type: string format: uuid description: Identificador do código de serviço associado à categoria. tax_code_type: type: string description: Tipo do catálogo de códigos de serviço associado à categoria. required: - category_id - tax_code_id - tax_code_type description: Associação da categoria a um código de serviço e ao respectivo catálogo. PublicContractBankSlipAccountData: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. client: oneOf: - $ref: '#/components/schemas/PublicContractFiscalPayer' - type: string nullable: true enum: - null description: Cliente associado à operação; reutilize um cadastro da empresa ou informe os dados aceitos para criação. taxes: type: array items: $ref: '#/components/schemas/PublicContractRawCategoryTax' nullable: true description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. active_rps_amount: oneOf: - type: string - type: number description: Valor líquido da nota ativa; zero quando não há nota ativa com valor disponível. serviceable_type: type: string description: Classe da entidade de serviço associada ao registro; null quando não há vínculo. nullable: true serviceable_id: type: string description: UUID da entidade de serviço associada ao registro; null quando não há vínculo. format: uuid nullable: true required: - id - client - active_rps_amount description: Dados da conta a receber e do pagador para preparar a cobrança bancária. PublicContractNbsRaw: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. code: type: string description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. description: type: string description: Histórico descritivo utilizado para identificar o lançamento ou a operação. required: - id description: Código da Nomenclatura Brasileira de Serviços associado à categoria. PublicContractFiscalInvoiceEligibility: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. account_standard_launch_id: type: string nullable: true format: uuid description: UUID do lançamento padrão utilizado para classificar a conta financeira. unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. original_due_date: type: string nullable: true format: date-time description: Vencimento original, que não muda quando `due_date` é editado. Instante ISO 8601 em UTC. generated_for_entity: type: string nullable: true description: Tipo da pessoa ou cadastro que origina o lançamento financeiro. generated_for_entity_id: type: string nullable: true format: uuid description: UUID da pessoa ou cadastro que origina o lançamento; corresponde ao tipo em generated_for_entity. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). created_at: type: string nullable: true format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. cashbox_id: type: string nullable: true format: uuid description: UUID do caixa financeiro vinculado à operação na empresa autenticada. category_id: type: string nullable: true format: uuid description: UUID da categoria financeira utilizada para classificar o lançamento. document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. observation: type: string nullable: true description: Observações complementares para acompanhamento interno do registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. workflow_id: type: string nullable: true format: uuid description: UUID da régua de cobrança associada ao recebível. retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. created_by: type: string nullable: true format: uuid description: UUID do usuário que criou a conta. Nulo em conta antiga e em conta criada fora de sessão origin: type: string nullable: true description: Origem do registro ou forma pela qual foi incluído no sistema. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. ofx_transaction_id: type: string nullable: true format: uuid description: Identificador da transação OFX relacionada ao registro. charge_group_id: type: string nullable: true format: uuid description: UUID do grupo de cobrança que reúne os recebíveis. operation_nature: type: string nullable: true description: Natureza da operação. issqn_tributation: type: string description: Tributação do ISSQN. Na emissão, `none` segue a configuração; os demais valem para a nota e sobrepõem a categoria e a empresa. configured: type: boolean description: Indica se a configuração necessária está disponível para esta operação. nfse_system: type: string nullable: true description: Sistema de emissão de NFS-e configurado para o município. classificacao_ibscbs: type: object properties: ibscbs_cindop: type: string nullable: true description: Código do indicador de operação IBS/CBS com seis dígitos. ibscbs_cst: type: string nullable: true description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. ibscbs_cclasstrib: type: string nullable: true description: Código de classificação tributária IBS/CBS com seis dígitos. ibscbs_ccredpres: type: string nullable: true description: Código do crédito presumido IBS/CBS com dois dígitos. origem: oneOf: - type: object properties: ibscbs_cindop: type: string description: Código do indicador de operação IBS/CBS com seis dígitos. ibscbs_cst: type: string description: Código de situação tributária IBS/CBS com três dígitos, preservando zeros à esquerda. ibscbs_cclasstrib: type: string description: Código de classificação tributária IBS/CBS com seis dígitos. ibscbs_ccredpres: type: string description: Código do crédito presumido IBS/CBS com dois dígitos. required: [] description: Fonte da configuração ou do valor resolvido. - type: array maxItems: 0 items: type: string description: Origem dos campos IBS/CBS efetivamente resolvidos. array_intersect_key sobre ClassificacaoFiscalResolvida::origem retorna objeto associativo com as chaves declaradas quando preenchido, ou lista vazia [] quando nenhuma dessas origens existe. required: - ibscbs_cindop - ibscbs_cst - ibscbs_cclasstrib - ibscbs_ccredpres - origem description: Classificação do IBS/CBS resolvida por recorrência, categoria e empresa. tributacao_issqn: type: object properties: trib_issqn: type: string nullable: true description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação' tp_imunidade: type: string nullable: true description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. comex_md_prestacao: type: string nullable: true description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2' comex_mec_af_prestador: type: string nullable: true description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a comex_mec_af_tomador: type: string nullable: true description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; comex_mov_temp_bens: type: string nullable: true description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração' comex_mdic: type: string nullable: true description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' origem: oneOf: - type: object properties: trib_issqn: type: string description: 'Tributação ISSQN (tribISSQN da DPS): 1 operação tributável, 2 imunidade, 3 exportação' tp_imunidade: type: string description: Tipo de imunidade (tpImunidade), de 1 a 5, com o texto do Anexo I da NFS-e nacional. comex_md_prestacao: type: string description: 'Modo de prestação do comércio exterior (mdPrestacao): 1 transfronteiriço, 2' comex_mec_af_prestador: type: string description: Mecanismo de apoio ao comércio exterior da sua empresa (mecAFComexP), de 01 a comex_mec_af_tomador: type: string description: Mecanismo de apoio ao comércio exterior do cliente (mecAFComexT), de 01 a 26; comex_mov_temp_bens: type: string description: 'Movimentação temporária de bens (movTempBens): 1 não, 2 vinculada a declaração' comex_mdic: type: string description: 'Compartilhar a nota com o MDIC (mdic): 0 não enviar, 1 enviar.' required: [] description: Fonte da configuração ou do valor resolvido. - type: array maxItems: 0 items: type: string description: Origem dos campos de ISSQN e comércio exterior efetivamente resolvidos. array_intersect_key retorna o objeto associativo descrito quando há origens, ou a lista vazia [] quando nenhuma dessas origens existe. incidencia: type: string description: Incidência do ISSQN resolvida para o serviço e o leiaute fiscal. local_do_tomador: type: string description: Classificação da localização do tomador usada na tributação. cliente: type: object properties: country: type: string nullable: true description: Identificação do país associado ao endereço ou cadastro. comex_vinculo: type: string nullable: true description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada,' comex_moeda: type: string nullable: true description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão' required: - country - comex_vinculo - comex_moeda description: Dados do cliente usados na resolução fiscal do tomador. recorrencia: $ref: '#/components/schemas/PublicContractRecurrenceForeignTrade' description: Dados da recorrência usados na resolução fiscal ou financeira. required: - trib_issqn - tp_imunidade - comex_md_prestacao - comex_mec_af_prestador - comex_mec_af_tomador - comex_mov_temp_bens - comex_mdic - origem - incidencia - local_do_tomador - cliente - recorrencia description: Tributação do ISSQN resolvida com a origem dos campos e o local do tomador. state: type: string nullable: true description: Estado ou unidade federativa do endereço. city: type: string nullable: true description: Município do endereço ou da prestação do serviço, conforme o recurso. client: oneOf: - $ref: '#/components/schemas/PublicContractFiscalPayer' - type: string nullable: true enum: - null description: Cliente associado à operação; reutilize um cadastro da empresa ou informe os dados aceitos para criação. taxes: type: array items: $ref: '#/components/schemas/PublicContractRawTaxCode' nullable: true description: Configuração tributária vinculada ao cadastro, utilizada no preenchimento fiscal. nbs: oneOf: - $ref: '#/components/schemas/PublicContractNbsRaw' - type: string nullable: true enum: - null description: Identificador da Nomenclatura Brasileira de Serviços no catálogo fiscal; preserve o tipo declarado. nfse_correlacao: oneOf: - $ref: '#/components/schemas/PublicContractMunicipalCorrelation' - type: string nullable: true enum: - null description: Resolução dos códigos nacionais e municipais para a emissão da NFS-e. serviceable_type: type: string description: Classe da entidade de serviço associada ao registro; null quando não há vínculo. nullable: true serviceable_id: type: string description: UUID da entidade de serviço associada ao registro; null quando não há vínculo. format: uuid nullable: true required: - id - operation_nature - issqn_tributation - configured - nfse_system - classificacao_ibscbs - tributacao_issqn - state - city - client description: Dados e classificação fiscal resolvidos para preparar a emissão da nota da conta. PublicContractXmlFiscalMetadata: type: object properties: format: type: string description: Formato do arquivo ou relatório solicitado; consulte as opções aceitas na operação. version: type: string description: Versão do recurso utilizada para identificar alterações concorrentes. invoice_number: type: string nullable: true description: Número da nota fiscal extraído do documento. invoice_key: type: string description: Chave de identificação da nota fiscal lida do XML. replaces_key: type: string nullable: true description: Chave da nota fiscal substituída informada no XML. gross: type: string nullable: true description: Valor bruto do recebimento antes das tarifas. net: type: string nullable: true description: Valor líquido do recebimento após os descontos aplicáveis. retentions: type: string nullable: true description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. required: - format - version - invoice_number - invoice_key - replaces_key - gross - net - retentions description: Metadados extraídos da NFS-e nacional, incluindo chaves e valores fiscais. PublicContractWorkflowLog: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. contacts: type: string nullable: true description: Pessoas de contato vinculadas ao cadastro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. content: type: string nullable: true description: Conteúdo do documento ou da mensagem, conforme o tipo declarado no recurso. data: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. account_receivable_id: type: string format: uuid description: UUID da conta a receber vinculada ao cliente e à operação na empresa autenticada. user_id: type: string nullable: true format: uuid description: UUID do usuário associado ao registro na empresa autenticada. user: type: object properties: name: type: string nullable: true description: Nome utilizado para identificar e exibir o registro. required: - name description: Usuário associado, ou null quando o sócio ainda não possui acesso. charge_id: type: string nullable: true format: uuid description: Identificador do envio de cobrança associado ao registro. charge_status: type: string nullable: true description: Estado atual do envio de cobrança relacionado. provider_message_id: type: string nullable: true description: Identificador da mensagem atribuído pelo provedor de entrega. events: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. occurred_at: type: string format: date-time description: Instante em que o evento ocorreu. required: - id - type - occurred_at description: Eventos registrados no histórico do recurso. delivery: type: object properties: channel: type: string nullable: true description: Canal utilizado para entregar a mensagem. subject: type: string nullable: true description: Assunto da mensagem enviada ao destinatário. recipients: type: array items: type: object properties: address: type: string description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. role: type: string description: Nome do perfil de acesso (deve estar cadastrado na empresa). required: - address - role nullable: true description: Destinatários registrados ou elegíveis para o envio. attachments: type: array items: type: string nullable: true description: Arquivos anexados ao registro para comprovação ou consulta. status: type: string nullable: true description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. payment_link: type: boolean nullable: true description: Identificação do link de pagamento associado à operação. required: - channel - subject - recipients - attachments - status description: Resumo do canal, destinatários, anexos e estado de entrega. created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. recipient_deliveries: type: array items: type: object properties: log_id: type: string format: uuid description: Identificador do registro individual de envio. address: type: string description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. role: type: string description: Nome do perfil de acesso (deve estar cadastrado na empresa). status: type: string nullable: true description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. provider_message_id: type: string nullable: true description: Identificador da mensagem atribuído pelo provedor de entrega. events: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. occurred_at: type: string format: date-time description: Instante em que o evento ocorreu. required: - id - type - occurred_at description: Eventos registrados no histórico do recurso. required: - log_id - address - role - status - description - provider_message_id - events description: Estado e eventos de entrega de cada destinatário dentro do envio agrupado. group_size: type: integer description: Quantidade de registros de envio agregados na linha do histórico. required: - id - description - contacts - type - content - data - account_receivable_id - user_id - user - charge_id - charge_status - provider_message_id - events - delivery - created_at - updated_at description: Registro de envio de cobrança, entrega por destinatário e histórico de eventos. PublicContractAccountAdherenceListSummary: type: object properties: status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. score: type: integer nullable: true description: Nota da avaliação; nula fora do status complete. range: type: string nullable: true description: Faixa da nota; nula fora do status complete. color: type: string nullable: true description: 'Cor de exibição em hexadecimal com seis dígitos precedidos de #, como #125599.' critical_count: type: integer description: Quantidade de pontos críticos encontrados. summary: type: string description: Resumo persistido do farol; null é legítimo quando a linha ainda não recebeu resumo, inclusive pending. O Resource repassa o valor sem converter null em texto. nullable: true analyzed_at: type: string nullable: true format: date-time description: Instante da avaliação; nulo quando nunca foi avaliada. error_code: type: string nullable: true description: Código do erro quando status é error. required: - status - score - range - color - critical_count - summary - analyzed_at - error_code description: Farol compacto da listagem de contas a pagar; não inclui evidências ou documentos do detalhe. PublicContractAccountPayableListItem: type: object properties: cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome da contraparte resolvido pelos aliases da consulta ou pela relação, quando disponível. nullable: true generated_for_entity_type: type: string nullable: true description: Tipo da pessoa vinculada à conta. Enum AccountPayableFor. Nulo quando não balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. recurrence_type: type: string description: Tipo da recorrência vinculada, ou null sem recorrência. nullable: true unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. deleted_at: type: string description: Instante de exclusão lógica, quando presente. format: date-time nullable: true document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. last_payment_date: type: string description: Dia do último pagamento não excluído; null quando não há pagamento. format: date nullable: true payments: type: array items: $ref: '#/components/schemas/PublicContractRawPayment' description: Pagamentos carregados como modelos crus pela consulta de listagem; não usa ShowPayment do detalhe. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. document_adherence: oneOf: - $ref: '#/components/schemas/PublicContractAccountAdherenceListSummary' - type: string nullable: true enum: - null description: Vínculo document_adherence publicado quando existente, ou null conforme o produtor. A chave continua obrigatória; o ramo null é explícito porque nullable externo a allOf não torna nullable o schema referenciado. required: - cost_center_id - id - name - generated_for_entity_type - balance - balance_paid - payment_method - due_date - description - status - archived_at - recurrence_id - recurrence_type - unit_price - deleted_at - document_number - installment - installments - last_payment_date - payments - reconciled - type - document_adherence description: Linha compacta de conta a pagar, distinta do Resource de detalhe; todas as chaves são atribuídas pelo serializer. PublicContractAccountReceivableListItem: type: object properties: cost_center_id: type: string nullable: true format: uuid description: UUID do centro de custo vinculado ao lançamento na empresa autenticada. id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome da contraparte resolvido pelos aliases da consulta ou pela relação, quando disponível. nullable: true generated_for_entity_type: type: string nullable: true description: Tipo da pessoa vinculada à conta. Enum AccountPayableFor. Nulo quando não balance: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Saldo financeiro restante, em reais, no tipo decimal indicado pelo schema. balance_paid: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Total já pago. String decimal de 2 casas, nunca number. payment_method: type: string description: Forma de pagamento da operação; utilize um dos valores aceitos no enum. due_date: type: string nullable: true format: date-time description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. status: type: string description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. archived_at: type: string nullable: true format: date-time description: Instante em que a conta foi arquivada; nulo quando não está arquivada. recurrence_id: type: string nullable: true format: uuid description: UUID da recorrência que gerou a conta; nulo para conta avulsa. recurrence_type: type: string description: Tipo da recorrência vinculada, ou null sem recorrência. nullable: true unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor monetário do lançamento, em reais. Preserve o tipo e a precisão decimal indicados pelo schema. deleted_at: type: string description: Instante de exclusão lógica, quando presente. format: date-time nullable: true document_number: type: string nullable: true description: Número de identificação do documento associado ao lançamento. installment: type: integer nullable: true description: Número desta parcela; nulo quando a conta não é parcelada. installments: type: integer nullable: true description: Quantidade de parcelas previstas para o lançamento financeiro. last_payment_date: type: string description: Dia do último pagamento não excluído; null quando não há pagamento. format: date nullable: true payments: type: array items: $ref: '#/components/schemas/PublicContractRawPayment' description: Pagamentos carregados como modelos crus pela consulta de listagem; não usa ShowPayment do detalhe. reconciled: type: boolean nullable: true description: Indica se a conta já foi conciliada. category: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. nfse_enabled: type: boolean description: Indica se a categoria está habilitada para uso na emissão de NFS-e. required: - id - name - type - nfse_enabled description: Categoria compacta da conta; null quando não vinculada. nullable: true retentions: $ref: '#/components/schemas/PublicContractRetentions' description: Informações de retenções tributárias do serviço, conforme o tipo indicado neste schema. workflow: oneOf: - $ref: '#/components/schemas/PublicContractWorkflowSummary' - type: string nullable: true enum: - null description: Vínculo workflow publicado quando existente, ou null conforme o produtor. A chave continua obrigatória; o ramo null é explícito porque nullable externo a allOf não torna nullable o schema referenciado. flag: type: integer description: Indicador de destaque (0 = normal, 1 = destacada). has_charge_mail: type: boolean description: Indica a existência de charge mail conforme o Resource da listagem. has_charge_phone: type: boolean description: Indica a existência de charge phone conforme o Resource da listagem. cashbox: type: object nullable: true properties: id: type: string format: uuid description: UUID do caixa da conta. name: type: string description: Nome do caixa da conta. required: - id - name description: Caixa compacto da conta, conforme SimpleCashboxResource; null sem vínculo. has_bank_slip: type: boolean description: Indica a existência de bank slip conforme o Resource da listagem. has_fiscal_rps: type: boolean description: Indica a existência de fiscal rps conforme o Resource da listagem. has_aux_documents: type: boolean description: Indica a existência de aux documents conforme o Resource da listagem. overpaid_amount: type: string description: Valor recebido acima do valor da conta. String decimal de 2 casas; '0.00' has_payment_attachments: type: boolean description: Indica a existência de payment attachments conforme o Resource da listagem. required: - cost_center_id - id - name - generated_for_entity_type - balance - balance_paid - payment_method - due_date - description - status - archived_at - recurrence_id - recurrence_type - unit_price - deleted_at - document_number - installment - installments - last_payment_date - payments - reconciled - category - retentions - workflow - flag - has_charge_mail - has_charge_phone - cashbox - has_bank_slip - has_fiscal_rps - has_aux_documents - overpaid_amount - has_payment_attachments description: Linha compacta de conta a receber, distinta do Resource de detalhe; todas as chaves são atribuídas pelo serializer. PublicContractPartner: type: object properties: id: type: string description: UUID do sócio. format: uuid name: type: string description: Nome do sócio. cpf: type: string description: CPF do sócio, quando informado. nullable: true description: type: string description: Observação do cadastro do sócio. nullable: true ownership_percentage: type: number nullable: true description: Participação societária; cast float de Partner. entry_date: type: string description: Data de entrada na sociedade, conforme date:Y-m-d. format: date nullable: true active: type: boolean description: Situação ativa do sócio, conforme cast do modelo. created_at: type: string description: Data e hora de criação do cadastro. format: date-time nullable: true updated_at: type: string description: Data e hora da última atualização. format: date-time nullable: true emails: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. email_type: type: string nullable: true description: Classificação do endereço de e-mail, como pessoal ou profissional. email_type_id: type: string nullable: true format: uuid description: Identificador da classificação do e-mail no catálogo de tipos de contato. email: type: string description: Endereço de e-mail do contato ou usuário associado ao recurso. type: oneOf: - type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. name: type: string description: Nome utilizado para identificar e exibir o registro. description: type: string nullable: true description: Explicação da classificação deste contato no catálogo de tipos. required: - id - name - description description: Classificação cadastrada para um canal de contato. - type: string nullable: true enum: - null description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. description: type: string nullable: true description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. required: - id - email_type - email_type_id - email - type - description description: Endereço de e-mail cadastrado e sua classificação de contato. description: Registros de emails serializados pelo Resource de sócio. phones: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. phone_type: type: string nullable: true description: Classificação do número de telefone no cadastro. phone_type_id: type: string nullable: true format: uuid description: Identificador da classificação do telefone no catálogo de tipos de contato. phone: type: string description: Número de telefone do contato, com DDD quando nacional. wpp: type: boolean description: Indica se o telefone pode ser utilizado para contato por WhatsApp. description: type: string nullable: true description: Observações sobre este contato do sócio, para facilitar sua identificação e utilização. required: - id - phone_type - phone_type_id - phone - wpp - description description: Número de telefone cadastrado e sua classificação de contato. description: Registros de phones serializados pelo Resource de sócio. addresses: type: array items: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string nullable: true description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. address: type: string nullable: true description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. city_id: type: string nullable: true description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. city: type: string nullable: true description: Município do endereço ou da prestação do serviço, conforme o recurso. state_id: type: string nullable: true description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. state: type: string nullable: true description: Estado ou unidade federativa do endereço. stateLetter: type: string nullable: true description: Sigla da unidade federativa do endereço. country: type: string nullable: true description: Identificação do país associado ao endereço ou cadastro. country_name: type: string description: Nome do país associado ao endereço ou cadastro. number: type: string nullable: true description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. neighborhood: type: string nullable: true description: Bairro do endereço informado. complement: type: string nullable: true description: Complemento do endereço, como sala, bloco ou apartamento. description: type: string nullable: true description: Observações sobre o endereço do sócio, como referências para sua localização. zipcode: type: string nullable: true description: Código postal do endereço; no Brasil, CEP com oito dígitos. required: - id - type - address - city_id - city - state_id - state - stateLetter - country - country_name - number - neighborhood - complement - description - zipcode description: Endereço cadastrado com referências geográficas e complementos. description: Registros de addresses serializados pelo Resource de sócio. bankAccounts: type: array items: type: object properties: bank_name: type: string description: Nome da instituição bancária da conta cadastrada. account: type: string description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. agency: type: string description: Número da agência bancária, preservando zeros e dígito quando informado. description: type: string nullable: true description: Informações complementares para identificar a conta bancária do sócio. pix: type: string nullable: true description: Chave PIX cadastrada para identificação da conta de recebimento. required: - bank_name - account - agency - description - pix description: Dados da conta bancária informada no cadastro da pessoa. description: Registros de bankAccounts serializados pelo Resource de sócio. documents: type: array items: $ref: '#/components/schemas/PublicContractPersonDocument' description: Registros de documents serializados pelo Resource de sócio. required: - id - emails - phones - addresses - bankAccounts - documents description: 'Sócio: atributos do modelo com casts e coleções atribuídas por ShowPartner.' PublicContractPartnerForUsers: type: object properties: id: type: string description: UUID do sócio. format: uuid name: type: string description: Nome do sócio. cpf: type: string description: CPF do sócio, quando informado. nullable: true description: type: string description: Observação do cadastro do sócio. nullable: true ownership_percentage: type: number nullable: true description: Participação societária; cast float de Partner. entry_date: type: string description: Data de entrada na sociedade, conforme date:Y-m-d. format: date nullable: true active: type: boolean description: Situação ativa do sócio, conforme cast do modelo. created_at: type: string description: Data e hora de criação do cadastro. format: date-time nullable: true updated_at: type: string description: Data e hora da última atualização. format: date-time nullable: true emails: type: array items: $ref: '#/components/schemas/PublicContractRawEmail' description: E-mails carregados como modelos crus por getAllActive. phones: type: array items: $ref: '#/components/schemas/PublicContractRawPhone' description: Telefones carregados como modelos crus por getAllActive. user: oneOf: - $ref: '#/components/schemas/PublicContractRawUser' - type: string nullable: true enum: - null description: Vínculo user publicado quando existente, ou null conforme o produtor. A chave continua obrigatória; o ramo null é explícito porque nullable externo a allOf não torna nullable o schema referenciado. required: - id - emails - phones - user description: Sócios ativos para associação de usuário; sem ShowPartner, com relações cruas emails/user/phones carregadas. PublicContractRawClient: type: object properties: id: type: string format: uuid description: Identificador único do registro no recurso consultado. type: type: string description: Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. name: type: string description: Nome utilizado para identificar e exibir o registro. code: type: string nullable: true description: Código de identificação do resultado ou da classificação, conforme o tipo declarado neste schema. fantasy_name: type: string nullable: true description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. cpf: type: string nullable: true description: CPF da pessoa física envolvida na operação, preservando zeros à esquerda. cnpj: type: string nullable: true description: CNPJ da pessoa jurídica envolvida na operação, preservando zeros à esquerda. ie: type: string nullable: true description: Inscrição estadual da pessoa jurídica, preservando zeros e caracteres do cadastro. im: type: string nullable: true description: Inscrição municipal da pessoa jurídica utilizada no cadastro fiscal. billing_day: type: string nullable: true description: Dia do mês utilizado para o faturamento ou vencimento configurado. client_since: type: string nullable: true format: date description: Data em que passou a ser cliente description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. active: type: boolean description: Indica se o registro está ativo para uso pela empresa. international: type: boolean description: Indica se o cadastro corresponde a uma pessoa ou empresa do exterior. nif: type: string nullable: true description: Número de identificação fiscal no país da pessoa domiciliada no exterior. nao_nif: type: string nullable: true description: Motivo de ausência do NIF; use um dos códigos admitidos no enum ou intervalo declarado. comex_vinculo: type: string nullable: true description: 'Vínculo da sua empresa com este cliente (vincPrest da NFS-e): 0 sem vínculo, 1 controlada,' comex_moeda: type: string nullable: true description: 'Moeda usual do cliente: código de 3 dígitos da tabela do Banco Central. Só sugestão na emissão' created_at: type: string format: date-time description: Data e hora em que o registro foi criado. updated_at: type: string nullable: true format: date-time description: Data e hora da última atualização do registro. emails: type: array items: $ref: '#/components/schemas/PublicContractRawEmail' description: Relação crua serializada somente quando estiver carregada no modelo. phones: type: array items: $ref: '#/components/schemas/PublicContractRawPhone' description: Relação crua serializada somente quando estiver carregada no modelo. bank_accounts: type: array items: type: object properties: id: type: string format: uuid description: UUID da conta bancária persistida. bank_name: type: string description: Nome da instituição bancária da conta cadastrada. account: type: string description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. agency: type: string description: Número da agência bancária, preservando zeros e dígito quando informado. description: type: string nullable: true description: Histórico descritivo utilizado para identificar o lançamento ou a operação. pix: type: string nullable: true description: Chave PIX cadastrada para identificação da conta de recebimento. pivot: type: object properties: client_id: type: string format: uuid description: UUID do cliente dono da conta bancária. bank_account_id: type: string format: uuid description: UUID da conta bancária vinculada. required: - client_id - bank_account_id description: Vínculo carregado pela relação belongsToMany de HasBankAccounts. created_at: type: string format: date-time nullable: true description: Instante created_at do modelo bancário cru, quando presente. updated_at: type: string format: date-time nullable: true description: Instante updated_at do modelo bancário cru, quando presente. deleted_at: type: string format: date-time nullable: true description: Instante deleted_at do modelo bancário cru, quando presente. required: - id description: BankAccount cru carregado no modelo, com chave primária e relações opcionais; não é o only() de cinco campos de BankAccountsResource. description: Relação crua serializada somente quando estiver carregada no modelo. addresses: type: array items: $ref: '#/components/schemas/PublicContractRawAddress' description: Relação crua serializada somente quando estiver carregada no modelo. contacts: type: array items: $ref: '#/components/schemas/PublicContractRawContact' description: Relação crua serializada somente quando estiver carregada no modelo. documents: type: array items: $ref: '#/components/schemas/PublicContractRawPersonDocument' description: Relação crua serializada somente quando estiver carregada no modelo. deleted_at: type: string format: date-time nullable: true description: Data e hora da exclusão lógica; null enquanto o cliente está ativo no cadastro. required: - id description: 'Cliente cru retornado pelo update: não atribui incondicionalmente as chaves de ClientResource. Relações são opcionais e dependem do que foi carregado.' PublicContractPublicApiSession: type: object properties: id: type: string description: UUID da sessão/chave de API. format: uuid user_id: type: string description: UUID do usuário autenticado. format: uuid api_key: type: string description: Chave de API emitida; tratar como credencial. expires_in: type: integer nullable: true description: Segundos restantes, truncados e absolutos; null para chave sem expiração. expires_at: type: string description: Instante de expiração da chave ou null. format: date-time nullable: true required: - id - user_id - api_key - expires_in - expires_at description: Sessão pública emitida pelo PublicAPIKeyResource; não é envelope de mensagem. PublicContractCityLookup: type: object properties: id: type: string description: Identificador textual do catálogo do próprio tenant, incluindo IDs legados numéricos textuais ("1", "21") e UUID. Retornado como string nas leituras persistidas; não converter para inteiro. state_id: type: string description: Identificador textual do catálogo do próprio tenant, incluindo IDs legados numéricos textuais ("1", "21") e UUID. Retornado como string nas leituras persistidas; não converter para inteiro. title: type: string description: Nome do município. required: - id - state_id - title description: Município conforme ShowCities, sem atributos não publicados pelo Resource. PublicContractStateLookup: type: object properties: id: type: string description: Identificador textual do catálogo do próprio tenant, incluindo IDs legados numéricos textuais ("1", "21") e UUID. Retornado como string nas leituras persistidas; não converter para inteiro. title: type: string description: Nome do estado. letter: type: string description: Sigla do estado. required: - id - title - letter description: Estado conforme ShowStates. PublicContractCountryLookup: type: object properties: id: type: string description: UUID do país no catálogo. format: uuid code: type: string description: Código do país no catálogo fiscal. country: type: string description: Nome do país. required: - id description: Registro do catálogo fiscal de países, serializado diretamente do modelo sem timestamps. PublicContractIntegrationOperationResponse: description: Operação de integração e seu estado de processamento. Consulte status_url por GET; artefatos externos aparecem somente quando disponíveis. type: object required: - data properties: data: description: Conteúdo do resultado ou mensagem do erro, conforme o tipo declarado neste envelope. type: object required: - operation_id - status - client - account - status_url - status_tool properties: operation_id: description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. type: string format: uuid status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `processing`, `uncertain`, `completed`, `failed`, `canceled`.' type: string enum: - processing - uncertain - completed - failed - canceled client: description: Cliente associado à operação; reutilize um cadastro da empresa ou informe os dados aceitos para criação. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid created: description: Indica se o cadastro foi criado nesta operação ou se já existia na empresa. type: boolean required: - id - created account: description: Conta financeira vinculada à operação, conforme o tipo declarado neste schema. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid category_id: description: UUID da categoria financeira utilizada para classificar o lançamento. type: string format: uuid nullable: true unit_price: type: string pattern: ^-?[0-9]+\.[0-9]{2}$ description: Valor do recebível em reais, devolvido como texto decimal com duas casas, por exemplo "150.00". due_date: description: Data de vencimento da obrigação financeira, em AAAA-MM-DD. type: string format: date nullable: true required: - id - category_id - unit_price - due_date status_url: description: URL de consulta somente leitura do processamento. Use GET para acompanhar sem reenviar a emissão. type: string format: uri nullable: true status_tool: description: Nome da ferramenta de consulta equivalente, quando disponível para o conector. type: string nullable: true message: description: Mensagem legível que explica o resultado da operação. type: string charge: description: Dados da cobrança solicitada ou resultado disponibilizado pelo processador. type: object properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid kind: description: 'Modalidade da operação ou meio de cobrança selecionado, conforme as opções do enum. Opções: `boleto`, `pix`, `payment_link`.' type: string enum: - boleto - pix - payment_link status: description: Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. type: string external_reference: description: Referência da operação no processador externo para acompanhamento. type: string url: description: URL de acesso ao recurso; utilize as credenciais exigidas pela operação de destino. type: string format: uri allowed_methods: description: Meios de pagamento que o pagador pode utilizar neste link específico. type: array items: type: string enum: - boleto - pix - card digitable: description: Linha digitável do boleto para apresentação ao pagador; não representa confirmação de pagamento. type: string nullable: true download_url: description: URL de download do documento da cobrança, quando já disponível. type: string nullable: true pix_copy_paste: description: Código PIX copia e cola devolvido pelo provedor; ausente ou null enquanto indisponível. type: string nullable: true pix_qr_code: type: string nullable: true description: Representação do QR Code devolvida pelo fluxo de PIX. pix_query_status: description: Resultado da consulta do código PIX nesta resposta; não substitui o status financeiro do pagamento. type: string nullable: true provider: type: string nullable: true enum: - pjbank - transfeera - null description: Provedor associado ao documento da cobrança; null quando a referência interna já foi reservada e o BankSlip ou seu provedor ainda não está disponível. O campo não é emitido no ramo de link de pagamento. required: - id - kind invoice: description: Dados da nota fiscal ou da emissão fiscal associada ao recurso. type: object properties: batch_id: description: UUID do lote fiscal utilizado para acompanhar o processamento da NFS-e. type: string format: uuid id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid nullable: true status: type: string description: Situação do lote no emissor. number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true access_key: description: Chave de acesso da NFS-e retornada pelo emissor após autorização. type: string nullable: true xml_url: description: URL de download do XML fiscal, quando disponibilizado pelo emissor. type: string nullable: true pdf_url: description: URL de download do PDF fiscal, quando a geração estiver disponível. type: string nullable: true pdf_status: description: 'Disponibilidade do PDF: processing em geração, available disponível ou unavailable indisponível.' type: string enum: - processing - available - unavailable error: $ref: '#/components/schemas/PublicContractFiscalFailure' description: Falha fiscal pública de FalhaDaNotaResource::deOuNulo; null quando não houve causa de falha. required: - batch_id - id - status - number - access_key - xml_url - pdf_url - pdf_status - error PublicContractScanTextField: type: object required: - value - source properties: value: description: Texto lido no documento; null quando não identificado. type: string nullable: true source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. PublicContractScanBooleanField: type: object required: - value - source properties: value: description: Indicação lógica lida no documento; null quando não identificada. type: boolean nullable: true source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. PublicContractScanDateField: type: object required: - value - source properties: value: description: Data lida no documento em AAAA-MM-DD; null quando não identificada. type: string nullable: true format: date source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. PublicContractScanMoneyField: type: object required: - value - source properties: value: description: Valor monetário lido no documento, em reais, como texto decimal com duas casas; null quando não identificado. type: string nullable: true pattern: ^-?[0-9]+\.[0-9]{2}$ source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. PublicContractScanUuidField: type: object required: - value - source properties: value: description: UUID do cadastro sugerido pela leitura; null quando não há vínculo identificado. type: string format: uuid nullable: true source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. PublicContractScanProviderSuggestion: type: object nullable: true required: - cpf_cnpj - type - name description: Sugestão opcional de cadastro para revisão humana. Não cria registros e não usa o formato value/source. Pode ser null quando não há sugestão disponível; pode ser omitida quando já existe fornecedor ou pessoa vinculada, ou a direção não admite fornecedor. Dados adicionais dependem da modalidade contratada e da consulta disponível. properties: cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `PJ`.' type: string enum: - PJ name: description: Nome utilizado para identificar e exibir o registro. type: string nullable: true fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string nullable: true email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: string address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: object properties: zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string nullable: true address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string nullable: true number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string nullable: true city: description: Município do endereço ou da prestação do serviço, conforme o recurso. type: string nullable: true uf: description: Sigla da unidade federativa brasileira do endereço, como MG. type: string nullable: true state_id: description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. type: string nullable: true city_id: description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. type: string nullable: true PublicContractScanClientSuggestion: type: object nullable: true required: - cpf_cnpj - type - name description: Sugestão opcional de cliente PF/PJ para revisão humana. Não cria cadastro; pode ser null ou ausente. Contatos e endereço são opcionais. properties: cpf_cnpj: type: string description: CPF numérico ou CNPJ normalizado, que pode ser alfanumérico. type: description: 'Classificação do recurso ou modalidade da operação; utilize as opções previstas neste schema. Opções: `PF`, `PJ`.' type: string enum: - PF - PJ name: description: Nome utilizado para identificar e exibir o registro. type: string nullable: true fantasy_name: description: Nome fantasia pelo qual a pessoa jurídica é conhecida comercialmente. type: string nullable: true email: description: Endereço de e-mail do contato ou usuário associado ao recurso. type: string nullable: true phones: description: Números de telefone vinculados ao cadastro e suas classificações. type: array items: type: string address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: object properties: zipcode: description: Código postal do endereço; no Brasil, CEP com oito dígitos. type: string nullable: true address: description: Logradouro ou endereço de contato, conforme a estrutura declarada neste recurso. type: string nullable: true number: description: Número de identificação do documento ou registro; preserve zeros à esquerda quando textual. type: string nullable: true complement: description: Complemento do endereço, como sala, bloco ou apartamento. type: string nullable: true neighborhood: description: Bairro do endereço informado. type: string nullable: true city: description: Município do endereço ou da prestação do serviço, conforme o recurso. type: string nullable: true uf: description: Sigla da unidade federativa brasileira do endereço, como MG. type: string nullable: true state_id: description: Identificador textual do estado no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. type: string nullable: true city_id: description: Identificador textual do município no catálogo do próprio tenant. Aceita IDs legados numéricos textuais, como "1" ou "21", além de UUID; não é exclusivamente UUID. Preserve o valor retornado, sem converter para inteiro. type: string nullable: true PublicContractScanDraft: type: object required: - provider_name - provider_document - paid - payment_date - payment_amount - payer_document - payer_name - document_number - direction - attachment_id - provider_id - std_launch_id - category_id - amount - due_date - issue_date - net_amount - cnpj - category_ids - std_launch_candidates - suggested_alias - notes - generated_for_entity - generated_for_entity_id - suggested_person_name - suggested_provider_name - suggested_provider_document properties: provider_name: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo provider_name da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. provider_document: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo provider_document da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. paid: $ref: '#/components/schemas/PublicContractScanBooleanField' description: Campo paid da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. payment_date: $ref: '#/components/schemas/PublicContractScanDateField' description: Campo payment_date da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. payment_amount: $ref: '#/components/schemas/PublicContractScanMoneyField' description: Campo payment_amount da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. payer_document: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo payer_document da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. payer_name: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo payer_name da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. document_number: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo document_number da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. direction: type: object required: - value - source properties: value: description: 'Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. Opções: `payable`, `receivable`.' type: string enum: - payable - receivable - null nullable: true source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. attachment_id: type: string description: Identificador do anexo disponível, ou string vazia enquanto não há anexo no rascunho. provider_id: $ref: '#/components/schemas/PublicContractScanUuidField' description: Campo provider_id da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. std_launch_id: $ref: '#/components/schemas/PublicContractScanUuidField' description: Campo std_launch_id da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. category_id: $ref: '#/components/schemas/PublicContractScanUuidField' description: Campo category_id da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. amount: $ref: '#/components/schemas/PublicContractScanMoneyField' description: Campo amount da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. due_date: $ref: '#/components/schemas/PublicContractScanDateField' description: Campo due_date da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. issue_date: $ref: '#/components/schemas/PublicContractScanDateField' description: Campo issue_date da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. net_amount: $ref: '#/components/schemas/PublicContractScanMoneyField' description: Campo net_amount da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. cnpj: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo cnpj da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. category_ids: description: UUIDs das categorias financeiras relacionadas ao documento lido. type: array items: type: string format: uuid std_launch_candidates: description: Lançamentos padrão candidatos à classificação do documento, para conferência. type: array items: type: object required: - id - name - alias properties: id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid name: description: Nome utilizado para identificar e exibir o registro. type: string alias: description: Nome alternativo pelo qual o cadastro ou lançamento pode ser reconhecido. type: string suggested_alias: description: Nome alternativo sugerido para reconhecer futuros documentos semelhantes. type: string nullable: true notes: description: Observações da leitura, incluindo limitações, inconsistências ou motivo de falha. type: array items: type: string generated_for_entity: type: object required: - value - source properties: value: description: 'Valor associado ao recurso ou informação extraída; a unidade e o tipo dependem deste schema. Opções: `provider`, `employee`, `intern`, `partner`, `client`.' type: string enum: - provider - employee - intern - partner - client - null nullable: true source: description: Origem da informação lida ou vinculada ao recurso; null indica ausência de evidência quando aceito. type: string nullable: true description: Valor lido e sua procedência. Campo vazio tem value e source ambos null. generated_for_entity_id: $ref: '#/components/schemas/PublicContractScanUuidField' description: Campo generated_for_entity_id da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. suggested_person_name: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo suggested_person_name da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. suggested_provider_name: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo suggested_provider_name da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. suggested_provider_document: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo suggested_provider_document da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. provider_suggestion: $ref: '#/components/schemas/PublicContractScanProviderSuggestion' description: Campo provider_suggestion da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. client_id: $ref: '#/components/schemas/PublicContractScanUuidField' description: Campo client_id da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. client_name: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo client_name da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. client_document: $ref: '#/components/schemas/PublicContractScanTextField' description: Campo client_document da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. client_suggestion: $ref: '#/components/schemas/PublicContractScanClientSuggestion' description: Campo client_suggestion da representação produzida pela fonte indicada; preserve o tipo e a condição de presença declarados. requested_engine: description: 'Motor de leitura solicitado: traditional, economic ou ai, conforme o enum.' type: string enum: - traditional - economic - ai effective_engine: description: 'Motor que efetivamente realizou a leitura, inclusive quando houve alternativa ao solicitado. Opções: `traditional`, `ai`.' type: string enum: - traditional - ai operation_id: description: UUID da operação preparada; utilizado para acompanhar o processamento sem reenviar a emissão. type: string format: uuid nullable: true fallback_reason: description: Motivo pelo qual foi utilizada uma alternativa ao processamento originalmente solicitado. type: string nullable: true selected_page: description: Página do documento selecionada como evidência da informação extraída. type: integer minimum: 1 page_hash: description: Identificação do conteúdo da página usado para conferir a evidência da leitura. type: string ocr_context_truncated: description: Indica que o texto da leitura óptica foi reduzido por limite de contexto. type: boolean field_evidence: description: Evidências do documento associadas aos campos extraídos, para conferência humana. type: object additionalProperties: type: object required: - page - quote properties: page: description: Número da página a consultar ou posicionar no documento, conforme a operação. type: integer minimum: 1 quote: description: Trecho do documento que fundamenta a informação extraída. type: string x-map-reason: DocumentPolicy::validate monta evidence por nome do campo efetivamente extraído e por classificações resolvidas; cada valor contém page e quote. PremiumScanService repassa esse mapa em field_evidence; o conjunto de chaves varia por documento. description: Rascunho na raiz, sem envelope data. Nenhuma conta é criada pela leitura. Campos lidos usam value/source; listas, notas, identificador do anexo e sugestões de cadastro possuem os formatos próprios declarados. Valores monetários são strings decimais, datas são YYYY-MM-DD. PublicContractScanStatus: allOf: - $ref: '#/components/schemas/PublicContractScanDraft' - type: object required: - status - scan_id - requested_engine properties: status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `pending`, `ready`, `failed`.' type: string enum: - pending - ready - failed scan_id: description: UUID da leitura de documento; use-o para consultar o processamento assíncrono. type: string format: uuid requested_engine: description: 'Motor de leitura solicitado: traditional, economic ou ai, conforme o enum.' type: string enum: - traditional - economic - ai description: Estado assíncrono na raiz, sem envelope data. pending e failed preservam os campos básicos do rascunho vazios (value/source null), attachment_id vazio, listas vazias e provider_suggestion null. ready contém o rascunho lido; provider_suggestion pode estar ausente quando não aplicável. notes informa limitações ou falha. PublicContractPixMandateEligibility: description: Verificações de elegibilidade do recebível e motivos que impedem ativar o PIX Automático. type: object required: - available - reason - message properties: available: description: Indica se o recurso está disponível para uso no estado atual. type: boolean reason: description: Motivo informado para a decisão, recusa ou mudança de estado do recurso. type: string nullable: true message: description: Mensagem legível que explica o resultado da operação. type: string nullable: true PublicContractPixMandate: description: Autorização do pagador para uma série de cobranças por PIX Automático. type: object required: - cancellation_pending - confirmation_pending - id - status - status_description - frequency - frequency_description - amount - start_date - end_date - expires_at - payer_name - payer_tax_id - description - qrcode_payload - qrcode_image_base64 - reject_reason - authorized_at - canceled_at - canceled_by - created_at properties: cancellation_pending: description: Indica que o cancelamento foi solicitado e aguarda confirmação do provedor. type: boolean confirmation_pending: description: Indica que a operação ainda aguarda confirmação do provedor ou pagador. type: boolean id: description: Identificador único do registro no recurso consultado. Identificação no formato UUID. type: string format: uuid status: description: 'Estado atual do recurso; os valores permitidos estão indicados no enum quando fechado. Opções: `pending`, `accepted`, `rejected`, `canceled`, `failed`, `expired`.' type: string enum: - pending - accepted - rejected - canceled - failed - expired status_description: description: Descrição legível da situação atual do recurso. type: string frequency: description: 'Periodicidade das cobranças autorizadas no PIX Automático. Opções: `monthly`, `quarterly`, `semiannual`, `annual`.' type: string enum: - monthly - quarterly - semiannual - annual frequency_description: description: Descrição legível da periodicidade das cobranças autorizadas. type: string amount: description: Montante financeiro da operação, em reais, preservando o tipo decimal declarado. type: string pattern: ^\d+\.\d{2}$ example: '150.00' start_date: description: Data inicial do período ou da vigência da autorização, em AAAA-MM-DD. type: string format: date end_date: description: Data final do período ou da vigência da autorização, em AAAA-MM-DD. type: string format: date nullable: true expires_at: description: Data ou instante em que termina a validade do recurso, conforme o formato declarado no schema. type: string format: date-time payer_name: description: Nome do pagador identificado no documento. type: string payer_tax_id: type: string description: CPF ou CNPJ mascarado. example: '***.123.456-**' description: description: Histórico descritivo utilizado para identificar o lançamento ou a operação. type: string nullable: true qrcode_payload: type: string nullable: true description: Disponível somente enquanto pendente, enviado ao provedor, não expirado e sem pedido de cancelamento. qrcode_image_base64: description: Imagem do QR Code codificada em base64 para apresentação ao pagador. type: string nullable: true reject_reason: description: Motivo da rejeição informado pelo provedor ou pela instituição financeira. type: string nullable: true authorized_at: description: Data e hora em que a autorização foi confirmada pelo pagador. type: string format: date-time nullable: true canceled_at: description: Data e hora em que o cancelamento foi registrado. type: string format: date-time nullable: true canceled_by: description: 'Identificador do responsável pelo cancelamento, quando disponível. Opções: `payer`, `receiver`, `None`.' type: string nullable: true enum: - payer - receiver - null created_at: description: Data e hora em que o registro foi criado. type: string format: date-time nullable: true PublicContractPixMandateAccountOverview: type: object properties: eligibility: $ref: '#/components/schemas/PublicContractPixMandateEligibility' description: Verificação de elegibilidade da recorrência vinculada. mandate: oneOf: - $ref: '#/components/schemas/PublicContractPixMandate' - type: string nullable: true enum: - null description: Vínculo mandate publicado quando existente, ou null conforme o produtor. A chave continua obrigatória; o ramo null é explícito porque nullable externo a allOf não torna nullable o schema referenciado. required: - eligibility - mandate description: Elegibilidade e autorização de PIX Automático de uma conta; mandato null sem vínculo. PublicContractPremiumSettings: type: object properties: module_ids: type: array items: type: string description: Identificadores dos módulos incluídos na configuração de acesso. managed_by_plan: type: boolean description: Indica que a disponibilidade do recurso é controlada pelo plano contratado. enum: - true document_ai_included: type: boolean description: Indica se a leitura de documentos por inteligência artificial está incluída. assistant_included: type: boolean description: Indica se o assistente está incluído na configuração de consumo. antifraud_included: type: boolean description: Indica se a análise antifraude está incluída na configuração de consumo. scan_mode: type: string enum: - ai - traditional description: Derivado do módulo de leitura de documentos contratado. governance_ai: type: boolean description: Estado efetivo, considerando plano e autorização vigente. chat_ai: type: boolean description: Derivado do módulo de assistente contratado. pricing_acknowledged_version: type: string description: Campo legado retornado null pelo PremiumSettingsService. nullable: true tariff_version: type: string description: Versão vigente da tabela de créditos. costs_per_1000: type: object additionalProperties: type: integer description: Créditos inteiros por mil unidades do serviço. x-map-reason: CreditsController::settings percorre CreditTariff::all e indexa por service; nomes de serviços dependem da tabela vigente e os valores são credits * 1000. description: Tarifa em créditos por mil unidades, por chave de serviço da tabela vigente. usage_summary: type: array maxItems: 0 items: $ref: '#/components/schemas/PublicContractStoredJsonValue' description: 'Lista vazia no código atual: settings intersecta sms/whatsapp/contracts com a raiz de forCompanies, cujas chaves são all_time/last_30_days. Não é um mapa de totais por serviço nesta versão.' required: - module_ids - managed_by_plan - document_ai_included - assistant_included - antifraud_included - scan_mode - governance_ai - chat_ai - pricing_acknowledged_version - tariff_version - costs_per_1000 - usage_summary description: Configuração premium conforme settings/updateSettings; valores gerenciados pelo plano e resumo efetivamente retornado pela fonte. ````