- Somente leitura e ao vivo. Uma métrica é calculada quando você a solicita, com os registros atuais. Nada fica em cache nem é armazenado, exceto o arquivo CSV de uma exportação.
- Determinísticas. Os mesmos registros geram o mesmo número. Nenhuma IA calcula ou reescreve um número.
- Apenas contagens, quantidades e durações. Nenhuma métrica traz custos, valores de pedidos ou referências de pacientes.
- O mesmo número em todo lugar. O console, a API pública e o MCP executam o mesmo cálculo, então a mesma pergunta recebe o mesmo número em cada superfície.
- UTC. Toda data, janela e agrupamento está em UTC.
Onde fica cada capacidade
Hoje, o console tem uma única tela de análises: Relatório de consumo. Todo o resto é lido pela API pública com uma chave de API ou pelo MCP com OAuth. Não há tela no console para as demais métricas, para as exportações nem para criar chaves de API; para obter uma chave, escreva para team@muveya.com.
Para os detalhes técnicos de cada superfície, veja Exportações do resumo gerencial e Ferramentas MCP.
Quem pode ler
reports.read é suficiente: uma métrica lê os pedidos, entregas e estoque subjacentes em seu nome apenas para contá-los, e nunca retorna um campo que você não poderia ler de outra forma. Uma chave de API cobre todas as unidades e depósitos da sua conta de clínica odontológica. Um membro do console limitado a alguns depósitos vê o consumo apenas desses depósitos.
Campos que os resultados compartilham
A maioria dos resultados traz estes campos. O formato exato de cada operação está na referência da API.
Um
value igual a null significa que não houve amostra para calcular uma porcentagem, mediana ou média. Nunca é substituído por zero.
Limites de leitura
Métricas operacionais
GET /v1/analytics/metrics/{metric} retorna um único número. {metric} precisa ser um destes oito ids; qualquer outro valor é recusado com 400 e common.invalid_request.
Contagens instantâneas
Descrevem a situação atual.catalogItemId limita as duas contagens de estoque a um insumo.
Sinais piloto
Estas três acrescentamnumerator, denominator e sampleCount quando se aplicam, uma definition e ressalvas legíveis por máquina em caveats.
wall_clock_hours_no_business_calendar significa que noites, fins de semana e feriados contam como horas. O muveya ainda não aplica um calendário de horário comercial.from não é anterior a to, ou uma data que não pode ser lida, é recusada com 400. O resultado inclui period apenas quando você envia from e to.
Exceções operacionais
GET /v1/analytics/exceptions lista os problemas sobre os quais um gestor deve agir, do mais urgente ao menos urgente. catalogItemId limita as exceções de estoque a um insumo.
Cada entrada também tem
priority, um evidenceId próprio e, nos alertas de estoque, detectedAt. As entradas são ordenadas por prioridade e depois pelo id de detalhamento. O relatório acrescenta total.
Para seguir um detalhamento com a mesma chave:
order:GET /v1/orders/{orderId}eGET /v1/fulfillments/{orderId}.movement: o movimento aparece emGET /v1/inventory/boxes/{boxId}/movements, usando oboxIddereference.item:GET /v1/catalog/items/{itemId}.
Comparação de unidades
GET /v1/analytics/clinics/comparison (métrica ORDERS_BY_CLINIC, unidade orders) classifica as unidades da sua conta pelo volume de pedidos.
As unidades são ordenadas por
totalOrders, da maior para a menor, e depois pelo id. Valores de pedidos nunca são incluídos.
Tendência de consumo
GET /v1/analytics/consumption-trend (métrica CONSUMPTION_TREND) é o cálculo por trás do Relatório de consumo do console.
A janela precisa ter
from antes de to e cobrir no máximo 366 dias; caso contrário, 400.
O resultado tem uma entrada em series por insumo e unidade de medida (seriesKey é catalogItemId:unitOfMeasure), com totalConsumed, usedQuantity (uso observado), issuedQuantity (o que foi entregue a salas ou áreas que não contam seu estoque, um consumo estimado) e movementCount, além de buckets por dia ou semana. usedQuantity + issuedQuantity = totalConsumed. Nunca há um total entre insumos ou unidades de medida.
coverage informa o que os números representam: measuredMovementCount, unverifiedMovementCount (registros anteriores à unidade verificada, contados mas não quantificados, listados por insumo em unverifiedItems), warehouseScope (all ou restricted) e coveredFrom quando a leitura foi cortada. Uma narration é incluída apenas se passar na conferência de que cada número coincide com a tabela.
Fila de aprovação
GET /v1/analytics/approval-backlog (métrica APPROVAL_BACKLOG, unidade orders) conta os pedidos que aguardam aprovação em toda a conta, agrupados pelo tempo de espera desde a solicitação.
Também retorna
total e oldestSubmittedAt. Para a caixa de entrada de quem aprova, veja Aprovar ou rejeitar pedidos.
Tempo de ciclo do pedido
GET /v1/analytics/cycle-time (métrica ORDER_CYCLE_TIME, unidade hours) informa a duração média de cada etapa da vida de um pedido, sobre os pedidos que chegaram a essa etapa.
Cada etapa tem
averageHours (duas casas decimais, null quando nenhum pedido chegou a ela) e sampleCount. observedFulfillments é a quantidade de entregas lidas. A média não é limitada a uma janela. Veja Entrega e recebimento.
Resumo gerencial
GET /v1/analytics/briefing (métrica MANAGEMENT_BRIEFING) é um resumo reproduzível que reúne as métricas acima em uma lista simples de números. period é daily (padrão) ou weekly; qualquer outro valor é 400.
Cada número tem metric (sua origem), dimension (a subchave, ausente em um número único), label, value, unit e o evidenceId da origem. Os números chegam nesta ordem:
O que
period muda:
- A parte de consumo sempre cobre a janela padrão da métrica de consumo, os últimos 30 dias.
dailya agrupa por dia eweeklypor semana. Como o resumo lista totais, hoje os números de um resumo diário e de um semanal são os mesmos; só muda oevidenceIddo consumo. - As contagens instantâneas, as faixas de espera e o tempo de ciclo não são limitados a um dia nem a uma semana.
Accept-Language na API (en, es ou pt; inglês nos demais casos) e o cabeçalho Accept-Language no MCP, com inglês como alternativa. Ids, dimensões, unidades, valores e evidenceId nunca mudam com o idioma. Um insumo que o catálogo não consegue nomear recebe o rótulo Insumo desconhecido.
O evidenceId do próprio resumo é MANAGEMENT_BRIEFING:period=daily ou MANAGEMENT_BRIEFING:period=weekly, e truncated é true se alguma das origens foi truncada. No MCP, management.briefing retorna este resumo junto com as exceções operacionais.
Exportações CSV
O resumo pode ser exportado como arquivo CSV. As exportações são solicitadas e obtidas apenas pela API pública. Os formatos completos de solicitação e resposta estão em Exportações do resumo gerencial.1
Solicite a exportação
POST /v1/analytics/exports com um period opcional (daily por padrão, ou weekly). O cabeçalho Accept-Language desta solicitação define o idioma dos rótulos do CSV. A resposta é 202 com um exportId e o status do trabalho.2
Consulte até ficar pronto
GET /v1/analytics/exports/{exportId} retorna o estado atual. O arquivo é gerado em segundo plano, então a primeira resposta costuma ser pending, embora possa chegar já como ready.3
Baixe
Quando
status é ready, a resposta traz downloadUrl e downloadExpiresAt. O link funciona por 5 minutos. Cada consulta cria um link novo, então consulte de novo se ele expirou. O arquivo se chama management-briefing-daily.csv ou management-briefing-weekly.csv.4
Confira
Compare o SHA-256 dos bytes baixados com
checksum, e o tamanho com byteSize.Estados da exportação
Regras
- Expiração. Um trabalho de exportação é mantido por 7 dias. Depois disso,
GET /v1/analytics/exports/{exportId}responde404. Um link de download dura 5 minutos e nunca é permanente. - Isolamento. Um
exportIdsó funciona com uma chave da mesma conta de clínica odontológica. Qualquer outro id responde404, sem dizer se existe em outro lugar. - Omissão de dados. O arquivo contém apenas contagens, quantidades, durações, rótulos e ids de evidência. Não pode conter custos, valores de pedidos nem referências de pacientes.
- Formato. UTF-8 com marca de ordem de bytes (para que as planilhas leiam os acentos corretamente), quebras de linha CRLF e as colunas
metric,dimension,label,value,unit,evidenceId. Um número sem amostra tem a célulavaluevazia, nunca0. Uma célula que começa com=,+,-,@, tabulação ou retorno de carro recebe um apóstrofo na frente, para que a planilha nunca a execute como fórmula. - Auditoria. Cada solicitação grava o evento de auditoria
analytics.export. Um arquivo concluído gravaanalytics.export_builtcom seu checksum e tamanho, que permanece além dos 7 dias do trabalho. Uma chave semanalytics:readé recusada com403antes de a exportação ser solicitada, e essa recusa não grava nenhum evento de auditoria.
O que pode dar errado
O formato completo dos erros está em Erros.
Páginas relacionadas
Relatório de consumo
A tela do console para o consumo por insumo.
Exportações do resumo gerencial
Solicite e consulte uma exportação do resumo.
Ferramentas MCP
analytics.consumption, management.briefing, management.compare_clinics.Reposição e alertas de estoque
De onde vêm os alertas de estoque baixo e de validade.