/v1 se autentica con una clave de API: una credencial secreta de máquina que pertenece a una sola clínica dental y tiene una lista explícita de scopes. El endpoint MCP /mcp usa ingreso y autorización con OAuth en Console.
Cómo se envía la clave
Envía la clave en el encabezadoAuthorization con el esquema Bearer, en cada solicitud:
- La clave es una cadena opaca, no un JWT. No intentes decodificarla.
Authorization: Beareres el único medio aceptado. No existe un encabezadoX-API-Keyni un parámetro de consulta para la clave.- El nombre del esquema no distingue mayúsculas de minúsculas, pero la clave debe enviarse exactamente como fue emitida, sin comillas ni saltos de línea.
Cómo es una clave
muveya guarda solo un hash SHA-256 de la clave y sus primeros 12 caracteres (el prefijo, por ejemplo
mvy_test_ab1). La clave completa se muestra una sola vez, al crearla, y no se puede recuperar después. Si se pierde, pide una nueva.
Una clave, una clínica dental
Una clave queda asociada a una clínica dental en el servidor al momento de crearla. Eso tiene tres consecuencias:- Ninguna solicitud nombra una clínica dental. Ninguna ruta, parámetro ni encabezado de
/v1acepta un id de tenant o de espacio de trabajo.GET /v1/mete dice qué clínica dental lee la clave, comoworkspaceId. - Una clave lee toda la clínica dental. No la limita el acceso a sedes y bodegas que se aplica a los miembros del equipo: dentro de sus scopes, lee todas las sedes y todas las bodegas.
- Para integrar dos clínicas dentales, usa dos claves. Un registro de otra clínica dental responde
404, exactamente como si no existiera.
Obtener una clave
1
Pídela desde una cuenta que gestione integraciones
Un miembro de tu clínica dental que tenga el permiso Gestionar integraciones y claves API (
integrations.manage) escribe a team@muveya.com. Consulta Roles y permisos para ver cómo se otorga ese permiso.2
Indica para qué es la clave
Incluye un nombre para la integración (por ejemplo “Sincronización de existencias con el ERP”) y los scopes exactos que necesita. Elígelos con las recetas de mínimo privilegio de Scopes. Una clave debe tener al menos un scope.
3
Guarda la clave en cuanto la recibas
La clave se crea para ese miembro y tu clínica dental, con exactamente los scopes que pediste. Guárdala de inmediato en tu gestor de secretos: se muestra una sola vez.
4
Compruébala
Llama a
GET /v1/me (más abajo) y confirma que workspaceId y scopes son los esperados.Cuando una clave deja de funcionar
Una clave funciona solo mientras el miembro para quien se creó siga activo en la clínica dental:- Si se suspende o se retira a ese miembro de la clínica dental, la clave deja de funcionar de inmediato.
- Reactivar al miembro no recupera la clave. La consola lo advierte al reactivar a alguien: las claves de API anteriores a la suspensión siguen cerradas. Pide una clave nueva.
- Si la clínica dental está suspendida, se rechazan todas sus claves.
Tu primera llamada: GET /v1/me
GET /v1/me no requiere ningún scope. Úsala para comprobar una clave antes que nada.
200 OK
string
requerido
La clínica dental a la que pertenece la clave, determinada por el servidor.
string
requerido
El entorno de la clave. Siempre
test en v1.string[]
requerido
Los scopes de la clave, con la forma de dos puntos que usa toda la API (
catalog:read).Mantén las claves en tu servidor
- Guarda la clave en un gestor de secretos o en una variable de entorno del servidor, y léela en tiempo de ejecución.
- Nunca la pongas en código de navegador, una app móvil, una hoja de cálculo compartida, un repositorio de código, una URL, una línea de log o un reporte de errores.
- Usa una clave por integración, para poder revocar una sin detener las demás.
- Cuando hables con soporte sobre una clave, identifícala por su nombre o su prefijo (los primeros 12 caracteres), nunca por la clave completa.
- Si una clave pudo haberse filtrado, pide que la revoquen de inmediato y reemplázala.
Rotar una clave
1
Consigue una segunda clave
Pide una clave nueva con los mismos scopes (consulta Obtener una clave). Ambas claves funcionan al mismo tiempo y ambas cuentan para el límite de 10 claves activas.
2
Despliégala
Reemplaza la clave anterior en todos los sistemas que la usan.
3
Verifica
Llama a
GET /v1/me desde cada sistema con la clave nueva.4
Revoca la clave anterior
Pide que revoquen la clave anterior (más abajo).
Revocar una clave
Un miembro con Gestionar integraciones y claves API (integrations.manage) escribe a team@muveya.com con el nombre o el prefijo de la clave.
- La revocación se aplica desde la siguiente solicitud. No hay caché que esperar.
- No se puede deshacer: una clave revocada no vuelve a funcionar. Pide una clave nueva si todavía necesitas acceso.
- El registro de la clave se conserva para la auditoría de tu clínica dental, igual que los eventos de creación y revocación.
Respuestas 401 y 403
401 Unauthorized (Accept-Language: es)
- El
401es idéntico para todas las causas, a propósito: no revela si una clave existe. Revisa primero el formato del encabezado y luego consulta con el miembro que pidió la clave si fue revocada o si ese miembro sigue activo. - El
403no indica qué scope falta. Llama aGET /v1/me, compara losscopescon la tabla de Scopes y pide una clave con los scopes correctos. - Las solicitudes rechazadas con
401o403no consumen tu presupuesto de límites de uso y no traen encabezados de límite. - Un registro que pertenece a otra clínica dental responde
404, nunca403.
MCP usa OAuth
Una clave de API no autenticahttps://api.muveya.com/mcp. Conecta un cliente MCP mediante el ingreso y la autorización en Console.