Equipo de la Organization
Gestiona quién pertenece a la Organization — lista miembros, invita nuevos, cambia roles, reenvía o revoca invitaciones y elimina el acceso.
Estos endpoints sustentan la pantalla de equipo de la Organization: las personas que pueden iniciar sesión en el Dashboard a nivel de la Organization y las invitaciones que traen nuevas personas. Gestiona los miembros y sus roles, y controla las invitaciones pendientes.
El rol de un miembro determina lo que puede hacer en toda la Organization; una invitación es una membresía pendiente que se vuelve real una vez aceptada. Eliminar a un miembro revoca su acceso de inmediato.
Estos endpoints impulsan la interfaz del Tokeflow Dashboard a nivel de la Organization. Están autenticados por sesión (JWT bearer) — el token proviene de iniciar sesión en el Dashboard, no de una clave de API sk_/pk_. Las solicitudes también incluyen el header x-organization-id, y el usuario que inició sesión debe ser miembro de esa Organization.
El objeto de invitación
Devuelto por los endpoints de listado y consulta de esta página.
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID de la invitación. |
organization_id | string | ID de la Organization. |
organization_name | string | Nombre de la Organization. |
email | string | Dirección de correo electrónico del invitado. |
name | string | null | Nombre para mostrar del invitado. |
role | string | Rol asignado al invitado. Uno de owner, admin, viewer. |
status | string | Estado actual de la invitación. Uno de pending, accepted, declined, expired, revoked. |
invited_by | object | Detalles del usuario que envió la invitación. |
expires_at | string | Fecha de expiración de la invitación. (ISO 8601 UTC). |
accepted_at | string | null | Fecha en la que se aceptó la invitación. (ISO 8601 UTC). |
declined_at | string | null | Fecha en la que se rechazó la invitación. (ISO 8601 UTC). |
created_at | string | Fecha en la que se creó la invitación. (ISO 8601 UTC). |
Endpoints
GET/api/v1/org/team/invitations
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Lista las invitaciones del equipo.
Parámetros de consulta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
status | string | No | Filtra las invitaciones por estado |
page | number | No | Número de página (indexada desde 1). Predeterminado 1, mín 1. |
limit | number | No | Número de elementos por página. Predeterminado 20, mín 1, máx 100. |
Ejemplo de solicitud
curl -G https://api.tokeflow.com/api/v1/org/team/invitations \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3" \
--data-urlencode "status=pending" \
--data-urlencode "page=1" \
--data-urlencode "limit=20"Ejemplo de respuesta — 200
{
"data": [
{
"id": "obj_1a2b3c4d",
"organization_id": "org_4b21e7c3",
"organization_name": "Acme Store",
"email": "jane@example.com",
"name": "Acme Store",
"role": "owner",
"status": "pending",
"invited_by": {
"user_id": "string",
"name": "Acme Store",
"email": "jane@example.com"
},
"expires_at": "2026-01-15T12:30:00.000Z",
"accepted_at": "2026-01-15T12:30:00.000Z",
"declined_at": "2026-01-15T12:30:00.000Z",
"created_at": "2026-01-15T12:30:00.000Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 42,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
}POST/api/v1/org/team/invitations
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Envía una invitación de equipo.
Campos de la solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
email | string | Sí | Dirección de correo electrónico del invitado. |
role | string | Sí | Rol a asignar al invitado. Uno de owner, admin, viewer. |
name | string | No | Nombre para mostrar del invitado. |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/org/team/invitations \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3" \
-H "Content-Type: application/json" \
-d '{
"email": "user@company.com",
"role": "admin",
"name": "Jane Doe"
}'Ejemplo de respuesta — 201
{
"id": "obj_1a2b3c4d",
"organization_id": "org_4b21e7c3",
"organization_name": "Acme Store",
"email": "jane@example.com",
"name": "Acme Store",
"role": "owner",
"status": "pending",
"invited_by": {
"user_id": "string",
"name": "Acme Store",
"email": "jane@example.com"
},
"expires_at": "2026-01-15T12:30:00.000Z",
"accepted_at": "2026-01-15T12:30:00.000Z",
"declined_at": "2026-01-15T12:30:00.000Z",
"created_at": "2026-01-15T12:30:00.000Z"
}DELETE/api/v1/org/team/invitations/:id
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Revoca la invitación de equipo.
Parámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X DELETE https://api.tokeflow.com/api/v1/org/team/invitations/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3"Ejemplo de respuesta — 204 No Content
Se devuelve un cuerpo vacío en caso de éxito.
POST/api/v1/org/team/invitations/:id/resend
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Reenvía la invitación de equipo.
Parámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/org/team/invitations/obj_1a2b3c4d/resend \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3"Ejemplo de respuesta — 200
{
"id": "obj_1a2b3c4d",
"organization_id": "org_4b21e7c3",
"organization_name": "Acme Store",
"email": "jane@example.com",
"name": "Acme Store",
"role": "owner",
"status": "pending",
"invited_by": {
"user_id": "string",
"name": "Acme Store",
"email": "jane@example.com"
},
"expires_at": "2026-01-15T12:30:00.000Z",
"accepted_at": "2026-01-15T12:30:00.000Z",
"declined_at": "2026-01-15T12:30:00.000Z",
"created_at": "2026-01-15T12:30:00.000Z"
}GET/api/v1/org/team/members
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Lista los miembros de la Organization.
Parámetros de consulta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
page | number | No | Número de página (indexada desde 1). Predeterminado 1, mín 1. |
limit | number | No | Número de elementos por página. Predeterminado 20, mín 1, máx 100. |
Ejemplo de solicitud
curl -G https://api.tokeflow.com/api/v1/org/team/members \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3" \
--data-urlencode "page=1" \
--data-urlencode "limit=20"Ejemplo de respuesta — 200
{
"data": [
{
"membership_id": "mem_7b2f9c14",
"user_id": "string",
"email": "jane@example.com",
"name": "Acme Store",
"role": "owner",
"joined_at": "2026-01-15T12:30:00.000Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 42,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
}DELETE/api/v1/org/team/members/:id
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Elimina al miembro del equipo.
Parámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X DELETE https://api.tokeflow.com/api/v1/org/team/members/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3"Ejemplo de respuesta — 204 No Content
Se devuelve un cuerpo vacío en caso de éxito.
PATCH/api/v1/org/team/members/:id
Auth: Dashboard session (JWT bearer). Se requiere membresía de la Organization.
Actualiza el rol del miembro del equipo.
Parámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | — |
Campos de la solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
role | string | Sí | Nuevo rol a asignar al miembro. Uno de owner, admin, viewer. |
Ejemplo de solicitud
curl -X PATCH https://api.tokeflow.com/api/v1/org/team/members/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-organization-id: org_4b21e7c3" \
-H "Content-Type: application/json" \
-d '{
"role": "admin"
}'Errores
Los errores usan el envoltorio estándar. Los casos más comunes aquí:
| HTTP | Significado |
|---|---|
400 | Parámetros inválidos o un estado que no permite esta operación. |
401 | Token de sesión del Dashboard ausente, vencido o inválido. |
403 | Autenticado, pero el usuario que inició sesión no tiene acceso a esta entidad. |
404 | El registro no existe o no es visible para esta entidad. |