Docs/API y webhooks/Organización y usuarios

Organización y usuarios

El recurso de organización devuelve metadatos sobre tu cuenta. El recurso de usuario te permite listar, obtener, invitar, actualizar y desactivar a los desarrolladores que consumen formación. Todos los endpoints están bajo /api/public/v1.

Endpoints

MétodoRutaScopePropósito
GET/orgorg:readMetadatos de la organización que llama.
GET/usersusers:readListar usuarios de la organización.
GET/users/{'{'}id{'}'}users:readUn único usuario, incluyendo totales de progreso.
POST/usersusers:writeInvitar a un usuario. Envía un email de invitación.
PATCH/users/{'{'}id{'}'}users:writeActualizar nombre, email, rol o pertenencia a equipo.
DELETE/users/{'{'}id{'}'}users:writeDesactivar un usuario. No realiza un hard-delete.

Obtener organización

Devuelve el plan, el tope de asientos, el slug, el dominio y el estado de trial de la organización asociada a la API key.

GET /api/public/v1/org
Authorization: Bearer scs_live_…

Respuesta

{
  "id": "9c2f4b8e-0c1d-4a52-b6f3-1ed7b0a4c9f1",
  "name": "Acme Corp",
  "slug": "acme",
  "domain": "acme.com",
  "plan": "growth",
  "maxSeats": 250,
  "trialExpiresAt": null,
  "isActive": true,
  "createdAt": "2025-08-12T09:14:22Z"
}

Ejemplo

curl -sS -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/org

Listar usuarios

Devuelve todos los usuarios de la organización, activos o desactivados. La lista no está paginada; espera hasta unos pocos miles de entradas según tu plan.

GET /api/public/v1/users
Authorization: Bearer scs_live_…

Respuesta

[
  {
    "id": "b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4",
    "name": "Jane Smith",
    "email": "jane.smith@acme.com",
    "role": "learner",
    "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
    "teamName": "Payments",
    "isActive": true,
    "lastLoginAt": "2026-05-27T16:42:11Z",
    "createdAt": "2026-02-04T11:08:00Z"
  }
]

Ejemplo

curl -sS -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/users

Obtener usuario

Devuelve los mismos campos que la entrada de la lista más XP agregados, retos completados, escenarios completados y arrays de progreso por tema. Úsalo cuando necesites el historial completo de formación de un único desarrollador.

GET /api/public/v1/users/{userId}
Authorization: Bearer scs_live_…

Respuesta

{
  "id": "b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4",
  "name": "Jane Smith",
  "email": "jane.smith@acme.com",
  "role": "member",
  "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
  "teamName": "Payments",
  "isActive": true,
  "lastLoginAt": "2026-05-27T16:42:11Z",
  "createdAt": "2026-02-04T11:08:00Z",
  "totalXp": 4280,
  "completedChallenges": 38,
  "completedScenarios": 4,
  "practiceProgress": [],
  "learnProgress": []
}

Ejemplo

curl -sS -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/users/b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4

Crear usuario

Crea el registro de usuario y envía un email de invitación a la dirección indicada. Idempotente sobre email: hacer POST otra vez con el mismo email devuelve un error en vez de crear un duplicado. Úsalo desde tu proxy SCIM, tu sincronización con HRIS o tu script de onboarding.

POST /api/public/v1/users
Authorization: Bearer scs_live_…
Content-Type: application/json

Cuerpo de la solicitud

CampoTipoRequeridoSignificado
namestringNombre visible que se muestra en paneles y emails de asignación.
emailstringIdentificador de login. Recibe el email de invitación.
rolestringlearner (por defecto) o org_admin. Cualquier otro valor se coacciona a learner.
teamIduuidnoColoca al usuario en un equipo en el momento de la creación. Omítelo para dejarlo sin asignar.

Respuesta

{
  "id": "b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4",
  "name": "Jane Smith",
  "email": "jane.smith@acme.com",
  "role": "learner",
  "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
  "teamName": "Payments",
  "isActive": true,
  "lastLoginAt": null,
  "createdAt": "2026-05-29T09:22:14Z"
}

Ejemplo

curl -sS -X POST \
  -H "Authorization: Bearer $SCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Smith",
    "email": "jane.smith@acme.com",
    "role": "learner",
    "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32"
  }' \
  https://api.limeplate.com/api/public/v1/users

Actualizar usuario

Todos los campos del cuerpo se escriben. Para sacar a un usuario de un equipo, envía teamId: null. Cambiar la dirección de email no reenvía la invitación.

PATCH /api/public/v1/users/{userId}
Authorization: Bearer scs_live_…
Content-Type: application/json

Cuerpo de la solicitud

Los cuatro campos son obligatorios. Envía el valor actual para mantenerlo sin cambios: este endpoint no tiene semántica de PATCH parcial.

CampoTipoRequeridoSignificado
namestringNombre visible.
emailstringIdentificador de login.
rolestringlearner o org_admin.
teamIduuid o nullID de equipo, o null para desvincular.

Respuesta

{
  "id": "b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4",
  "name": "Jane Smith",
  "email": "jane.smith@acme.com",
  "role": "org_admin",
  "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
  "teamName": "Payments",
  "isActive": true,
  "lastLoginAt": "2026-05-27T16:42:11Z",
  "createdAt": "2026-02-04T11:08:00Z"
}

Ejemplo

curl -sS -X PATCH \
  -H "Authorization: Bearer $SCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Smith",
    "email": "jane.smith@acme.com",
    "role": "org_admin",
    "teamId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32"
  }' \
  https://api.limeplate.com/api/public/v1/users/b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4

Desactivar usuario

Pone isActive a false. El registro se mantiene: los retos completados, los escenarios, el XP y las asignaciones históricas se conservan para que la auditoría y los informes sigan funcionando. El usuario ya no puede iniciar sesión y no se le crearán nuevas asignaciones vía SARIF ni POST /assignments. No existe un endpoint de hard-delete; las solicitudes de borrado de datos se gestionan a través del equipo de privacidad.

DELETE /api/public/v1/users/{userId}
Authorization: Bearer scs_live_…

Respuesta

{
  "message": "User deactivated"
}

Ejemplo

curl -sS -X DELETE \
  -H "Authorization: Bearer $SCH_API_KEY" \
  https://api.limeplate.com/api/public/v1/users/b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4