> ## Documentation Index
> Fetch the complete documentation index at: https://muveya.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Segurança e privacidade

> Como o muveya isola cada clínica odontológica, autentica as pessoas, limita e oculta informações, protege as referências de pacientes, registra o histórico, trata as chaves de API e onde seus dados ficam.

O muveya guarda os registros de insumos, estoque e custódia de clínicas odontológicas. Esta página explica, em termos operacionais, como essas informações são protegidas hoje em produção, e aponta o que ainda não está disponível. Os compromissos legais estão nos documentos da seção **Documentos legais**, mais abaixo.

O muveya é operado pela Woku SpA.

## Cada clínica odontológica é isolada

Uma **clínica odontológica** (`tenant`) é a conta do cliente. Cada registro operacional (unidades, depósitos, catálogo, estoque, pedidos, aprovações, custódia) pertence a uma única clínica odontológica.

* **A clínica vem da sua sessão, nunca do que o navegador envia.** A cada solicitação, o muveya confere se você tem um vínculo ativo na clínica da sua sessão, e só então lê ou grava os registros dessa clínica.
* **A camada de dados exige uma clínica.** Toda consulta a registros de clínica leva a clínica automaticamente; uma consulta sem ela falha em vez de ler tudo, e uma consulta que cita outra clínica é recusada.
* **Um registro de outra clínica parece não existir.** Pedir um id que pertence a outra clínica odontológica responde "não encontrado", nunca "proibido", para que ninguém descubra que ele existe.
* **O acesso de uma pessoa termina em um momento exato.** Quando alguém é suspenso ou removido, o muveya marca um horário de corte: sessões, chaves de API e vínculos do WhatsApp emitidos antes dele deixam de funcionar.
* **As chaves de API pertencem a uma clínica.** A API pública obtém a clínica a partir da chave e nunca aceita um seletor de clínica.

## Autenticação

* **Provedor de identidade.** Senhas e acesso com o Google são verificados pela Stytch, o provedor de identidade do muveya. O muveya nunca guarda sua senha: o registro da conta não tem campo de senha.
* **Sessão própria do muveya.** Depois que o provedor verifica você, o muveya emite a própria sessão. O navegador recebe um token aleatório em um cookie `__Host-` com `HttpOnly`, `Secure` e `SameSite=Strict`; o banco de dados guarda só um hash dele.
* **Proteção contra solicitações entre sites.** As mudanças exigem o cookie estrito, uma origem do mesmo site e um segundo token, derivado da sessão e nunca guardado.
* **Duração da sessão.** Uma sessão termina depois de 30 minutos sem atividade e, no máximo, 30 dias depois do acesso. Sair a encerra no servidor.
* **Tentativas de acesso.** Depois de 10 tentativas com falha para o mesmo e-mail a partir da mesma rede em 15 minutos, essa combinação fica bloqueada por 15 minutos. O contador guarda um hash, não o e-mail nem o endereço.
* **Sem enumeração de contas.** Uma senha errada, um e-mail desconhecido, uma conta não verificada e um código de verificação ausente recebem a mesma resposta, e pedir um link de verificação sempre mostra a mesma confirmação.
* **Links por e-mail.** Os links de verificação e de convite levam o segredo depois do `#` do endereço, que os navegadores nunca enviam a um servidor, e o console o remove da barra de endereços assim que a página abre. Os links são de uso único: os de verificação e de senha duram 24 horas, os de convite 24 horas, e a verificação de e-mail do próprio convite 10 minutos.
* **Convites.** Ao abrir um convite, o endereço da pessoa convidada aparece mascarado (por exemplo `a***@clinicanorte.com`), e nada é aceito até a pessoa revisar o acesso e selecionar **Aceitar convite**.

Veja [Entrar](/docs/pt/account/sign-in).

## Segundo fator (MFA)

* Você pode adicionar um aplicativo autenticador (TOTP) em **Segurança da conta**. É opcional.
* Depois de adicionado, todo acesso à sua conta, com senha ou com o Google, exige o código de seis dígitos.
* As ações sensíveis (mudanças na equipe, aprovações, correções de estoque, importações e exportações do catálogo) estão marcadas para um segundo fator, mas hoje o muveya não o pede antes delas.
* Chaves de API nunca têm segundo fator.

Veja [Segurança da conta](/docs/pt/account/security).

## Privilégio mínimo e acesso por local

* **As funções incluem muito pouco.** Nenhuma função inclui permissões de estoque, pedidos, aprovações, entregas, relatórios, custos, valores de pedidos ou referências de pacientes: cada uma precisa ser concedida à pessoa.
* **As permissões são conferidas no servidor a cada solicitação**, junto com as unidades e os depósitos da pessoa. Uma mudança de permissões vale a partir da próxima ação da pessoa.
* **Limites nas telas de equipe.** Um convite só pode oferecer permissões e locais que quem envia possui; ninguém muda o próprio acesso a unidades; só proprietários mudam funções, convidam administradores e suspendem, removem ou mudam o acesso a unidades de um proprietário; uma clínica sempre mantém um proprietário ativo. Qualquer pessoa com `members.manage` pode mudar as permissões de qualquer membro, inclusive as próprias, então conceda essa permissão só a pessoas a quem você confiaria todas as permissões.
* **Separação de funções.** Ninguém aprova o próprio pedido, e uma pessoa cujas unidades cobrem tanto o lado que abastece quanto o que recebe um pedido não pode também confirmar o recebimento dele (a menos que alcance todas as unidades).

Veja [Funções e permissões](/docs/pt/account/roles-and-permissions).

## Informações ocultas sem permissão

O muveya remove estes valores no servidor, então eles nunca chegam a uma pessoa, a uma chave de API ou a um cliente MCP sem a permissão correspondente:

| Informação | Permissão |
| - | - |
| Custos de insumos (catálogo, exportação CSV do catálogo, linhas de pedido) | `catalog.cost.read` |
| Valores de pedidos e limites de valor das regras de aprovação | `orders.value.read` |
| Referências de pacientes e referências de atendimento | `orders.patient_ref.read` |

Uma exceção: quem gerencia a política de aprovação (`approvals.policy.manage`) continua recebendo do servidor os limites de valor sem `orders.value.read`; o console apenas os oculta da tela.

O histórico de custódia, as listas de separação, os alertas de estoque, os relatórios e exportações de análise e as mensagens do WhatsApp nunca incluem esses valores para ninguém. Chaves de API nunca podem ler valores de pedidos nem referências de pacientes. Os registros da aplicação ocultam credenciais, cookies, corpos de requisições, custos, totais, justificativas e referências de pacientes e de atendimento.

## Referências de pacientes

O muveya não é um prontuário clínico. Um pedido clínico pode ter uma **referência do paciente** (`patientRef`), e uma saída de estoque pode ter uma **referência de atendimento**: as duas são códigos opacos que você tira do seu próprio sistema clínico ou de gestão, por exemplo `ext-7f3a`.

* **Criptografadas em repouso.** Cada referência é criptografada campo a campo com AES-256-GCM antes de ser guardada. Não existe cópia pesquisável.
* **Visíveis só com permissão.** São descriptografadas só para quem tem `orders.patient_ref.read`. Criar um pedido clínico exige `orders.clinical.create`.
* **Nunca são exportadas.** Ficam fora da API pública, do MCP, das exportações de análise e dos registros da aplicação.
* **Limites.** Uma referência do paciente tem até 200 caracteres. Uma referência de atendimento tem até 64 caracteres: letras, dígitos e `.` `_` `:` `/` `-`, começa com uma letra ou um dígito e não tem espaços.

<Warning>
  O muveya não confere o que você digita em uma referência do paciente. Nunca informe nomes de pacientes, números de documento de identidade, diagnósticos, prontuários ou outros dados identificadores ou clínicos em uma referência nem em qualquer campo de texto livre. A **justificativa** do pedido é conferida automaticamente e recusada se parecer conter um e-mail, um número de cartão, um identificador com rótulo (como RUT, DNI, CPF, MRN ou "paciente") ou uma sequência de nove ou mais dígitos; comentários e notas não são conferidos.
</Warning>

## Um histórico confiável

* **O registro de movimentos só recebe acréscimos.** Cada recebimento, consumo, transferência, reserva, separação, despacho, devolução, quarentena, vencimento e descarte é um movimento novo; nada é editado ou apagado. Uma correção é um novo movimento compensatório (`adjust_gain` ou `adjust_loss`), nunca uma mudança no passado.
* **As etapas de custódia são eventos separados.** Aprovação, separação, despacho, entrega, recebimento e encerramento são registrados cada um com quem fez e quando.
* **Trilha de auditoria.** O muveya grava registros de auditoria, entre outros, de: mudanças na equipe (convites criados, reenviados, aceitos e revogados; pessoas suspensas, removidas e reativadas), decisões de aprovação e aprovações automáticas, correções de estoque com suas solicitações e decisões, conciliações de contagens, quarentenas de lotes e mudanças de mínimos, importações e exportações do catálogo (incluindo tentativas recusadas), etapas de custódia, confirmações pelo WhatsApp, criação e revogação de chaves de API, e cada chamada de ferramenta e leitura de recurso do MCP. O conteúdo de um registro não pode ser alterado e os registros nunca são apagados. O horário é definido pelo relógio do servidor.

<Note>
  Ainda não há tela nem API para ler a trilha de auditoria em produção, e a permissão `audit.read` não libera nada hoje. Se você precisar de informações dessa trilha, escreva para [team@muveya.com](mailto:team@muveya.com).
</Note>

## Chaves de API e MCP

* **Formato.** As chaves têm a forma `mvy_test_EXAMPLE...`, com uma soma de verificação no final. O muveya mostra uma chave uma única vez e guarda só o hash: ela não pode ser recuperada.
* **Uma clínica, escopos de leitura.** Uma chave pertence a uma clínica odontológica e tem um ou mais de sete escopos de leitura; uma chave sem escopos é recusada. Não há escopos de escrita. A única requisição que cria algo é `POST /v1/analytics/exports`, que inicia uma exportação de análise.
* **Limites.** Até 10 chaves ativas por clínica odontológica, e 120 requisições por minuto por chave em `/v1`; o MCP usa OAuth separadamente.
* **Validade.** Uma chave não tem data de expiração; funciona até ser revogada, e a revogação é imediata. Uma chave deixa de funcionar quando quem a criou é suspenso ou removido, e reativar essa pessoa não a recupera.
* **Erros.** As falhas são devolvidas como documentos de problema (RFC 9457), e uma chave inválida, revogada ou desconhecida sempre recebe a mesma resposta.
* **MCP.** O endpoint `/mcp` usa uma conexão OAuth pessoal, limitada pelas permissões e unidades atuais do membro. Cada chamada de ferramenta é auditada sem o conteúdo.

<Info>
  O console ainda não tem tela para criar ou revogar chaves de API. Para obter ou revogar uma chave, escreva para [team@muveya.com](mailto:team@muveya.com). Veja [Autenticação](/docs/pt/api-reference/authentication) e [Conectar um cliente](/docs/pt/mcp/connect).
</Info>

## WhatsApp

O canal do WhatsApp não faz parte do piloto atual (veja a seção 4 dos Termos de serviço) e hoje não está ativado no serviço de produção. Ele foi construído com estas regras:

* Uma pessoa vincula o número de WhatsApp ao próprio vínculo com um código de uso único que dura 10 minutos; o muveya guarda só um hash do código. Um número se vincula a um único vínculo por vez.
* O muveya guarda o número de WhatsApp vinculado para encaminhar as mensagens.
* As mensagens levam códigos de caixa, nomes de insumos e depósitos e quantidades, nunca custos, valores de pedidos ou referências de pacientes.
* Nada muda o estoque até a pessoa tocar em uma confirmação explícita, e cada etapa confere as mesmas permissões e depósitos que o console.
* Os menus e botões são fixos. Não há IA na conversa.
* O vínculo de uma pessoa suspensa ou removida deixa de funcionar.

Veja [Canal do WhatsApp](/docs/pt/whatsapp/overview).

## Inteligência artificial

O muveya não tem recursos de IA em produção. Ele não envia seus dados nem os dados da sua conta a provedores de modelos de IA. O resumo gerencial disponível pelo MCP é um cálculo fixo sobre suas métricas, não um texto gerado. Antes de ativar qualquer recurso de IA, a Woku se compromete a atualizar a Política de privacidade e a lista de suboperadores.

## Onde seus dados ficam

* **Aplicação, arquivos e cache:** Amazon Web Services, região `us-east-1` (Estados Unidos). Os arquivos guardados são privados, criptografados e entregues só por TLS, por links que expiram em menos de uma hora.
* **Banco de dados:** MongoDB Atlas.
* **E-mail:** enviado de `no-reply@muveya.com` pelo Amazon SES.
* **Em trânsito:** todos os hosts públicos (`console.muveya.com`, `api.muveya.com`, `muveya.com`) funcionam com HTTPS; o HTTP simples é redirecionado.

A lista completa de suboperadores, com finalidades e regiões, está no Anexo III do Acordo de tratamento de dados.

## Documentos legais

| Documento | Link |
| - | - |
| Política de privacidade | [muveya.com/pt/privacy-policy](https://muveya.com/pt/privacy-policy) |
| Termos de serviço | [muveya.com/pt/terms-and-conditions](https://muveya.com/pt/terms-and-conditions) |
| Acordo de tratamento de dados | [muveya.com/pt/data-processing-agreement](https://muveya.com/pt/data-processing-agreement) |

Cada documento é publicado em inglês, espanhol e português (troque `pt` por `en` ou `es` no endereço). A versão vigente é a 1.0, desde 15 de setembro de 2026. O console tem links para os Termos de serviço e a Política de privacidade nas telas de acesso e de cadastro.

Para exercer um direito sobre sua conta pessoal, incluindo excluí-la, siga a seção 12 da Política de privacidade. Se a solicitação for sobre registros dentro de uma clínica odontológica, fale primeiro com essa clínica.

## Informe um problema de segurança

Se você encontrar uma vulnerabilidade ou suspeitar de um incidente, escreva para **[diego@muveya.com](mailto:diego@muveya.com)**, o endereço de privacidade e segurança indicado na Política de privacidade, nos Termos de serviço e no Acordo de tratamento de dados.

* Descreva o que encontrou, onde e como reproduzir.
* Não inclua dados pessoais desnecessários na primeira mensagem, e nunca inclua senhas, chaves de API ou informações de pacientes.
* Não acesse, altere nem apague dados de clínicas odontológicas que não sejam a sua.

Para suporte geral, escreva para [team@muveya.com](mailto:team@muveya.com).

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Funções e permissões" icon="key" href="/docs/pt/account/roles-and-permissions">
    Permissões, acesso por local e omissão de dados.
  </Card>

  <Card title="Segurança da conta" icon="shield-halved" href="/docs/pt/account/security">
    Adicione um segundo fator à sua conta.
  </Card>

  <Card title="Equipe" icon="users" href="/docs/pt/account/team">
    Suspenda ou remova acessos.
  </Card>

  <Card title="Autenticação da API" icon="code" href="/docs/pt/api-reference/authentication">
    Como funcionam as chaves de API.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.