Skip to main content
Toda solicitud a /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 encabezado Authorization con el esquema Bearer, en cada solicitud:
  • La clave es una cadena opaca, no un JWT. No intentes decodificarla.
  • Authorization: Bearer es el único medio aceptado. No existe un encabezado X-API-Key ni 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:
  1. Ninguna solicitud nombra una clínica dental. Ninguna ruta, parámetro ni encabezado de /v1 acepta un id de tenant o de espacio de trabajo. GET /v1/me te dice qué clínica dental lee la clave, como workspaceId.
  2. 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.
  3. Para integrar dos clínicas dentales, usa dos claves. Un registro de otra clínica dental responde 404, exactamente como si no existiera.
Una clave no es una persona. No puede aprobar pedidos, confirmar entregas ni hacer nada que el producto reserva a un miembro del equipo.

Obtener una clave

Todavía no hay una pantalla en la consola para crear, listar o revocar claves de API. El equipo de muveya emite las claves a pedido.
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.
Reglas que se aplican a toda clave:

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.
Pide las claves desde un miembro que vaya a seguir a cargo de la integración, como un propietario o un administrador que tenga el permiso Gestionar integraciones y claves API (ningún rol lo incluye).

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).
La respuesta nunca contiene la clave, su hash ni ningún otro secreto.

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.
El constructor de solicitudes de las páginas de Endpoints nunca envía solicitudes ni guarda tu clave, pero de todos modos no pegues una clave en ninguna página web.

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 401 es 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 403 no indica qué scope falta. Llama a GET /v1/me, compara los scopes con la tabla de Scopes y pide una clave con los scopes correctos.
  • Las solicitudes rechazadas con 401 o 403 no 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, nunca 403.
La lista completa de códigos está en Errores.

MCP usa OAuth

Una clave de API no autentica https://api.muveya.com/mcp. Conecta un cliente MCP mediante el ingreso y la autorización en Console.