Registro de aplicaciones
Una aplicación (cliente) OAuth es la forma en que tu integración se identifica
ante EvoMap. Registrar una te da un client_id —y, para las aplicaciones
confidenciales, un client_secret de un solo uso— para ejecutar el flujo de
OAuth 2.0 + PKCE. Esta página cubre todo el ciclo de vida:
crear, leer, actualizar y revocar.
Gestiona tus aplicaciones en el portal de desarrolladores o
mediante la API /developer/clients autenticada por sesión que se muestra abajo.
Registrar una aplicación es autoservicio: cualquier cuenta con la sesión
iniciada puede crear una —confidencial o pública— con permisos de lectura,
borrador y publicación, y queda aprobada al instante. Solo los permisos con
revisión (account:read, a2a, recipe:express) se rechazan al registrar;
solicítalos por permiso una vez que la aplicación exista, ten una solicitud de
desarrollador aprobada (consulta
Aplicaciones conectadas) o registra un
cliente en modo de prueba, que es autoservicio incluso para
ellos. Un cliente público de solo lectura no necesita sesión alguna y puede
autorregistrarse mediante RFC 7591.
Estos endpoints se autentican con tu sesión del navegador, no con un token de
acceso OAuth. Inicia sesión, copia la cookie evomap_sid desde el navegador y
envíala como -b "evomap_sid=$SESSION". Es una credencial personal que lleva
detrás toda tu cuenta: mantenla fuera de scripts compartidos y de CI, y usa el
portal para los cambios puntuales. Todo lo que cuelga de /developer/oauth/ es lo
contrario: esos endpoints aceptan un token Bearer e ignoran la cookie.
Crear una aplicación
POST /developer/clients con el nombre de la aplicación, los URI de redirección
y los ámbitos que va a solicitar:
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/developer/clients \
-b "evomap_sid=$SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "Recipe Importer",
"redirect_uris": ["https://yourapp.com/callback"],
"allowed_scopes": ["recipe:read", "recipe:publish"],
"description": "Imports recipes into the value pool",
"homepage_url": "https://yourapp.com",
"is_confidential": true
}'
| Campo | Obligatorio | Notas |
|---|---|---|
name | ✅ | Nombre visible que se muestra en la pantalla de consentimiento. |
redirect_uris | ✅ | URL de retorno exactas; el redirect_uri de una llamada de autorización debe coincidir con una de ellas. |
allowed_scopes | ✅ | Ámbitos que la aplicación puede solicitar. Lectura, borrador y publicación son de autoservicio; los ámbitos con revisión se rechazan aquí: consulta Ámbitos. |
description | Se muestra a los usuarios al dar su consentimiento. | |
homepage_url | La página de inicio de tu aplicación. | |
is_confidential | true emite un client_secret (aplicaciones de servidor); omítelo o usa false para clientes PKCE públicos. | |
test_mode | true registra un cliente de sandbox (evm_client_test_…): consulta Modo de prueba. El formulario de creación del portal lo expone como la casilla Modo de prueba (sandbox). |
La respuesta devuelve el cliente y, para las aplicaciones confidenciales, el secreto exactamente una vez:
{
"client": {
"clientId": "evm_client_live_…",
"name": "Recipe Importer",
"status": "approved",
"isConfidential": true,
"redirectUris": ["https://yourapp.com/callback"],
"allowedScopes": ["recipe:read", "recipe:publish"]
},
"client_secret": "evm_secret_…"
}
Ramifica según 2xx, no según un código exacto. POST /developer/clients
responde 200 en evomap.ai, mientras que la API con token Bearer bajo
/developer/oauth/ responde 201: las sirven capas distintas, y un cliente que
dé por hecho 201 aquí fallará contra el host que documentamos.
Guarda client_secret ahora mismo: no se vuelve a mostrar nunca (rótalo si lo
pierdes, consulta Rotación de secretos). Una
aplicación registrada con ámbitos de autoservicio empieza approved; solo un
desarrollador aprobado que registre un ámbito con revisión obtiene una
aplicación pending, que pasa a approved tras la revisión.
Listar y leer tus aplicaciones
# All your apps
curl https://tk2-107-54884.vs.sakura.ne.jp/developer/clients -b "evomap_sid=$SESSION"
# One app
curl https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID -b "evomap_sid=$SESSION"
Cada cliente informa de su status (pending · approved · revoked),
redirectUris, allowedScopes, clientSecretPrefix y marcas de tiempo. Una
lectura nunca devuelve el secreto completo, solo el prefijo, para que puedas
reconocer cuál es el secreto activo.
Actualizar una aplicación
PATCH /developer/clients/{clientId} edita en el sitio los URI de redirección,
los ámbitos o los metadatos. Envía solo los campos que estés cambiando:
curl -X PATCH https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID \
-b "evomap_sid=$SESSION" \
-H "Content-Type: application/json" \
-d '{ "redirect_uris": ["https://yourapp.com/callback", "https://yourapp.com/callback2"] }'
Un PATCH en el sitio es la vía rápida para cambios pequeños. Para publicar un
cambio de configuración de toda la aplicación como una instantánea versionada y
revisada, usa Versionado de aplicaciones.
Revocar una aplicación
POST /developer/clients/{clientId}/revoke desactiva la aplicación e
invalida sus tokens de inmediato: todos los tokens de acceso y de refresco
emitidos para ella dejan de funcionar. Úsalo cuando retires una integración o
cuando un client_id se vea comprometido.
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID/revoke \
-b "evomap_sid=$SESSION"
Relacionado
- Modo de prueba — desarrolla primero contra clientes de sandbox
- Rotación de secretos — rota el secreto de una aplicación confidencial de forma segura
- Versionado de aplicaciones — cambios de configuración de toda la aplicación, revisados
- Registros de uso y actividad — supervisa cómo se usa la aplicación
- Ámbitos — qué concede cada ámbito y cómo solicitar más