Saltar al contenido principal

Autenticación

Cada llamada a la API pública de Wiselook lleva un bearer token emitido desde un cliente OAuth2 que el administrador de tu organización creó en la página de Clientes API.

Token client-credentials (tu backend)​

Tu integración de servidor a servidor usa un token OAuth2 client-credentials:

curl -X POST https://<WISELOOK_HOST>/auth/application/o/token/ \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<YOUR_CLIENT_ID>' \
--data-urlencode 'client_secret=<YOUR_CLIENT_SECRET>' \
--data-urlencode 'scope=<space-separated scopes>'

La respuesta contiene un access_token (un JWT) y expires_in. Envíalo en cada llamada a la API:

Authorization: Bearer <access_token>

Solicita solo los scopes que se concedieron a tu cliente. Solicitar un scope que el cliente no tiene hace que falle la petición del token.

Scopes disponibles​

Los scopes se nombran <resource>:<verb>. En el portal se llaman permisos: un administrador los elige al crear el cliente en Clientes API, y quedan fijos durante toda la vida del cliente. Estos son todos los scopes que se pueden conceder a un cliente:

ScopeEtiqueta en el portalAbre
widget_sessions:writeCrear sesiones de visitante del widgetPOST /v1/widgets/{id}/sessions (Integrar el widget)
access_codes:writeCrear y revocar códigos de invitaciónPOST /v1/access-codes, DELETE /v1/access-codes/{id}
access_codes:readListar códigos de invitación y su usoGET /v1/access-codes
tenant_methodologies:readListar metodologías adoptadasGET /v1/adopted-methodologies
tags:readListar etiquetas (equipos, departamentos, cohortes)GET /v1/tags
tenant_users:readListar los usuarios de tu organización (membresías, roles, etiquetas)GET /v1/tenant-users, …/{id}, …/{id}/tags
tenant_users:writeActualizar nombre, rol, estado y etiquetas de un usuarioPATCH /v1/tenant-users/{id}, POST …/{id}/tags, DELETE …/{id}/tags/{tag_id}
evaluations:writeIniciar una evaluación para un miembro y llevar su conversaciónPOST /v1/members/{id}/evaluations, POST …/evaluations/{evaluation_id}/chat/messages
evaluations:readConsultar una evaluación y su resultadoGET /v1/members/{id}/evaluations/{evaluation_id}

Integrar el widget solo necesita widget_sessions:write. Una vez emitida una sesión de visitante, el widget lleva la conversación por sí mismo (ver Emitir una sesión de visitante). Las Guías recorren cada una de las demás integraciones.

JWT de visitante (el widget, en el navegador)​

Un navegador no puede guardar de forma segura un secreto de cliente, así que el widget usa en su lugar un JWT de visitante de corta duración. Tu backend emite uno por sesión de visitante llamando al endpoint público de emisión con tu token client-credentials (scope widget_sessions:write):

curl -X POST https://<WISELOOK_HOST>/v1/widgets/<WIDGET_ID>/sessions \
-H "Authorization: Bearer <CLIENT_CREDENTIALS_TOKEN>" \
-H 'Content-Type: application/json' \
-d '{"external_user_id": "<your-stable-user-id>", "methodology_id": "<METHODOLOGY_UUID>"}'

La respuesta contiene el JWT de visitante. Entrégaselo al widget; el widget lo envía como bearer en la superficie de evaluación (GET /v1/widgets/{id}, /v1/evaluations, /v1/chat/*). El JWT está firmado con Ed25519, caduca en unos 15 minutos y está ligado a los orígenes permitidos del widget, de modo que un token filtrado no puede reutilizarse desde otro sitio.

Consulta Integrar el widget para el flujo completo, incluida la reemisión cuando una sesión caduca en mitad de la conversación.

A qué puede acceder tu token​

  • Solo a tu organización. Cada token está limitado a tu organización (tenant). No puedes leer datos de otra organización; adivinar o proporcionar ids de otra organización no devuelve nada.
  • Solo a tus scopes concedidos. Un token solo puede hacer lo que sus scopes permiten; una llamada que vaya más allá se rechaza.
  • La superficie pública de la API. Todos los endpoints documentados en este sitio (las rutas /v1/*) están a tu disposición con el token y el scope adecuados.