Explorateur API Explorateur API Chaque point d'accès public de l'API /api/v1, avec ses paramètres, un exemple de requête et un exemple de réponse. En lecture seule, et sans connexion.
Tous les points d'accès exigent une clé API envoyée en jeton Bearer. Voir Authentification pour en créer une. Les exemples ci-dessous utilisent esk_... comme substitut de votre clé.
Identité GET /me Le principal authentifié et son organisation Requête
curl -X GET https://edushell.app/api/v1/me \
-H "Authorization: Bearer esk_..."
Réponse 200
{
"user" : {
"id" : "7c6b5a49-2f10-4e8b-b1a2-6d5c4b3a2f10" ,
"email" : "trainer@acme.example" ,
"name" : "Alex Trainer"
} ,
"org" : {
"id" : "3d2c1b0a-9f8e-7d6c-5b4a-3c2d1e0f9a8b" ,
"name" : "Acme Academy" ,
"slug" : "acme"
} ,
"role" : "trainer"
}
Organisation GET /orgs/{orgId}/members Lister les membres de l'organisation Paramètres
Nom Type Dans orgId · requis uuid path
Requête
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/members \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"user_id" : "7c6b5a49-2f10-4e8b-b1a2-6d5c4b3a2f10" ,
"email" : "alex@acme.example" ,
"name" : "Alex Trainer" ,
"role" : "trainer"
} ,
{
"user_id" : "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d" ,
"email" : "sam@acme.example" ,
"name" : "Sam Admin" ,
"role" : "admin"
}
]
PATCH /orgs/{orgId}/members/{userId} Changer le rôle d'un membre Paramètres
Nom Type Dans orgId · requis uuid path userId · requis uuid path role · requis string (admin | trainer) body
Requête
curl -X PATCH https://edushell.app/api/v1/orgs/{orgId}/members/{userId} \
-H "Authorization: Bearer esk_..." \
-H "Content-Type: application/json" \
-d '{"role":"admin"}'
Réponse 200
{
"user_id" : "7c6b5a49-2f10-4e8b-b1a2-6d5c4b3a2f10" ,
"role" : "admin"
}
DELETE /orgs/{orgId}/members/{userId} Retirer un membre Paramètres
Nom Type Dans orgId · requis uuid path userId · requis uuid path
Requête
curl -X DELETE https://edushell.app/api/v1/orgs/{orgId}/members/{userId} \
-H "Authorization: Bearer esk_..."
Réponse 204
GET /orgs/{orgId}/events Lire le journal d'activité Paramètres
Nom Type Dans orgId · requis uuid path limit integer query
Requête
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/events \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "a3f1c9e2-7b40-4c1a-9e6d-2b8f0a1c4d5e" ,
"type" : "member.role_changed" ,
"actor" : "sam@acme.example" ,
"occurred_at" : "2026-07-29T14:12:05Z" ,
"data" : {
"user_id" : "7c6b5a49-2f10-4e8b-b1a2-6d5c4b3a2f10" ,
"from" : "trainer" ,
"to" : "admin"
}
}
]
Sessions GET /sessions Lister les sessions Requête
curl -X GET https://edushell.app/api/v1/sessions \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "9b1f0e2d-3c4b-5a69-8778-6d5c4b3a2f10" ,
"title" : "Kubernetes 101, cohort A" ,
"state" : "scheduled" ,
"capacity" : 12 ,
"starts_at" : "2026-08-03T09:00:00Z"
}
]
POST /sessions Créer une session Paramètres
Nom Type Dans title · requis string body lab_version_id · requis uuid body capacity · requis integer body starts_at timestamp (ISO 8601) body
Requête
curl -X POST https://edushell.app/api/v1/sessions \
-H "Authorization: Bearer esk_..." \
-H "Content-Type: application/json" \
-d '{"title":"Kubernetes 101, cohort A","lab_version_id":"5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b","capacity":12,"starts_at":"2026-08-03T09:00:00Z"}'
Réponse 201
{
"id" : "9b1f0e2d-3c4b-5a69-8778-6d5c4b3a2f10" ,
"title" : "Kubernetes 101, cohort A" ,
"state" : "scheduled" ,
"capacity" : 12 ,
"starts_at" : "2026-08-03T09:00:00Z"
}
GET /sessions/{sessionId} Obtenir une session Paramètres
Nom Type Dans sessionId · requis uuid path
Requête
curl -X GET https://edushell.app/api/v1/sessions/{sessionId} \
-H "Authorization: Bearer esk_..."
Réponse 200
{
"id" : "9b1f0e2d-3c4b-5a69-8778-6d5c4b3a2f10" ,
"title" : "Kubernetes 101, cohort A" ,
"state" : "running" ,
"capacity" : 12 ,
"participants" : 9
}
DELETE /sessions/{sessionId} Supprimer une session Paramètres
Nom Type Dans sessionId · requis uuid path
Requête
curl -X DELETE https://edushell.app/api/v1/sessions/{sessionId} \
-H "Authorization: Bearer esk_..."
Réponse 204
POST /sessions/{sessionId}/join-code Régénérer le code de session Paramètres
Nom Type Dans sessionId · requis uuid path
Requête
curl -X POST https://edushell.app/api/v1/sessions/{sessionId}/join-code \
-H "Authorization: Bearer esk_..."
Réponse 200
{
"join_code" : "TIGER-42"
}
Labs GET /labs Lister les labs Requête
curl -X GET https://edushell.app/api/v1/labs \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "2f3a4b5c-6d7e-8f90-a1b2-c3d4e5f6a7b8" ,
"name" : "Kubernetes 101" ,
"tier" : "cluster"
}
]
GET /labs/{labId}/versions Lister les versions d'un lab Paramètres
Nom Type Dans labId · requis uuid path
Requête
curl -X GET https://edushell.app/api/v1/labs/{labId}/versions \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b" ,
"version" : 3 ,
"status" : "published" ,
"published_at" : "2026-07-20T10:00:00Z"
} ,
{
"id" : "6f7a8b9c-0d1e-2f3a-4b5c-6d7e8f9a0b1c" ,
"version" : 4 ,
"status" : "draft"
}
]
Développeurs GET /orgs/{orgId}/api-keys Lister les clés API Paramètres
Nom Type Dans orgId · requis uuid path
Requête
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/api-keys \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "b2c3d4e5-f6a7-8b9c-0d1e-2f3a4b5c6d7e" ,
"prefix" : "esk_9f2a1c" ,
"role" : "trainer" ,
"created_at" : "2026-07-10T08:30:00Z" ,
"revoked_at" : null
}
]
POST /orgs/{orgId}/api-keys Créer une clé API Paramètres
Nom Type Dans orgId · requis uuid path name · requis string body role · requis string (admin | trainer) body
Requête
curl -X POST https://edushell.app/api/v1/orgs/{orgId}/api-keys \
-H "Authorization: Bearer esk_..." \
-H "Content-Type: application/json" \
-d '{"name":"CI pipeline","role":"trainer"}'
Réponse 201
{
"id" : "b2c3d4e5-f6a7-8b9c-0d1e-2f3a4b5c6d7e" ,
"key" : "esk_9f2a1c7d4b8e6a3f2c1d0e9b8a7c6d5e" ,
"prefix" : "esk_9f2a1c" ,
"role" : "trainer"
}
GET /orgs/{orgId}/webhooks Lister les points de webhook Paramètres
Nom Type Dans orgId · requis uuid path
Requête
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/webhooks \
-H "Authorization: Bearer esk_..."
Réponse 200
[
{
"id" : "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f" ,
"url" : "https://example.com/webhooks/edushell" ,
"event_types" : [
"member.removed" ,
"org.closed"
]
}
]
POST /orgs/{orgId}/webhooks Créer un point de webhook Paramètres
Nom Type Dans orgId · requis uuid path url · requis string (https) body event_types · requis string[] body description string body
Requête
curl -X POST https://edushell.app/api/v1/orgs/{orgId}/webhooks \
-H "Authorization: Bearer esk_..." \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/webhooks/edushell","event_types":["member.removed","org.closed"],"description":"Prod listener"}'
Réponse 201
{
"id" : "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f" ,
"url" : "https://example.com/webhooks/edushell" ,
"event_types" : [
"member.removed" ,
"org.closed"
] ,
"secret" : "whsec_4b8e6a3f2c1d0e9b8a7c6d5e4f3a2b1c"
}