Scopes
Cada API key se genera con uno de estos scopes:WRITE es un superset de READ: cualquier endpoint que acepta READ también acepta WRITE.
El scope SWAP es exacto
SWAP no se hereda de WRITE ni de READ, y tampoco los reemplaza:
- Una llave
WRITEoREADque llama a/swaps/*recibe403 INSUFFICIENT_SCOPE. - Una llave
SWAPque llama a cualquier ruta fuera de/swaps/*recibe403 SCOPE_ROUTE_FORBIDDEN. - Solo puedes crear una llave
SWAPsi Mouv habilitó el servicio de conversión para tu empresa. Si no, la creación responde403 SWAPS_NOT_ENABLED. - Opcionalmente, una llave puede restringirse a una lista de IPs (
allowedIps); es recomendado para llavesSWAP. Una petición desde otra IP recibe403 IP_NOT_ALLOWED. Ver Autenticación.
Permiso adicional: “Gestionar billeteras”
Una llaveSWAP puede tener, además, el permiso Gestionar billeteras, que le permite registrar y eliminar billeteras de tu empresa por API (POST y DELETE /swaps/wallets). No es un scope nuevo: es una capacidad adicional del scope SWAP.
- Solo existe en llaves
SWAP; pedirlo con otro scope responde400 INVALID_SCOPE_COMBINATION. - Exige
allowedIps(400 IP_ALLOWLIST_REQUIREDsi faltan) y que Mouv haya habilitado la función para tu empresa (403 WALLET_API_NOT_ENABLED). - Se define al crear la llave, en el dashboard y con 2FA; no se puede agregar después a una llave existente.
- Máximo 2 llaves vigentes con el permiso por empresa (
409 WALLET_API_KEY_LIMIT). - Una llave
SWAPsin el permiso recibe403 WALLET_PERMISSION_REQUIREDen el alta y la baja, pero puede listar y consultar billeteras.
Tabla de permisos por endpoint
Los endpoints
/swaps/* solo aceptan el scope SWAP:
Respuestas de scope insuficiente
Si una llaveREAD intenta una operación WRITE:
Multi-tenant scope (automático)
Tu API key está bound a UNA cuenta empresarial. Todos los endpoints filtran por tucompanyId automáticamente — no podés ver ni operar datos de otras cuentas.
Endpoints administrativos globales (/admin/*) usan un middleware de autenticación diferente y rechazan API keys cliente. Esto es defense-in-depth contra privilege escalation.
Multi-sig (firma múltiple)
Si tu empresa configurómultiSigThreshold >= 2, las transferencias salientes vía POST /transfers/send no se dispatchan inmediatamente:
Buenas prácticas
Mínimo privilegio
Generá llaves READ separadas para reporting/observabilidad. Solo usá WRITE en servicios que estrictamente disparan movimientos.
Múltiples llaves por entorno
production-server · staging · local-dev · reporting-bi. Cada una con su label y su scope mínimo necesario.Rotá cada 90 días
Cero downtime: generá nueva → switch → revocá vieja.
Audit por llave
El campo
apiKeyId queda persistido en cada Transaction — podés filtrar el historial por llave para forensics.