{"openapi":"3.1.0","info":{"title":"API REST","version":"1.0.0","summary":"API multiempresa e modular do ERP.","description":"API REST JSON modular do ERP, incluindo operações cadastrais e fiscais. Toda operação autenticada é isolada pela empresa do token e respeita os módulos contratados e as permissões atuais do usuário.\n\nO token retornado pelo login é exibido uma única vez. Envie-o em `Authorization: Bearer SEU_TOKEN`."},"servers":[{"url":"https://api.vexiona.com","description":"Servidor da API"}],"tags":[{"name":"Autenticação","description":"Emissão, inspeção e revogação de tokens Bearer."},{"name":"Contexto","description":"Empresa, usuário e módulos disponíveis."},{"name":"Clientes","description":"CRUD de clientes com exclusão lógica. Requer o módulo `clientes`."},{"name":"CRM — Visão geral","description":"Resumo da operação comercial respeitando a visibilidade do usuário."},{"name":"CRM — Oportunidades","description":"Oportunidades, movimentação, status e visibilidade por funil. Requer `crm`."},{"name":"CRM — Agenda","description":"Agenda comercial e mensagens de confirmação."},{"name":"CRM — Interações","description":"Atividades, comentários, reações, anexos e notificações."},{"name":"CRM — Relatórios","description":"Resumo e indicadores comerciais respeitando a visibilidade do usuário."},{"name":"CRM — Configuração","description":"Funis, etapas, etiquetas, campos customizados e permissões detalhadas."},{"name":"NFS-e","description":"Configuração, classes fiscais, emissão, consulta, cancelamento e documentos. Requer `nfse`."},{"name":"NFCom","description":"Configuração, emissão idempotente, consulta, cancelamento e documentos. Requer `nfse`."},{"name":"Centros de custos","description":"CRUD com inativação lógica e planos de contas relacionados. Requer `faturamento`."},{"name":"Contas bancárias","description":"CRUD de contas bancárias. Requer `contas_bancarias`."},{"name":"Usuários","description":"CRUD de usuários da empresa do token. Requer o módulo `usuarios`."},{"name":"Operação","description":"Disponibilidade da API."}],"security":[{"bearerAuth":[]}],"paths":{"/v1/health":{"get":{"tags":["Operação"],"summary":"Verifica a saúde da API","operationId":"health","security":[],"responses":{"200":{"description":"API disponível."},"503":{"description":"API degradada."}}}},"/v1/auth/login":{"post":{"tags":["Autenticação"],"summary":"Cria um token com e-mail e senha","operationId":"login","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"201":{"description":"Token criado. O valor de `access_token` não poderá ser consultado novamente.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LoginResponse"}}}}}},"401":{"description":"Credenciais inválidas.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Limite de tentativas excedido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/me":{"get":{"tags":["Autenticação"],"summary":"Retorna o contexto do token","operationId":"me","responses":{"200":{"description":"Contexto autenticado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/token":{"delete":{"tags":["Autenticação"],"summary":"Revoga o token atual","operationId":"revokeCurrentToken","responses":{"204":{"description":"Token revogado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/tokens":{"get":{"tags":["Autenticação"],"summary":"Lista os tokens do usuário","operationId":"listTokens","responses":{"200":{"description":"Tokens sem seus valores secretos."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Autenticação"],"summary":"Cria outro token","operationId":"createToken","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}}},"responses":{"201":{"description":"Token criado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/tokens/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"delete":{"tags":["Autenticação"],"summary":"Revoga um token do usuário","operationId":"revokeToken","responses":{"204":{"description":"Token revogado."},"404":{"description":"Token não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/modulos":{"get":{"tags":["Contexto"],"summary":"Lista módulos e permissões efetivas","operationId":"listModules","responses":{"200":{"description":"Módulos ativos da empresa."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/empresa":{"get":{"tags":["Contexto"],"summary":"Consulta a empresa do token","operationId":"showCompany","responses":{"200":{"description":"Empresa atual.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["Contexto"],"summary":"Atualiza os dados cadastrais da empresa","operationId":"updateCompany","description":"Não altera plano, vencimento, módulos ou status da assinatura.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyInput"}}}},"responses":{"200":{"description":"Empresa atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/clientes":{"get":{"tags":["Clientes"],"summary":"Lista clientes","operationId":"listCustomers","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca textual.","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}},{"name":"inclui_excluidos","in":"query","schema":{"type":"boolean","default":false}},{"name":"ordena_por","in":"query","schema":{"type":"string","enum":["id","codigo","nome","criado_em","atualizado_em"]}},{"name":"direcao","in":"query","schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"Clientes.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Customer"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Clientes"],"summary":"Cria um cliente","operationId":"createCustomer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCreateInput"}}}},"responses":{"201":{"description":"Cliente criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Customer"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/clientes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["Clientes"],"summary":"Consulta um cliente","operationId":"showCustomer","responses":{"200":{"description":"Cliente.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Customer"}}}}}},"404":{"description":"Cliente não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["Clientes"],"summary":"Atualiza um cliente","operationId":"updateCustomer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerInput"}}}},"responses":{"200":{"description":"Cliente atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Customer"}}}}}},"404":{"description":"Cliente não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Clientes"],"summary":"Envia um cliente à lixeira","operationId":"deleteCustomer","responses":{"204":{"description":"Cliente excluído logicamente."},"404":{"description":"Cliente não encontrado."},"409":{"description":"Cliente ocupado por operação financeira."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/usuarios":{"get":{"tags":["Usuários"],"summary":"Lista usuários","operationId":"listUsers","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca textual.","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Usuários.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Usuários"],"summary":"Cria um usuário","operationId":"createUser","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateInput"}}}},"responses":{"201":{"description":"Usuário criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}}}}},"409":{"description":"E-mail já utilizado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/usuarios/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["Usuários"],"summary":"Consulta um usuário","operationId":"showUser","responses":{"200":{"description":"Usuário.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}}}}},"404":{"description":"Usuário não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["Usuários"],"summary":"Atualiza um usuário","operationId":"updateUser","description":"Ao trocar a senha, todos os tokens desse usuário são invalidados.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateInput"}}}},"responses":{"200":{"description":"Usuário atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}}}}},"409":{"description":"Conflito de usuário."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Usuários"],"summary":"Exclui um usuário","operationId":"deleteUser","responses":{"204":{"description":"Usuário excluído."},"409":{"description":"Usuário próprio ou em uso."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/contas-bancarias":{"get":{"tags":["Contas bancárias"],"summary":"Lista contas bancárias","operationId":"listBankAccounts","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca textual.","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Contas bancárias.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BankAccount"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Contas bancárias"],"summary":"Cria uma conta bancária","operationId":"createBankAccount","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankAccountCreateInput"}}}},"responses":{"201":{"description":"Conta bancária criada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BankAccount"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/contas-bancarias/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["Contas bancárias"],"summary":"Consulta uma conta bancária","operationId":"showBankAccount","responses":{"200":{"description":"Conta bancária.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BankAccount"}}}}}},"404":{"description":"Conta não encontrada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["Contas bancárias"],"summary":"Atualiza uma conta bancária","operationId":"updateBankAccount","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankAccountInput"}}}},"responses":{"200":{"description":"Conta atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BankAccount"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Contas bancárias"],"summary":"Exclui uma conta bancária","operationId":"deleteBankAccount","responses":{"204":{"description":"Conta excluída."},"409":{"description":"Conta padrão, com saldo ou em uso."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/centros-custos":{"get":{"tags":["Centros de custos"],"summary":"Lista centros de custos","operationId":"listCostCenters","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca textual.","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Centros de custos.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CostCenter"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Centros de custos"],"summary":"Cria um centro de custo","operationId":"createCostCenter","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostCenterCreateInput"}}}},"responses":{"201":{"description":"Centro de custo criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CostCenter"}}}}}},"409":{"description":"Código já utilizado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/centros-custos/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["Centros de custos"],"summary":"Consulta um centro de custo","operationId":"showCostCenter","responses":{"200":{"description":"Centro de custo.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CostCenter"}}}}}},"404":{"description":"Centro de custo não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["Centros de custos"],"summary":"Atualiza um centro de custo","operationId":"updateCostCenter","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostCenterInput"}}}},"responses":{"200":{"description":"Centro de custo atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CostCenter"}}}}}},"409":{"description":"Código já utilizado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Centros de custos"],"summary":"Inativa um centro de custo","operationId":"deactivateCostCenter","description":"A inativação preserva os vínculos históricos e remove o centro das novas seleções de Contas a Pagar e Contas a Receber.","responses":{"204":{"description":"Centro de custo inativado."},"404":{"description":"Centro de custo não encontrado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfse/configuracao":{"get":{"tags":["NFS-e"],"summary":"Consulta a configuração segura da NFS-e","operationId":"showNfseConfiguration","description":"Tokens, senhas e segredos nunca são retornados.","responses":{"200":{"description":"Configuração da NFS-e.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseConfiguration"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["NFS-e"],"summary":"Atualiza a configuração da NFS-e","operationId":"updateNfseConfiguration","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfseConfigurationInput"}}}},"responses":{"200":{"description":"Configuração atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseConfiguration"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfse/configuracao/sincronizar":{"post":{"tags":["NFS-e"],"summary":"Provisiona ou sincroniza a empresa emissora","operationId":"syncNfseIssuer","responses":{"200":{"description":"Empresa emissora sincronizada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/status":{"get":{"tags":["NFS-e"],"summary":"Testa a conexão e identifica o modelo municipal","operationId":"nfseStatus","responses":{"200":{"description":"Status do serviço de NFS-e."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/classes-fiscais":{"get":{"tags":["NFS-e"],"summary":"Lista classes fiscais de serviço","operationId":"listNfseTaxClasses","responses":{"200":{"description":"Classes fiscais disponíveis."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}},"post":{"tags":["NFS-e"],"summary":"Cria ou atualiza uma classe fiscal de serviço","operationId":"saveNfseTaxClass","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfseTaxClassInput"}}}},"responses":{"201":{"description":"Classe fiscal salva."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/notas":{"get":{"tags":["NFS-e"],"summary":"Lista NFS-e da empresa","operationId":"listNfseNotes","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca por cliente, número, UUID, chave ou request ID.","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"ambiente","in":"query","schema":{"type":"integer","enum":[1,2]}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"incluir_payloads","in":"query","description":"Inclui requisição e respostas fiscais armazenadas.","schema":{"type":"boolean","default":false}},{"name":"origem","in":"query","schema":{"type":"string","enum":["ordem_servico","contrato_servico","avulsa","pdv"]}},{"name":"importada","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"NFS-e.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NfseNote"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["NFS-e"],"summary":"Emite uma NFS-e de uma Ordem de Serviço","operationId":"issueNfse","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Referência única da emissão, com até 120 caracteres. Repetições com o mesmo payload não geram outra nota.","schema":{"type":"string","maxLength":120}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfseIssueRequest"}}}},"responses":{"200":{"description":"Emissão já processada para a mesma chave.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseNote"}}}}}},"201":{"description":"Emissão registrada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/notas/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["NFS-e"],"summary":"Consulta uma NFS-e","operationId":"showNfseNote","parameters":[{"name":"incluir_payloads","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"NFS-e.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseNote"}}}}}},"404":{"description":"NFS-e não encontrada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfse/notas/{id}/sincronizar":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["NFS-e"],"summary":"Consulta o provedor e atualiza a NFS-e","operationId":"syncNfseNote","responses":{"200":{"description":"NFS-e sincronizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/notas/{id}/cancelar":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["NFS-e"],"summary":"Solicita o cancelamento da NFS-e","operationId":"cancelNfseNote","description":"Motivos: 1 erro de emissão; 2 serviço não prestado; 4 duplicidade.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfseCancelRequest"}}}},"responses":{"200":{"description":"Cancelamento processado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfseNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfse/notas/{id}/documentos/{tipo}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"name":"tipo","in":"path","required":true,"schema":{"type":"string","enum":["xml","pdf","rps"]}}],"get":{"tags":["NFS-e"],"summary":"Abre um documento da NFS-e","operationId":"openNfseDocument","responses":{"302":{"description":"Redirecionamento seguro ao documento."},"404":{"description":"Documento indisponível."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfcom/configuracao":{"get":{"tags":["NFCom"],"summary":"Consulta a configuração segura da NFCom","operationId":"showNfcomConfiguration","responses":{"200":{"description":"Configuração da NFCom.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomConfiguration"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"tags":["NFCom"],"summary":"Atualiza a configuração da NFCom","operationId":"updateNfcomConfiguration","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfcomConfigurationInput"}}}},"responses":{"200":{"description":"Configuração atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomConfiguration"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfcom/status":{"get":{"tags":["NFCom"],"summary":"Testa a conexão com o serviço NFCom","operationId":"nfcomStatus","responses":{"200":{"description":"Status do serviço NFCom."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfcom/notas":{"get":{"tags":["NFCom"],"summary":"Lista NFCom da empresa","operationId":"listNfcomNotes","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"q","in":"query","description":"Busca por cliente, número, UUID, chave ou request ID.","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"ambiente","in":"query","schema":{"type":"integer","enum":[1,2]}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"incluir_payloads","in":"query","description":"Inclui requisição e respostas fiscais armazenadas.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"NFCom.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NfcomNote"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["NFCom"],"summary":"Emite uma NFCom","operationId":"issueNfcom","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Referência única da emissão, com até 120 caracteres. Repetições com o mesmo payload não geram outra nota.","schema":{"type":"string","maxLength":120}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfcomIssueRequest"}}}},"responses":{"200":{"description":"Emissão já processada para a mesma chave.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"201":{"description":"Emissão registrada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfcom/notas/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["NFCom"],"summary":"Consulta uma NFCom","operationId":"showNfcomNote","parameters":[{"name":"incluir_payloads","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"NFCom.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"404":{"description":"NFCom não encontrada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nfcom/consultas":{"post":{"tags":["NFCom"],"summary":"Consulta e concilia uma NFCom por UUID ou chave","operationId":"lookupNfcom","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfcomLookupRequest"}}}},"responses":{"200":{"description":"NFCom consultada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfcom/notas/{id}/sincronizar":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["NFCom"],"summary":"Atualiza o status de uma NFCom","operationId":"syncNfcomNote","responses":{"200":{"description":"NFCom sincronizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfcom/notas/{id}/cancelar":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["NFCom"],"summary":"Cancela uma NFCom autorizada","operationId":"cancelNfcomNote","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NfcomCancelRequest"}}}},"responses":{"200":{"description":"NFCom cancelada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NfcomNote"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/nfcom/notas/{id}/documentos/{tipo}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"name":"tipo","in":"path","required":true,"schema":{"type":"string","enum":["xml","xml-cancelamento","danfecom"]}}],"get":{"tags":["NFCom"],"summary":"Baixa um documento autenticado da NFCom","operationId":"downloadNfcomDocument","responses":{"200":{"description":"XML ou PDF.","content":{"application/xml":{"schema":{"type":"string"}},"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Documento indisponível."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Estado fiscal ou chave de idempotência incompatível."},"502":{"description":"O provedor fiscal recusou ou não concluiu a operação."},"503":{"description":"Integração fiscal não configurada ou indisponível."}}}},"/v1/crm/resumo":{"get":{"tags":["CRM — Visão geral"],"summary":"Resume a operação atual do CRM","operationId":"crmSummary","description":"Valores financeiros são omitidos quando o usuário não possui `visualizar_valores`.","responses":{"200":{"description":"Resumo do CRM.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmSummary"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/metadados":{"get":{"tags":["CRM — Configuração"],"summary":"Lista enums e permissões efetivas do CRM","operationId":"crmMetadata","responses":{"200":{"description":"Metadados para integrações.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmMetadata"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/relatorios":{"get":{"tags":["CRM — Relatórios"],"summary":"Gera indicadores comerciais por período","operationId":"crmReports","description":"Requer `visualizar_relatorios`; valores dependem de `visualizar_valores`.","parameters":[{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Relatório consolidado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmReport"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/pipelines":{"get":{"tags":["CRM — Configuração"],"summary":"Lista funis acessíveis","operationId":"listCrmPipelines","parameters":[{"name":"incluir_inativos","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Funis.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmPipeline"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["CRM — Configuração"],"summary":"Cria um funil","operationId":"createCrmPipeline","description":"Requer `gerenciar_funis`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmPipelineInput"}}}},"responses":{"201":{"description":"Funil criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmPipeline"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/pipelines/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Consulta um funil e suas etapas","operationId":"showCrmPipeline","responses":{"200":{"description":"Funil.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmPipeline"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Configuração"],"summary":"Atualiza ou reativa um funil","operationId":"updateCrmPipeline","description":"Requer `gerenciar_funis`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmPipelineUpdateInput"}}}},"responses":{"200":{"description":"Funil atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmPipeline"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Configuração"],"summary":"Desativa um funil","operationId":"deleteCrmPipeline","description":"A exclusão é lógica e falha quando há oportunidades ativas.","responses":{"204":{"description":"Funil desativado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/pipelines/{id}/etapas":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Lista etapas do funil","operationId":"listCrmStages","parameters":[{"name":"incluir_inativos","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Etapas.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmStage"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"post":{"tags":["CRM — Configuração"],"summary":"Cria uma etapa no funil","operationId":"createCrmStage","description":"Requer `gerenciar_funis`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmStageInput"}}}},"responses":{"201":{"description":"Etapa criada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmStage"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/etapas/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Consulta uma etapa","operationId":"showCrmStage","responses":{"200":{"description":"Etapa.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmStage"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Configuração"],"summary":"Atualiza uma etapa","operationId":"updateCrmStage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmStageUpdateInput"}}}},"responses":{"200":{"description":"Etapa atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmStage"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Configuração"],"summary":"Desativa uma etapa","operationId":"deleteCrmStage","responses":{"204":{"description":"Etapa desativada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/etapas/{id}/mover":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Configuração"],"summary":"Altera a ordem de uma etapa","operationId":"moveCrmStage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmStageMoveInput"}}}},"responses":{"200":{"description":"Etapa reordenada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmStage"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/etiquetas":{"get":{"tags":["CRM — Configuração"],"summary":"Lista etiquetas","operationId":"listCrmLabels","parameters":[{"name":"incluir_inativos","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Etiquetas.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmLabel"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["CRM — Configuração"],"summary":"Cria uma etiqueta","operationId":"createCrmLabel","description":"Requer `gerenciar_etiquetas`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmLabelInput"}}}},"responses":{"201":{"description":"Etiqueta criada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmLabel"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/etiquetas/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Consulta uma etiqueta","operationId":"showCrmLabel","responses":{"200":{"description":"Etiqueta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmLabel"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Configuração"],"summary":"Atualiza uma etiqueta","operationId":"updateCrmLabel","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmLabelUpdateInput"}}}},"responses":{"200":{"description":"Etiqueta atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmLabel"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}},"delete":{"tags":["CRM — Configuração"],"summary":"Desativa uma etiqueta","operationId":"deleteCrmLabel","responses":{"204":{"description":"Etiqueta desativada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/campos-customizados":{"get":{"tags":["CRM — Configuração"],"summary":"Lista campos customizados","operationId":"listCrmCustomFields","parameters":[{"name":"incluir_inativos","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Campos customizados.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmCustomField"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["CRM — Configuração"],"summary":"Cria um campo customizado","operationId":"createCrmCustomField","description":"Requer `gerenciar_configuracoes`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmCustomFieldInput"}}}},"responses":{"201":{"description":"Campo criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmCustomField"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/campos-customizados/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Consulta um campo customizado","operationId":"showCrmCustomField","responses":{"200":{"description":"Campo customizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmCustomField"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Configuração"],"summary":"Atualiza um campo customizado","operationId":"updateCrmCustomField","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmCustomFieldUpdateInput"}}}},"responses":{"200":{"description":"Campo atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmCustomField"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Configuração"],"summary":"Desativa um campo customizado","operationId":"deleteCrmCustomField","responses":{"204":{"description":"Campo desativado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/usuarios/{id}/permissoes":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Configuração"],"summary":"Consulta permissões detalhadas e acesso a funis","operationId":"showCrmUserPermissions","description":"Requer `gerenciar_configuracoes`.","responses":{"200":{"description":"Permissões do usuário.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmUserPermissions"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Configuração"],"summary":"Atualiza permissões detalhadas e acesso a funis","operationId":"updateCrmUserPermissions","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmUserPermissionsInput"}}}},"responses":{"200":{"description":"Permissões atualizadas.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmUserPermissions"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/oportunidades":{"get":{"tags":["CRM — Oportunidades"],"summary":"Lista oportunidades visíveis","operationId":"listCrmOpportunities","description":"Aplica privacidade e acesso aos funis. Valores podem ser omitidos.","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","schema":{"type":"string","enum":["aberta","ganha","perdida","pausada","arquivada"]}},{"name":"prioridade","in":"query","schema":{"type":"string","enum":["baixa","normal","alta","urgente"]}},{"name":"pipeline_id","in":"query","schema":{"type":"integer"}},{"name":"etapa_id","in":"query","schema":{"type":"integer"}},{"name":"cliente_id","in":"query","schema":{"type":"integer"}},{"name":"responsavel_id","in":"query","schema":{"type":"integer"}},{"name":"etiqueta_id","in":"query","schema":{"type":"integer"}},{"name":"incluir_arquivadas","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Oportunidades.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmOpportunity"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["CRM — Oportunidades"],"summary":"Cria uma oportunidade","operationId":"createCrmOpportunity","description":"Requer `criar_oportunidade`. Campos financeiros exigem `editar_valores`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmOpportunityCreateInput"}}}},"responses":{"201":{"description":"Oportunidade criada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmOpportunity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/oportunidades/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Oportunidades"],"summary":"Consulta a oportunidade completa","operationId":"showCrmOpportunity","responses":{"200":{"description":"Oportunidade com etiquetas, membros e campos customizados.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmOpportunity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Oportunidades"],"summary":"Atualiza uma oportunidade","operationId":"updateCrmOpportunity","description":"Requer `editar_oportunidade`; membros exigem `gerenciar_membros`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmOpportunityInput"}}}},"responses":{"200":{"description":"Oportunidade atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmOpportunity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Oportunidades"],"summary":"Arquiva uma oportunidade","operationId":"archiveCrmOpportunity","description":"Exclusão lógica; requer `excluir_oportunidade`.","responses":{"204":{"description":"Oportunidade arquivada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/oportunidades/{id}/mover":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Oportunidades"],"summary":"Move a oportunidade para outra etapa","operationId":"moveCrmOpportunity","description":"Requer `mover_oportunidade`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmOpportunityMoveInput"}}}},"responses":{"200":{"description":"Oportunidade movimentada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmOpportunity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/oportunidades/{id}/status":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Oportunidades"],"summary":"Altera o status comercial","operationId":"changeCrmOpportunityStatus","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmOpportunityStatusInput"}}}},"responses":{"200":{"description":"Status alterado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmOpportunity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/atividades":{"get":{"tags":["CRM — Interações"],"summary":"Lista atividades visíveis em todo o CRM","operationId":"listCrmActivities","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"cliente_id","in":"query","schema":{"type":"integer"}},{"name":"usuario_id","in":"query","schema":{"type":"integer"}},{"name":"tipo","in":"query","schema":{"type":"string"}},{"name":"concluida","in":"query","schema":{"type":"boolean"}},{"name":"atrasada","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Atividades.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmActivity"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/oportunidades/{id}/atividades":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Interações"],"summary":"Lista atividades da oportunidade","operationId":"listCrmOpportunityActivities","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Atividades.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmActivity"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"post":{"tags":["CRM — Interações"],"summary":"Registra uma atividade","operationId":"createCrmActivity","description":"Requer `criar_atividade`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmActivityInput"}}}},"responses":{"201":{"description":"Atividade criada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmActivity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/atividades/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Interações"],"summary":"Consulta uma atividade","operationId":"showCrmActivity","responses":{"200":{"description":"Atividade.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmActivity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Interações"],"summary":"Atualiza uma atividade manual","operationId":"updateCrmActivity","description":"Atividades automáticas são somente leitura.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmActivityUpdateInput"}}}},"responses":{"200":{"description":"Atividade atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmActivity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}},"delete":{"tags":["CRM — Interações"],"summary":"Exclui uma atividade manual","operationId":"deleteCrmActivity","responses":{"204":{"description":"Atividade excluída."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/atividades/{id}/concluir":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Interações"],"summary":"Conclui ou reabre uma atividade","operationId":"completeCrmActivity","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmActivityCompletionInput"}}}},"responses":{"200":{"description":"Atividade atualizada.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmActivity"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/atividades/{id}/reacoes":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Interações"],"summary":"Adiciona uma reação à atividade","operationId":"addCrmActivityReaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmReactionInput"}}}},"responses":{"200":{"description":"Reações atualizadas."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Interações"],"summary":"Remove a própria reação da atividade","operationId":"deleteCrmActivityReaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmReactionInput"}}}},"responses":{"200":{"description":"Reações atualizadas."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/oportunidades/{id}/comentarios":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Interações"],"summary":"Lista comentários e respostas","operationId":"listCrmComments","responses":{"200":{"description":"Comentários.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmComment"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"post":{"tags":["CRM — Interações"],"summary":"Publica comentário ou resposta","operationId":"createCrmComment","description":"Use `parent_id` para responder; requer `comentar`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmCommentInput"}}}},"responses":{"201":{"description":"Comentário criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmComment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/comentarios/{id}/reacoes":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Interações"],"summary":"Adiciona uma reação ao comentário","operationId":"addCrmCommentReaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmReactionInput"}}}},"responses":{"200":{"description":"Reações atualizadas."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Interações"],"summary":"Remove a própria reação do comentário","operationId":"deleteCrmCommentReaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmReactionInput"}}}},"responses":{"200":{"description":"Reações atualizadas."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/oportunidades/{id}/anexos":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Interações"],"summary":"Lista anexos da oportunidade","operationId":"listCrmAttachments","responses":{"200":{"description":"Anexos.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmAttachment"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"post":{"tags":["CRM — Interações"],"summary":"Envia um anexo","operationId":"uploadCrmAttachment","description":"Requer `anexar_arquivos`. Envie um arquivo por requisição.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["arquivo"],"properties":{"arquivo":{"type":"string","format":"binary"}}}}}},"responses":{"201":{"description":"Anexo enviado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmAttachment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."},"409":{"description":"O recurso está em uso ou a operação conflita com seu estado atual."}}}},"/v1/crm/anexos/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Interações"],"summary":"Baixa um anexo autenticado","operationId":"downloadCrmAttachment","responses":{"200":{"description":"Conteúdo binário do arquivo.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"302":{"description":"Redirecionamento seguro para o armazenamento."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Interações"],"summary":"Exclui um anexo","operationId":"deleteCrmAttachment","description":"Requer `excluir_anexos`.","responses":{"204":{"description":"Anexo excluído."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/agenda":{"get":{"tags":["CRM — Agenda"],"summary":"Lista agendamentos visíveis","operationId":"listCrmAppointments","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"tipo","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"oportunidade_id","in":"query","schema":{"type":"integer"}},{"name":"cliente_id","in":"query","schema":{"type":"integer"}},{"name":"responsavel_id","in":"query","schema":{"type":"integer"}},{"name":"pipeline_id","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Agendamentos.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmAppointment"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["CRM — Agenda"],"summary":"Cria um agendamento","operationId":"createCrmAppointment","description":"Requer `gerenciar_agenda`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmAppointmentCreateInput"}}}},"responses":{"201":{"description":"Agendamento criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmAppointment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/agenda/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"get":{"tags":["CRM — Agenda"],"summary":"Consulta um agendamento","operationId":"showCrmAppointment","responses":{"200":{"description":"Agendamento.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmAppointment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"patch":{"tags":["CRM — Agenda"],"summary":"Atualiza um agendamento","operationId":"updateCrmAppointment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmAppointmentInput"}}}},"responses":{"200":{"description":"Agendamento atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmAppointment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}},"delete":{"tags":["CRM — Agenda"],"summary":"Cancela um agendamento","operationId":"cancelCrmAppointment","description":"Exclusão lógica: altera o status para `cancelado`.","responses":{"204":{"description":"Agendamento cancelado."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/agenda/{id}/status":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Agenda"],"summary":"Altera o status do agendamento","operationId":"changeCrmAppointmentStatus","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmAppointmentStatusInput"}}}},"responses":{"200":{"description":"Status atualizado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrmAppointment"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/agenda/{id}/whatsapp":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Agenda"],"summary":"Envia confirmação, lembrete ou remarcação por WhatsApp","operationId":"sendCrmAppointmentWhatsapp","description":"Também requer o módulo WhatsApp e permissão de criação.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmAppointmentWhatsappInput"}}}},"responses":{"200":{"description":"Mensagem enviada."},"502":{"description":"Falha no provedor WhatsApp."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Erro de validação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}},"/v1/crm/notificacoes":{"get":{"tags":["CRM — Interações"],"summary":"Lista notificações do usuário autenticado","operationId":"listCrmNotifications","parameters":[{"name":"pagina","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"por_pagina","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"lida","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Notificações.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrmNotification"}},"meta":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/notificacoes/ler-todas":{"post":{"tags":["CRM — Interações"],"summary":"Marca todas as notificações como lidas","operationId":"readAllCrmNotifications","responses":{"200":{"description":"Quantidade de notificações atualizadas."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/crm/notificacoes/{id}/ler":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"post":{"tags":["CRM — Interações"],"summary":"Marca uma notificação como lida","operationId":"readCrmNotification","responses":{"200":{"description":"Notificação atualizada."},"401":{"description":"Token ausente, inválido, expirado ou revogado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Módulo desabilitado, permissão insuficiente ou conta bloqueada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Recurso não encontrado ou fora da visibilidade do usuário."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API token"}},"schemas":{"ErrorResponse":{"type":"object","required":["error","request_id"],"example":{"error":{"code":"module_not_enabled","message":"Este módulo não está habilitado para a empresa.","details":{"modulo":"clientes","acao":"visualizar"}},"request_id":"b347d8f77d61c084d858fe10"},"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true}}},"request_id":{"type":"string"}}},"Pagination":{"type":"object","properties":{"pagina":{"type":"integer"},"por_pagina":{"type":"integer"},"total":{"type":"integer"},"ultima_pagina":{"type":"integer"}}},"LoginRequest":{"type":"object","required":["email","senha"],"properties":{"email":{"type":"string","format":"email"},"senha":{"type":"string","format":"password"},"nome_token":{"type":"string","maxLength":100,"default":"Integração API"},"expira_em_dias":{"type":"integer","minimum":1,"maximum":365}}},"TokenRequest":{"type":"object","properties":{"nome":{"type":"string","maxLength":100},"expira_em_dias":{"type":"integer","minimum":1,"maximum":365}}},"LoginResponse":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"integer"},"nome":{"type":"string"},"access_token":{"type":"string"},"token_type":{"type":"string","const":"Bearer"},"expira_em":{"type":"string","format":"date-time"}}},"usuario":{"$ref":"#/components/schemas/User"},"empresa":{"$ref":"#/components/schemas/CompanySummary"}}},"CustomerInput":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"codigo_sequencial":{"type":["integer","null"],"readOnly":true},"tipo_pessoa":{"type":"string","enum":["fisica","juridica"],"default":"fisica"},"nome":{"type":"string","maxLength":200},"nome_fantasia":{"type":"string","maxLength":200},"cpf_cnpj":{"type":"string","maxLength":20},"ie":{"type":"string","maxLength":20},"im":{"type":"string","maxLength":30},"cnae_principal":{"type":"string","maxLength":20},"tipo_contribuinte":{"type":"string","enum":["contribuinte","isento","nao_contribuinte"]},"data_nascimento":{"type":["string","null"],"format":"date"},"email":{"type":"string","format":"email"},"telefone":{"type":"string"},"celular":{"type":"string"},"limite_credito":{"type":"number","minimum":0},"banco":{"type":"string"},"agencia":{"type":"string"},"conta_bancaria":{"type":"string"},"chave_pix":{"type":"string"},"cep":{"type":"string"},"endereco":{"type":"string"},"numero":{"type":"string"},"complemento":{"type":"string"},"bairro":{"type":"string"},"cidade":{"type":"string"},"uf":{"type":"string"},"observacoes":{"type":"string"},"observacoes_ocultas":{"type":"string","description":"Disponível apenas a perfis administrativos."},"ativo":{"type":"boolean"}},"example":{"tipo_pessoa":"juridica","nome":"Empresa Exemplo Ltda","nome_fantasia":"Exemplo","cpf_cnpj":"12.345.678/0001-95","email":"financeiro@exemplo.com","ativo":true}},"CustomerCreateInput":{"allOf":[{"$ref":"#/components/schemas/CustomerInput"},{"type":"object","required":["nome"]}]},"Customer":{"allOf":[{"$ref":"#/components/schemas/CustomerInput"},{"type":"object","properties":{"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true},"excluido_em":{"type":["string","null"],"format":"date-time"},"excluido":{"type":"boolean","readOnly":true}}}]},"UserCreateInput":{"type":"object","required":["nome","email","senha"],"properties":{"nome":{"type":"string","maxLength":100},"email":{"type":"string","format":"email"},"senha":{"type":"string","format":"password","minLength":12},"perfil":{"type":"string","default":"administrativo"},"telefone":{"type":"string"},"ativo":{"type":"boolean","default":true}}},"UserUpdateInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":100},"email":{"type":"string","format":"email"},"senha":{"type":"string","format":"password","minLength":12},"perfil":{"type":"string","default":"administrativo"},"telefone":{"type":"string"},"ativo":{"type":"boolean","default":true}}},"User":{"type":"object","properties":{"id":{"type":"integer"},"nome":{"type":"string"},"email":{"type":"string"},"perfil":{"type":"string"},"telefone":{"type":"string"},"ativo":{"type":"boolean"},"ultimo_acesso":{"type":["string","null"],"format":"date-time"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"BankAccountInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":120},"banco":{"type":"string","maxLength":120},"agencia":{"type":"string","maxLength":30},"conta":{"type":"string","maxLength":50},"tipo":{"type":"string","enum":["corrente","poupanca","investimento","dinheiro","outra"]},"saldo_inicial":{"type":"number"},"ativo":{"type":"boolean"},"observacoes":{"type":"string"}}},"BankAccountCreateInput":{"allOf":[{"$ref":"#/components/schemas/BankAccountInput"},{"type":"object","required":["nome"]}]},"BankAccount":{"allOf":[{"$ref":"#/components/schemas/BankAccountInput"},{"type":"object","properties":{"id":{"type":"integer"},"padrao":{"type":"boolean"},"data_saldo_inicial":{"type":["string","null"],"format":"date"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}}]},"CostCenterInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":120},"codigo":{"type":"string","maxLength":40,"pattern":"^[A-Za-z0-9][A-Za-z0-9._/\\-]*$"},"ativo":{"type":"boolean","default":true},"planos_contas_ids":{"type":"array","uniqueItems":true,"items":{"type":"integer","minimum":1}}}},"CostCenterCreateInput":{"allOf":[{"$ref":"#/components/schemas/CostCenterInput"},{"type":"object","required":["nome","codigo"]}]},"CostCenter":{"type":"object","properties":{"id":{"type":"integer"},"codigo":{"type":"string"},"nome":{"type":"string"},"ativo":{"type":"boolean"},"planos_contas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"codigo":{"type":"string"},"nome":{"type":"string"},"grupo_dre":{"type":"string"},"grupo_nome":{"type":["string","null"]},"ativo":{"type":"boolean"}}}},"total_lancamentos":{"type":"integer","readOnly":true},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CompanyInput":{"type":"object","properties":{"razao_social":{"type":"string"},"nome_fantasia":{"type":"string"},"cnpj":{"type":"string"},"ie":{"type":"string"},"telefone":{"type":"string"},"email":{"type":"string","format":"email"},"cep":{"type":"string"},"endereco":{"type":"string"},"numero":{"type":"string"},"complemento":{"type":"string"},"bairro":{"type":"string"},"cidade":{"type":"string"},"uf":{"type":"string"},"pais":{"type":"string"},"idioma":{"type":"string","enum":["pt_BR","en"]},"moeda":{"type":"string"}}},"CompanySummary":{"type":"object","properties":{"id":{"type":"integer"},"razao_social":{"type":"string"},"nome_fantasia":{"type":"string"}}},"Company":{"allOf":[{"$ref":"#/components/schemas/CompanyInput"},{"type":"object","properties":{"id":{"type":"integer"},"ativo":{"type":"boolean"},"status_conta":{"type":"string"},"plano":{"type":"string"},"data_vencimento":{"type":["string","null"],"format":"date"},"modulos":{"type":"array","items":{"type":"string"}},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}}]},"NfseConfigurationInput":{"type":"object","properties":{"ativo":{"type":"boolean"},"ambiente":{"type":"integer","enum":[1,2],"description":"1 produção; 2 homologação."},"classe_imposto_default":{"type":["string","null"],"maxLength":30},"tipo_tributacao":{"type":["string","null"],"maxLength":30},"unidade_empresa":{"type":["string","null"],"maxLength":20},"cnpj":{"type":"string","maxLength":20},"razao_social":{"type":"string","maxLength":200},"nome_fantasia":{"type":["string","null"],"maxLength":200},"ie":{"type":["string","null"],"maxLength":30},"im":{"type":["string","null"],"maxLength":30},"email":{"type":["string","null"],"format":"email"},"telefone":{"type":["string","null"],"maxLength":40},"cep":{"type":["string","null"],"maxLength":12},"endereco":{"type":["string","null"],"maxLength":200},"numero":{"type":["string","null"],"maxLength":20},"complemento":{"type":["string","null"],"maxLength":120},"bairro":{"type":["string","null"],"maxLength":120},"cidade":{"type":["string","null"],"maxLength":120},"uf":{"type":["string","null"],"minLength":2,"maxLength":2},"cnae":{"type":["string","null"],"maxLength":255},"nfse_rps_serie":{"type":["string","null"],"maxLength":5},"nfse_rps_numero":{"type":["integer","null"],"minimum":1},"nfse_rps_numero_dev":{"type":["integer","null"],"minimum":1},"nfse_lote_rps_numero":{"type":["integer","null"],"minimum":1},"nfse_login":{"type":["string","null"],"maxLength":120},"nfse_password":{"type":"string","writeOnly":true,"maxLength":120},"nfse_token":{"type":"string","writeOnly":true,"maxLength":160},"regime_apuracao_sn":{"type":["string","null"],"maxLength":2},"regime_especial_nacional":{"type":["string","null"],"maxLength":2},"regime_especial_municipal":{"type":["string","null"],"maxLength":2},"email_automatico_nfse":{"type":"boolean"},"ibs_cbs_situacao_tributaria":{"type":["string","null"],"maxLength":3},"ibs_cbs_classificacao_tributaria":{"type":["string","null"],"maxLength":6}}},"NfseConfiguration":{"type":"object","properties":{"ativo":{"type":"boolean"},"ambiente":{"type":"integer","enum":[1,2],"description":"1 produção; 2 homologação."},"classe_imposto_default":{"type":["string","null"],"maxLength":30},"tipo_tributacao":{"type":["string","null"],"maxLength":30},"unidade_empresa":{"type":["string","null"],"maxLength":20},"cnpj":{"type":"string","maxLength":20},"razao_social":{"type":"string","maxLength":200},"nome_fantasia":{"type":["string","null"],"maxLength":200},"ie":{"type":["string","null"],"maxLength":30},"im":{"type":["string","null"],"maxLength":30},"email":{"type":["string","null"],"format":"email"},"telefone":{"type":["string","null"],"maxLength":40},"cep":{"type":["string","null"],"maxLength":12},"endereco":{"type":["string","null"],"maxLength":200},"numero":{"type":["string","null"],"maxLength":20},"complemento":{"type":["string","null"],"maxLength":120},"bairro":{"type":["string","null"],"maxLength":120},"cidade":{"type":["string","null"],"maxLength":120},"uf":{"type":["string","null"],"minLength":2,"maxLength":2},"cnae":{"type":["string","null"],"maxLength":255},"nfse_rps_serie":{"type":["string","null"],"maxLength":5},"nfse_rps_numero":{"type":["integer","null"],"minimum":1},"nfse_rps_numero_dev":{"type":["integer","null"],"minimum":1},"nfse_lote_rps_numero":{"type":["integer","null"],"minimum":1},"nfse_login":{"type":["string","null"],"maxLength":120},"nfse_password":{"type":"string","writeOnly":true,"maxLength":120},"nfse_token":{"type":"string","writeOnly":true,"maxLength":160},"regime_apuracao_sn":{"type":["string","null"],"maxLength":2},"regime_especial_nacional":{"type":["string","null"],"maxLength":2},"regime_especial_municipal":{"type":["string","null"],"maxLength":2},"email_automatico_nfse":{"type":"boolean"},"ibs_cbs_situacao_tributaria":{"type":["string","null"],"maxLength":3},"ibs_cbs_classificacao_tributaria":{"type":["string","null"],"maxLength":6},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true},"provider_empresa_id":{"type":["integer","null"],"readOnly":true},"credenciais_configuradas":{"type":"boolean","readOnly":true},"nfse_password_configurada":{"type":"boolean","readOnly":true},"nfse_token_configurado":{"type":"boolean","readOnly":true},"webhook_configurado":{"type":"boolean","readOnly":true},"ultimo_provisionamento_em":{"type":["string","null"],"format":"date-time","readOnly":true}}},"NfseTaxClassInput":{"type":"object","required":["descricao"],"properties":{"referencia":{"type":"string","maxLength":30,"description":"Omitir para criar uma nova referência."},"descricao":{"type":"string"},"tipo_emissao":{"type":"string"},"codigo_servico":{"type":"string"},"codigo_cnae":{"type":"string"},"codigo_tributacao_municipio":{"type":"string"},"natureza_operacao":{"type":"string"},"exigibilidade_iss":{"type":"string"},"iss_retido":{"type":"string","enum":["1","2"]},"responsavel_retencao":{"type":"string","enum":["1","2"]},"tributacao_iss":{"type":"string"},"tipo_imunidade":{"type":"string"},"nbs":{"type":"string"},"ibs_situacao_tributaria":{"type":"string","maxLength":3},"ibs_classificacao_tributaria":{"type":"string","maxLength":6},"cod_indicador_operacao":{"type":"string"},"classe_tipo_tributacao":{"type":"string"},"local_prestacao":{"type":"string"},"cep_local_prestacao":{"type":"string"},"regime_recolhimento":{"type":"string"},"forma_recolhimento":{"type":"string"},"iss":{"type":"number"},"pis":{"type":"number"},"cofins":{"type":"number"},"inss":{"type":"number"},"ir":{"type":"number"},"csll":{"type":"number"}}},"NfseIssueRequest":{"type":"object","required":["ordem_servico_id"],"properties":{"referencia":{"type":"string","maxLength":120,"deprecated":true,"description":"Alternativa ao header Idempotency-Key."},"ordem_servico_id":{"type":"integer","minimum":1},"valor_servicos":{"type":"number","exclusiveMinimum":0},"discriminacao":{"type":"string","maxLength":2000},"classe_imposto":{"type":"string","maxLength":30}},"example":{"ordem_servico_id":123,"valor_servicos":350,"discriminacao":"Serviços executados conforme Ordem de Serviço 123."}},"NfseCancelRequest":{"type":"object","required":["motivo"],"properties":{"motivo":{"type":"integer","enum":[1,2,4]}}},"NfseNote":{"type":"object","properties":{"id":{"type":"integer"},"origem":{"type":"string"},"origem_id":{"type":["integer","null"]},"ordem_servico_id":{"type":["integer","null"]},"ordem_servico_numero":{"type":["string","null"]},"cliente":{"type":"object","properties":{"id":{"type":["integer","null"]},"nome":{"type":["string","null"]},"documento":{"type":["string","null"]}}},"request_id":{"type":["string","null"]},"modelo":{"type":["string","null"]},"uuid":{"type":["string","null"],"format":"uuid"},"lote_uuid":{"type":["string","null"],"format":"uuid"},"ambiente":{"type":"integer","enum":[1,2]},"status":{"type":["string","null"]},"importada":{"type":"boolean"},"importacao_referencia":{"type":["string","null"]},"data_emissao_importada":{"type":["string","null"],"format":"date-time"},"motivo":{"type":["string","null"]},"numero":{"type":["string","null"]},"codigo_verificacao":{"type":["string","null"]},"serie_rps":{"type":["string","null"]},"numero_rps":{"type":["string","null"]},"classe_imposto":{"type":["string","null"]},"valor_servicos":{"type":"number"},"discriminacao":{"type":["string","null"]},"pdf_status":{"type":["string","null"]},"documentos":{"type":"object","additionalProperties":{"type":"string","format":"uri"},"readOnly":true},"atualizado_em":{"type":["string","null"],"format":"date-time"},"payloads":{"type":"object","additionalProperties":true},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"NfcomConfigurationInput":{"type":"object","properties":{"ativo":{"type":"boolean"},"ambiente":{"type":"integer","enum":[1,2]},"natureza_operacao":{"type":"string","maxLength":60},"classe_imposto_default":{"type":["string","null"],"maxLength":30},"tipo_operacao":{"type":"integer","enum":[0,1]},"consumidor_final":{"type":"integer","enum":[0,1]},"presenca_comprador":{"type":"integer","enum":[1,2,3,4,9]},"tipo_faturamento":{"type":"integer","enum":[0,1,2]},"assinante_tipo":{"type":"integer","minimum":1,"maximum":6},"assinante_tipo_servico":{"type":"integer","minimum":1,"maximum":6}}},"NfcomConfiguration":{"type":"object","properties":{"ativo":{"type":"boolean"},"ambiente":{"type":"integer","enum":[1,2]},"natureza_operacao":{"type":"string","maxLength":60},"classe_imposto_default":{"type":["string","null"],"maxLength":30},"tipo_operacao":{"type":"integer","enum":[0,1]},"consumidor_final":{"type":"integer","enum":[0,1]},"presenca_comprador":{"type":"integer","enum":[1,2,3,4,9]},"tipo_faturamento":{"type":"integer","enum":[0,1,2]},"assinante_tipo":{"type":"integer","minimum":1,"maximum":6},"assinante_tipo_servico":{"type":"integer","minimum":1,"maximum":6},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true},"credenciais_configuradas":{"type":"boolean","readOnly":true},"webhook_configurado":{"type":"boolean","readOnly":true}}},"NfcomIssueRequest":{"type":"object","required":["payload"],"properties":{"referencia":{"type":"string","maxLength":120,"deprecated":true,"description":"Alternativa ao header Idempotency-Key."},"payload":{"$ref":"#/components/schemas/NfcomPayload"}}},"NfcomPayload":{"type":"object","required":["cliente","assinante","itens"],"description":"Payload fiscal da NFCom. Ambiente, natureza e indicadores ausentes são preenchidos pela configuração da empresa.","properties":{"natureza_operacao":{"type":"string","maxLength":60},"tipo_operacao":{"type":"integer","enum":[0,1]},"finalidade":{"type":"integer","enum":[1,2,3,4]},"consumidor_final":{"type":"integer","enum":[0,1]},"presenca_comprador":{"type":"integer","enum":[1,2,3,4,9]},"tipo_faturamento":{"type":"integer","enum":[0,1,2]},"municipio_fato_gerador":{"type":"string","pattern":"^\\d{7}$"},"previa_danfecom":{"type":"boolean"},"cliente":{"$ref":"#/components/schemas/NfcomCustomer"},"assinante":{"$ref":"#/components/schemas/NfcomSubscriber"},"itens":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/NfcomItem"}},"fatura":{"type":"object","additionalProperties":true},"substituicao":{"type":"object","additionalProperties":true},"autorizar_download":{"type":"array","items":{"type":"string"}},"informacoes_complementares":{"type":"string","maxLength":5000}},"additionalProperties":true},"NfcomCustomer":{"type":"object","description":"Informe exatamente um CPF ou CNPJ.","properties":{"cpf":{"type":"string"},"cnpj":{"type":"string"},"nome_completo":{"type":"string"},"razao_social":{"type":"string"},"indicador_ie":{"type":"integer"},"inscricao_estadual":{"type":"string"},"email":{"type":"string","format":"email"},"telefone":{"type":"string"},"endereco":{"type":"object","additionalProperties":true}},"additionalProperties":true},"NfcomSubscriber":{"type":"object","required":["codigo","tipo","tipo_servico"],"properties":{"codigo":{"type":"string"},"tipo":{"type":"integer","minimum":1,"maximum":6},"tipo_servico":{"type":"integer","minimum":1,"maximum":6},"contrato":{"type":"object","additionalProperties":true}},"additionalProperties":true},"NfcomItem":{"type":"object","required":["codigo","descricao","quantidade","valor_unitario","valor_total"],"properties":{"codigo":{"type":"string"},"codigo_classificacao":{"type":"string"},"descricao":{"type":"string"},"unidade":{"type":"string"},"quantidade":{"type":"number","exclusiveMinimum":0},"valor_unitario":{"type":"number"},"valor_total":{"type":"number"},"indicador_total":{"type":"integer","enum":[0,1]},"classe_imposto":{"type":"string"},"impostos":{"type":"object","additionalProperties":true}},"additionalProperties":true},"NfcomLookupRequest":{"type":"object","required":["identificador"],"properties":{"identificador":{"type":"string","description":"UUID ou chave NFCom com 44 dígitos."}}},"NfcomCancelRequest":{"type":"object","required":["justificativa"],"properties":{"justificativa":{"type":"string","minLength":15,"maxLength":255}}},"NfcomNote":{"type":"object","properties":{"id":{"type":"integer"},"request_id":{"type":["string","null"]},"uuid":{"type":["string","null"],"format":"uuid"},"chave":{"type":["string","null"]},"serie":{"type":["integer","null"]},"numero":{"type":["integer","null"]},"finalidade":{"type":"integer"},"ambiente":{"type":"integer","enum":[1,2]},"status":{"type":"string","enum":["pendente","processando","autorizada","rejeitada","cancelada","contingencia","erro_comunicacao","previa"]},"status_provedor":{"type":["string","null"]},"motivo":{"type":["string","null"]},"protocolo":{"type":["string","null"]},"contingencia":{"type":"boolean"},"previa":{"type":"boolean"},"data_autorizacao":{"type":["string","null"],"format":"date-time"},"cliente":{"type":"object","properties":{"documento":{"type":["string","null"]},"nome":{"type":["string","null"]}}},"valor_total":{"type":"number"},"documentos":{"type":"object","additionalProperties":{"type":"string","format":"uri"},"readOnly":true},"tentativas_consulta":{"type":"integer"},"ultima_consulta_em":{"type":["string","null"],"format":"date-time"},"ultimo_erro":{"type":["string","null"]},"payloads":{"type":"object","additionalProperties":true},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmSummary":{"type":"object","properties":{"total":{"type":"integer"},"abertas":{"type":"integer"},"ganhas":{"type":"integer"},"perdidas":{"type":"integer"},"pausadas":{"type":"integer"},"taxa_conversao":{"type":"number"},"atividades_atrasadas":{"type":"integer"},"proximos_agendamentos":{"type":"integer"},"valor_aberto":{"type":"number"},"valor_ganho":{"type":"number"}}},"CrmMetadata":{"type":"object","additionalProperties":true},"CrmReport":{"type":"object","additionalProperties":true},"CrmPipelineInput":{"type":"object","required":["nome"],"properties":{"nome":{"type":"string","maxLength":140},"descricao":{"type":["string","null"],"maxLength":10000},"layout_padrao":{"type":"string","enum":["kanban","lista"]},"campos_card":{"type":"array","items":{"type":"string"}}}},"CrmPipelineUpdateInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":140},"descricao":{"type":["string","null"],"maxLength":10000},"layout_padrao":{"type":"string","enum":["kanban","lista"]},"campos_card":{"type":"array","items":{"type":"string"}},"ordem":{"type":"integer","minimum":0},"ativo":{"type":"boolean"}}},"CrmPipeline":{"type":"object","properties":{"id":{"type":"integer"},"nome":{"type":"string","maxLength":140},"descricao":{"type":["string","null"],"maxLength":10000},"layout_padrao":{"type":"string","enum":["kanban","lista"]},"campos_card":{"type":"array","items":{"type":"string"}},"ordem":{"type":"integer"},"ativo":{"type":"boolean"},"etapas":{"type":"array","items":{"$ref":"#/components/schemas/CrmStage"}},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmStageInput":{"type":"object","required":["nome"],"properties":{"nome":{"type":"string","maxLength":120},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"probabilidade":{"type":"integer","minimum":0,"maximum":100}}},"CrmStageUpdateInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":120},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"probabilidade":{"type":"integer","minimum":0,"maximum":100},"ordem":{"type":"integer","minimum":0},"ativo":{"type":"boolean"}}},"CrmStageMoveInput":{"type":"object","required":["direcao"],"properties":{"direcao":{"type":"string","enum":["subir","descer"]}}},"CrmStage":{"type":"object","properties":{"id":{"type":"integer"},"pipeline_id":{"type":"integer"},"nome":{"type":"string","maxLength":120},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"probabilidade":{"type":"integer","minimum":0,"maximum":100},"ordem":{"type":"integer"},"ativo":{"type":"boolean"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmLabelInput":{"type":"object","required":["nome"],"properties":{"nome":{"type":"string","maxLength":80},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"CrmLabelUpdateInput":{"type":"object","properties":{"nome":{"type":"string","maxLength":80},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"ativo":{"type":"boolean"}}},"CrmLabel":{"type":"object","properties":{"id":{"type":"integer"},"nome":{"type":"string"},"cor":{"type":"string"},"ativo":{"type":"boolean"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmCustomFieldInput":{"type":"object","required":["label"],"properties":{"label":{"type":"string","maxLength":120},"tipo":{"type":"string","enum":["texto","texto_longo","numero","data","email","telefone","url","checkbox"]},"obrigatorio":{"type":"boolean"},"largura":{"type":"string","enum":["inteira","metade"]},"ordem":{"type":"integer","minimum":0}}},"CrmCustomFieldUpdateInput":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"tipo":{"type":"string","enum":["texto","texto_longo","numero","data","email","telefone","url","checkbox"]},"obrigatorio":{"type":"boolean"},"largura":{"type":"string","enum":["inteira","metade"]},"ordem":{"type":"integer","minimum":0},"ativo":{"type":"boolean"}}},"CrmCustomField":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string","maxLength":120},"tipo":{"type":"string","enum":["texto","texto_longo","numero","data","email","telefone","url","checkbox"]},"obrigatorio":{"type":"boolean"},"largura":{"type":"string","enum":["inteira","metade"]},"ordem":{"type":"integer","minimum":0},"ativo":{"type":"boolean"},"valor":{"type":["string","number","boolean","null"]},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmUserPermissionsInput":{"type":"object","properties":{"permissoes":{"type":"object","additionalProperties":{"type":"boolean"}},"todos_funis":{"type":"boolean"},"pipeline_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true}}},"CrmUserPermissions":{"type":"object","properties":{"usuario":{"$ref":"#/components/schemas/User"},"permissoes":{"type":"object","additionalProperties":{"type":"boolean"}},"todos_funis":{"type":"boolean"},"pipeline_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true}}},"CrmOpportunityInput":{"type":"object","properties":{"pipeline_id":{"type":"integer","minimum":1},"etapa_id":{"type":"integer","minimum":1},"cliente_id":{"type":"integer","minimum":1},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":20000},"observacoes_internas":{"type":["string","null"],"maxLength":20000},"valor_estimado":{"type":"number","minimum":0},"valor_final":{"type":"number","minimum":0},"data_prevista":{"type":["string","null"],"format":"date"},"responsavel_id":{"type":["integer","null"],"minimum":1},"status":{"type":"string","enum":["aberta","ganha","perdida","pausada","arquivada"]},"prioridade":{"type":"string","enum":["baixa","normal","alta","urgente"]},"origem":{"type":["string","null"],"maxLength":80},"privacidade":{"type":"string","enum":["publica","privada"]},"motivo_perda":{"type":["string","null"],"maxLength":255},"tarefa_referencia":{"type":["string","null"],"maxLength":180},"os_id":{"type":["integer","null"]},"pdv_venda_id":{"type":["integer","null"]},"etiqueta_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true},"membro_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true},"campos_customizados":{"type":"object","additionalProperties":true}}},"CrmOpportunityCreateInput":{"type":"object","required":["pipeline_id","etapa_id","cliente_id","titulo"],"properties":{"pipeline_id":{"type":"integer","minimum":1},"etapa_id":{"type":"integer","minimum":1},"cliente_id":{"type":"integer","minimum":1},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":20000},"observacoes_internas":{"type":["string","null"],"maxLength":20000},"valor_estimado":{"type":"number","minimum":0},"valor_final":{"type":"number","minimum":0},"data_prevista":{"type":["string","null"],"format":"date"},"responsavel_id":{"type":["integer","null"],"minimum":1},"status":{"type":"string","enum":["aberta","ganha","perdida","pausada","arquivada"]},"prioridade":{"type":"string","enum":["baixa","normal","alta","urgente"]},"origem":{"type":["string","null"],"maxLength":80},"privacidade":{"type":"string","enum":["publica","privada"]},"motivo_perda":{"type":["string","null"],"maxLength":255},"tarefa_referencia":{"type":["string","null"],"maxLength":180},"os_id":{"type":["integer","null"]},"pdv_venda_id":{"type":["integer","null"]},"etiqueta_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true},"membro_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true},"campos_customizados":{"type":"object","additionalProperties":true}}},"CrmOpportunityMoveInput":{"type":"object","required":["etapa_id"],"properties":{"etapa_id":{"type":"integer","minimum":1}}},"CrmOpportunityStatusInput":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["aberta","ganha","perdida","pausada","arquivada"]},"motivo_perda":{"type":["string","null"],"maxLength":255},"valor_final":{"type":"number","minimum":0}}},"CrmOpportunity":{"type":"object","properties":{"id":{"type":"integer"},"pipeline":{"type":"object"},"etapa":{"type":"object"},"cliente":{"type":"object"},"titulo":{"type":"string"},"descricao":{"type":["string","null"]},"observacoes_internas":{"type":["string","null"]},"valor_estimado":{"type":"number"},"valor_final":{"type":"number"},"valores_ocultos":{"type":"boolean"},"data_prevista":{"type":["string","null"],"format":"date"},"proxima_atividade_em":{"type":["string","null"],"format":"date-time"},"responsavel":{"type":["object","null"]},"status":{"type":"string","enum":["aberta","ganha","perdida","pausada","arquivada"]},"prioridade":{"type":"string","enum":["baixa","normal","alta","urgente"]},"origem":{"type":["string","null"]},"privacidade":{"type":"string","enum":["publica","privada"]},"motivo_perda":{"type":["string","null"]},"tarefa_referencia":{"type":["string","null"]},"os_id":{"type":["integer","null"]},"pdv_venda_id":{"type":["integer","null"]},"criado_por":{"type":["object","null"]},"ganha_em":{"type":["string","null"],"format":"date-time"},"perdida_em":{"type":["string","null"],"format":"date-time"},"etiquetas":{"type":"array","items":{"$ref":"#/components/schemas/CrmLabel"}},"membros":{"type":"array","items":{"type":"object"}},"campos_customizados":{"type":"array","items":{"$ref":"#/components/schemas/CrmCustomField"}},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmActivityInput":{"type":"object","required":["titulo"],"properties":{"tipo":{"type":"string","enum":["ligacao","reuniao","email","whatsapp","visita","demonstracao","proposta","follow_up","retorno_comercial","pos_venda","observacao","tarefa","outro"]},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":10000},"icone":{"type":["string","null"],"maxLength":4},"vencimento_em":{"type":["string","null"],"format":"date-time"},"concluida":{"type":"boolean"}}},"CrmActivityUpdateInput":{"type":"object","properties":{"tipo":{"type":"string","enum":["ligacao","reuniao","email","whatsapp","visita","demonstracao","proposta","follow_up","retorno_comercial","pos_venda","observacao","tarefa","outro"]},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":10000},"icone":{"type":["string","null"],"maxLength":4},"vencimento_em":{"type":["string","null"],"format":"date-time"},"concluida":{"type":"boolean"}}},"CrmActivityCompletionInput":{"type":"object","properties":{"concluida":{"type":"boolean","default":true}}},"CrmActivity":{"type":"object","properties":{"id":{"type":"integer"},"oportunidade_id":{"type":["integer","null"]},"cliente_id":{"type":["integer","null"]},"data_atividade":{"type":"string","format":"date-time"},"concluida_em":{"type":["string","null"],"format":"date-time"},"criado_por":{"type":["object","null"]},"payload":{"type":["object","null"]},"reacoes":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string"},"count":{"type":"integer"},"users":{"type":"array","items":{"type":"string"}},"reacted":{"type":"boolean"}}}},"tipo":{"type":"string","enum":["ligacao","reuniao","email","whatsapp","visita","demonstracao","proposta","follow_up","retorno_comercial","pos_venda","observacao","tarefa","outro"]},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":10000},"icone":{"type":["string","null"],"maxLength":4},"vencimento_em":{"type":["string","null"],"format":"date-time"},"concluida":{"type":"boolean"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmReactionInput":{"type":"object","required":["emoji"],"properties":{"emoji":{"type":"string","enum":["👍","❤️","🎉","👏","🔥","💡","👀","✅","❌"]}}},"CrmCommentInput":{"type":"object","required":["comentario"],"properties":{"comentario":{"type":"string","maxLength":10000},"parent_id":{"type":["integer","null"]},"mencao_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true}}},"CrmComment":{"type":"object","properties":{"id":{"type":"integer"},"oportunidade_id":{"type":"integer"},"parent_id":{"type":["integer","null"]},"usuario":{"type":["object","null"]},"comentario":{"type":"string"},"mencao_ids":{"type":"array","items":{"type":"integer","minimum":1},"uniqueItems":true},"reacoes":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string"},"count":{"type":"integer"},"users":{"type":"array","items":{"type":"string"}},"reacted":{"type":"boolean"}}}},"data_cadastro":{"type":"string","format":"date-time"}}},"CrmAttachment":{"type":"object","properties":{"id":{"type":"integer"},"oportunidade_id":{"type":["integer","null"]},"cliente_id":{"type":["integer","null"]},"nome":{"type":"string"},"mime_type":{"type":"string"},"tamanho":{"type":"integer"},"enviado_por":{"type":["object","null"]},"download_url":{"type":"string","format":"uri"},"data_cadastro":{"type":"string","format":"date-time"}}},"CrmAppointmentInput":{"type":"object","properties":{"cliente_id":{"type":["integer","null"]},"lead_nome":{"type":["string","null"],"maxLength":180},"lead_contato":{"type":["string","null"],"maxLength":120},"oportunidade_id":{"type":["integer","null"]},"responsavel_id":{"type":"integer","minimum":1},"pipeline_id":{"type":["integer","null"]},"etapa_id":{"type":["integer","null"]},"tipo":{"type":"string","enum":["reuniao","ligacao","follow_up","demonstracao","visita","tarefa","retorno_comercial","pos_venda"]},"status":{"type":"string","enum":["agendado","aguardando_confirmacao","confirmado","realizado","nao_compareceu","cancelado","remarcado"]},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":10000},"inicio_em":{"type":"string","format":"date-time"},"fim_em":{"type":["string","null"],"format":"date-time"},"local":{"type":["string","null"],"maxLength":180}}},"CrmAppointmentCreateInput":{"type":"object","required":["responsavel_id","titulo","inicio_em"],"properties":{"cliente_id":{"type":["integer","null"]},"lead_nome":{"type":["string","null"],"maxLength":180},"lead_contato":{"type":["string","null"],"maxLength":120},"oportunidade_id":{"type":["integer","null"]},"responsavel_id":{"type":"integer","minimum":1},"pipeline_id":{"type":["integer","null"]},"etapa_id":{"type":["integer","null"]},"tipo":{"type":"string","enum":["reuniao","ligacao","follow_up","demonstracao","visita","tarefa","retorno_comercial","pos_venda"]},"status":{"type":"string","enum":["agendado","aguardando_confirmacao","confirmado","realizado","nao_compareceu","cancelado","remarcado"]},"titulo":{"type":"string","maxLength":180},"descricao":{"type":["string","null"],"maxLength":10000},"inicio_em":{"type":"string","format":"date-time"},"fim_em":{"type":["string","null"],"format":"date-time"},"local":{"type":["string","null"],"maxLength":180}}},"CrmAppointmentStatusInput":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["agendado","aguardando_confirmacao","confirmado","realizado","nao_compareceu","cancelado","remarcado"]}}},"CrmAppointmentWhatsappInput":{"type":"object","properties":{"tipo":{"type":"string","enum":["confirmacao","lembrete","remarcacao"],"default":"confirmacao"},"telefone":{"type":["string","null"],"maxLength":40}}},"CrmAppointment":{"type":"object","properties":{"id":{"type":"integer"},"cliente":{"type":["object","null"]},"lead":{"type":["object","null"]},"oportunidade":{"type":["object","null"]},"responsavel":{"type":["object","null"]},"pipeline":{"type":["object","null"]},"etapa":{"type":["object","null"]},"tipo":{"type":"string","enum":["reuniao","ligacao","follow_up","demonstracao","visita","tarefa","retorno_comercial","pos_venda"]},"status":{"type":"string","enum":["agendado","aguardando_confirmacao","confirmado","realizado","nao_compareceu","cancelado","remarcado"]},"titulo":{"type":"string"},"descricao":{"type":["string","null"]},"inicio_em":{"type":"string","format":"date-time"},"fim_em":{"type":["string","null"],"format":"date-time"},"local":{"type":["string","null"]},"atividade_id":{"type":["integer","null"]},"whatsapp":{"type":"object"},"data_cadastro":{"type":["string","null"],"format":"date-time","readOnly":true},"data_atualizacao":{"type":["string","null"],"format":"date-time","readOnly":true}}},"CrmNotification":{"type":"object","properties":{"id":{"type":"integer"},"oportunidade_id":{"type":["integer","null"]},"oportunidade_titulo":{"type":["string","null"]},"tipo":{"type":"string"},"titulo":{"type":"string"},"mensagem":{"type":["string","null"]},"lida":{"type":"boolean"},"data_lida":{"type":["string","null"],"format":"date-time"},"data_envio":{"type":"string","format":"date-time"}}}}}}