Personal Access Token
Última actualización: 3 de julio de 2026
El PersonalAccessToken es un token de larga duración que una cuenta de la plataforma Weegloo (Weegloo User) utiliza para llamar a CMA, Upload y CDA con sus propios permisos desde servidores, CI o scripts. A diferencia del token de corta duración que el flujo de inicio de sesión en el navegador emite cada vez, una vez emitido permanece válido hasta que se elimina.
El PersonalAccessToken se vincula a la cuenta del usuario, no a un Space. Por eso el endpoint no está bajo /spaces/{spaceId}, sino en la ruta de nivel superior /personal-access-tokens, y la variable de ruta no incluye spaceId. Quien llama con este token actúa en todos los Space a los que ese usuario pertenece, con los permisos que defina el SpaceRole de cada Space.
Estructura del recurso
A continuación se muestra la respuesta al crear un PersonalAccessToken. El objeto sys (propiedades del sistema) contiene el valor del token y su alcance, y el cuerpo incluye name.
{
"sys": {
"id": "5KmQ2pVnRb8sTfWcXd3LhJ9gAe",
"type": "PersonalAccessToken",
"createdBy": { "sys": { "id": "2bN7kRpQ9mWx4Lt6Vy0Cf3Hs8", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-18T11:41:47.409Z",
"updatedBy": { "sys": { "id": "2bN7kRpQ9mWx4Lt6Vy0Cf3Hs8", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-18T11:41:47.409Z",
"accessToken": "PSNAT5SCq8Lm2vK9pXfR1Zt0Nc4Wd6Hg5Ua2Ee9Ck3PoYx8Bj6Hg5Ua2Ee9Ck3Po…",
"scopes": ["PERSONAL"]
},
"name": "Servidor de sincronización de productos"
}Claves principales:
sys.id: identificador único del PersonalAccessToken. Se usa en{personalAccessTokenId}de las rutas de consulta individual y eliminación.sys.accessToken: valor secreto del token que se utiliza en las llamadas a la API. Aparece con el mismo valor no solo en la respuesta de creación, sino también en las respuestas de consulta posteriores, así que hay que tener cuidado con su exposición (consulte la sección de seguridad más abajo).sys.scopes: alcance de permisos del token. El PersonalAccessToken siempre es["PERSONAL"]al emitirse.name: nombre del token indicado en la creación (por ejemplo,Servidor de sincronización de productos).
El accessToken del ejemplo anterior se ha sustituido por una cadena de ejemplo porque es un valor secreto. En realidad es una cadena larga y opaca que empieza por PSNAT, y se obtiene el mismo valor al volver a consultarlo después de emitirlo.
Propiedades del sistema (sys)
Todo PersonalAccessToken incluye en el objeto sys las propiedades comunes del sistema y las propiedades específicas del token. createdBy y updatedBy adoptan la forma Refer ({ "sys": { "id", "type": "Refer", "targetType" } }). Este recurso no tiene space, porque es un token a nivel de usuario que se vincula a la cuenta del usuario y no a un Space.
| Propiedad | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del recurso. |
type | string | Tipo de recurso. Para PersonalAccessToken siempre es "PersonalAccessToken". |
createdBy | Refer<User> | Usuario que lo creó. |
createdAt | string (date-time) | Fecha y hora de creación. |
updatedBy | Refer<User> | Usuario que lo modificó por última vez. |
updatedAt | string (date-time) | Fecha y hora de la última modificación. |
accessToken | string | Valor secreto del token que se utiliza en las llamadas a la API. Aparece tal cual tanto en la respuesta de creación como en las de consulta, por lo que debe manejarse de forma que no quede expuesto al exterior. |
scopes | string array | Alcance de permisos del token. Para PersonalAccessToken siempre es ["PERSONAL"]. |
Propiedades del cuerpo:
| Propiedad | Tipo | Descripción |
|---|---|---|
name | string (1~64) | Nombre del token. Se indica en la creación. |
Seguridad: no exponerlo
El PersonalAccessToken lleva la identidad del usuario tal cual. Al llamar con este token se puede invocar CMA, Upload y CDA con los permisos del SpaceRole de todas las membresías de Space que tenga el usuario. Como su alcance de permisos es amplio y su vida útil larga, una sola fuga expone todos los permisos de ese usuario.
- Manéjelo como un secreto para que no quede expuesto en ningún sitio. En el momento en que se filtra, todos los permisos de ese usuario pasan al exterior. El PersonalAccessToken es exclusivo de entornos de confianza como servidores o CI, y no se deja en texto plano en ningún sitio: ni en el código, ni en los registros, ni en los repositorios, ni en los mensajes de error.
- No lo incluya en código de navegador ni de cliente. Un valor que se envía al navegador queda a la vista del propio usuario, por lo que en la práctica es público. Las pantallas de administración que se ejecutan en el navegador usan el token de corta duración que se obtiene mediante el flujo de inicio de sesión del estudio de contenidos (limitado a la sesión de la pantalla).
- Para la entrega de solo lectura que se expone a los visitantes se usa un DeliveryAccessToken vinculado a un SpaceRole de mínimo privilegio (least-privilege). No se usa un PersonalAccessToken en clientes públicos.
accessTokenaparece con el mismo valor no solo en el momento de la creación, sino también en las respuestas de consulta. Tenga cuidado de no dejar el resultado de la consulta tal cual en registros, pantallas o almacenamiento externo.- No existe API de modificación (sin PUT ni PATCH). Para reemplazar un token, elimine el token existente y emita uno nuevo. Si sospecha de una fuga, elimínelo de inmediato para invalidarlo y sustitúyalo por uno nuevo.
(Fuente: skills weegloo-user-login y weegloo-delivery-access-token, .claude/rules/weegloo-api-endpoints.md.)
API
La URL base de todos los endpoints siguientes es https://cma.weegloo.com/v1, y requieren un token Bearer que autentique CMA en la cabecera Authorization. El PersonalAccessToken es un recurso a nivel de usuario, por lo que la ruta no incluye spaceId. Además, como no hay API de modificación, solo existen cuatro: lista, creación, consulta individual y eliminación.
Documentos relacionados
- Delivery Access Token: token de entrega de solo lectura que se expone a los visitantes (para navegador).
- SpaceRole: alcance de los permisos que este usuario tiene en cada Space.
