Saltar al contenido principal

Me API

GET /me le dice a quien llama quién es: en qué organización y espacio de trabajo actúa la credencial, qué región la atiende y qué URL base de la API debe llamar, qué tipo de credencial es y qué permisos tiene ahora mismo. Funciona con cualquier credencial - una clave de API, una sesión del panel o un token de acceso OAuth - y no necesita ningún permiso concreto, así que es la llamada natural para "probar la conexión".

Todos los endpoints de esta página son relativos a la URL base: https://api-eu1.joryio.com/api - consulta la Descripción general de la API.

Obtener a quien llama​

GET /me
curl https://api-eu1.joryio.com/api/me \
-H "Authorization: Bearer jry_live_your_api_key"

Respuesta 200:

{
"organization": { "id": "8f0c2c1e-3b0a-4d2e-9a51-0f6f4d1c2b11", "name": "Acme" },
"workspace": { "id": "1d2e3f40-5a6b-4c7d-8e9f-a0b1c2d3e4f5", "name": "Production" },
"region": "eu1",
"api_base_url": "https://api-eu1.joryio.com/api",
"principal": {
"type": "oauth",
"client_kind": "integration",
"client": "zapier",
"email": "[email protected]",
"name": "Dana Levi"
},
"scopes": ["events:track", "users:read", "users:write"]
}
CampoTipoNotas
organizationobjectid y name de la organización.
workspaceobject o nullEl espacio de trabajo en el que actúa la credencial. Una clave de API y un token OAuth están ligados a un espacio de trabajo; una sesión del panel usa el encabezado X-Workspace-Id y recibe null sin él.
regionstringLa región que guarda los datos, por ejemplo eu1.
api_base_urlstringLa URL base de la REST API de esa región. Llama a esta, no a un host fijo en el código.
principalobjectQué es la credencial - ver abajo.
scopesstring[]Los permisos que la credencial puede usar ahora mismo, ordenados.

Tipos de principal​

principal.typeCredencialOtros campos
api_keyUna clave de APIapi_key_id, name (el nombre de la clave). scopes son los scopes de la clave, incluidos los que estos contienen (por ejemplo canvas:activate contiene canvas:enter).
oauthUn token de acceso OAuthclient_kind (integration - por ejemplo Zapier - o mcp, un agente de IA), client (zapier para Zapier, si no el nombre del cliente), y el email y el name de la persona que lo conectó. scopes son lo concedido Y lo que esa persona todavía tiene.
userUna sesión del panelemail, name; scopes son los permisos de la persona en el espacio de trabajo.

OAuth para integraciones​

Las integraciones como Zapier se conectan con "Sign in with Joryio" (OAuth 2.0 authorization code) en lugar de una clave de API pegada. La persona elige el espacio de trabajo y los permisos en una página de consentimiento de Joryio; desde entonces la integración actúa como esa persona, en ese espacio de trabajo, limitada a lo que permitió y a lo que todavía tiene. Joryio registra los clientes de integración - no hay registro de clientes en autoservicio.

Los endpoints OAuth están en el host neutral respecto a la región connect.joryio.com, que reenvía cada solicitud a la región que emitió el código o el token:

PasoEndpoint
Autorizar (navegador)GET https://connect.joryio.com/oauth/authorize?response_type=code&client_id=...&redirect_uri=...&scope=...&state=...
TokenPOST https://connect.joryio.com/oauth/token
RevocarPOST https://connect.joryio.com/oauth/revoke
  • Autenticación del cliente: client_secret_basic (HTTP Basic) o client_secret_post (client_id y client_secret en el cuerpo del formulario). PKCE (S256) es opcional y se exige cuando se envía.
  • Redirect URI: debe coincidir exactamente con una de las URI registradas del cliente.
  • Respuesta del token: access_token, refresh_token, token_type, expires_in, scope, además de api_base_url (llama a la API allí) y region.
  • Los tokens de acceso duran una hora. Uno caducado recibe 401; renueva y vuelve a intentarlo.
  • Los refresh tokens rotan en cada uso y siguen siendo válidos mientras se use la conexión - caducan tras 180 días sin ningún uso. Dos renovaciones con el mismo token en menos de 60 segundos (pasos en paralelo) reciben ambas el mismo par nuevo; un token ya rotado que se presenta más tarde termina la conexión.
  • Scopes que una integración puede pedir: users:read, pii:view (opcional, ver abajo), users:write, events:read, events:track, lists:read, subscriptions:read, segments:read, subscriptions:write, canvas:enter, hooks:manage.
  • Permisos implícitos: un token OAuth nunca obtiene users:export, users:merge ni users:alias a través de otro scope (segments:read y users:write los incluyen para roles y claves API, no para OAuth). La exportación masiva de contactos, la fusión y los cambios de alias quedan para roles y claves API.
  • Datos personales (pii:view, opcional): sin él una integración solo recibe los IDs de los contactos - GET /users y las demás lecturas de contactos devuelven email, phone y externalId como null y ocultan los atributos marcados como datos personales (y los nombres), y las entregas de webhook solo llevan contact.id. Con él, llevan el email, el teléfono y el External ID del contacto. Solo tiene efecto mientras la persona que conectó también tenga pii:view en el espacio de trabajo, y se comprueba en cada solicitud y entrega: si lo pierde, la siguiente ya va oculta. La página de consentimiento lo muestra como "Ver el email y el número de teléfono de los contactos", sin marcar por defecto y solo a quien tiene pii:view; a quien no lo tiene se le explica que la app solo recibirá los IDs de los contactos, y aun así puede conectarla. Ningún otro scope - tampoco users:read - lo concede. Los agentes de IA (MCP) no pueden pedirlo.
  • Desconectar: la persona elimina la conexión en Configuración > General > Apps conectadas; todos los tokens de la conexión dejan de funcionar al instante.