EduShell
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 comme substitut de votre clé.

Identité

GET/meLe principal authentifié et son organisation
Requête
bash
curl -X GET https://edushell.app/api/v1/me \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
{
  "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}/membersLister les membres de l'organisation
Paramètres
NomTypeDans
orgId · requisuuidpath
Requête
bash
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/members \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "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
NomTypeDans
orgId · requisuuidpath
userId · requisuuidpath
role · requisstring (admin | trainer)body
Requête
bash
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
json
{
  "user_id": "7c6b5a49-2f10-4e8b-b1a2-6d5c4b3a2f10",
  "role": "admin"
}
DELETE/orgs/{orgId}/members/{userId}Retirer un membre
Paramètres
NomTypeDans
orgId · requisuuidpath
userId · requisuuidpath
Requête
bash
curl -X DELETE https://edushell.app/api/v1/orgs/{orgId}/members/{userId} \
  -H "Authorization: Bearer esk_..."
Réponse 204
GET/orgs/{orgId}/eventsLire le journal d'activité
Paramètres
NomTypeDans
orgId · requisuuidpath
limitintegerquery
Requête
bash
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/events \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "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/sessionsLister les sessions
Requête
bash
curl -X GET https://edushell.app/api/v1/sessions \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "id": "9b1f0e2d-3c4b-5a69-8778-6d5c4b3a2f10",
    "title": "Kubernetes 101, cohort A",
    "state": "scheduled",
    "capacity": 12,
    "starts_at": "2026-08-03T09:00:00Z"
  }
]
POST/sessionsCréer une session
Paramètres
NomTypeDans
title · requisstringbody
lab_version_id · requisuuidbody
capacity · requisintegerbody
starts_attimestamp (ISO 8601)body
Requête
bash
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
json
{
  "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
NomTypeDans
sessionId · requisuuidpath
Requête
bash
curl -X GET https://edushell.app/api/v1/sessions/{sessionId} \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
{
  "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
NomTypeDans
sessionId · requisuuidpath
Requête
bash
curl -X DELETE https://edushell.app/api/v1/sessions/{sessionId} \
  -H "Authorization: Bearer esk_..."
Réponse 204
POST/sessions/{sessionId}/join-codeRégénérer le code de session
Paramètres
NomTypeDans
sessionId · requisuuidpath
Requête
bash
curl -X POST https://edushell.app/api/v1/sessions/{sessionId}/join-code \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
{
  "join_code": "TIGER-42"
}

Labs

GET/labsLister les labs
Requête
bash
curl -X GET https://edushell.app/api/v1/labs \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "id": "2f3a4b5c-6d7e-8f90-a1b2-c3d4e5f6a7b8",
    "name": "Kubernetes 101",
    "tier": "cluster"
  }
]
GET/labs/{labId}/versionsLister les versions d'un lab
Paramètres
NomTypeDans
labId · requisuuidpath
Requête
bash
curl -X GET https://edushell.app/api/v1/labs/{labId}/versions \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "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-keysLister les clés API
Paramètres
NomTypeDans
orgId · requisuuidpath
Requête
bash
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/api-keys \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "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-keysCréer une clé API
Paramètres
NomTypeDans
orgId · requisuuidpath
name · requisstringbody
role · requisstring (admin | trainer)body
Requête
bash
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
json
{
  "id": "b2c3d4e5-f6a7-8b9c-0d1e-2f3a4b5c6d7e",
  "key": "esk_9f2a1c7d4b8e6a3f2c1d0e9b8a7c6d5e",
  "prefix": "esk_9f2a1c",
  "role": "trainer"
}
GET/orgs/{orgId}/webhooksLister les points de webhook
Paramètres
NomTypeDans
orgId · requisuuidpath
Requête
bash
curl -X GET https://edushell.app/api/v1/orgs/{orgId}/webhooks \
  -H "Authorization: Bearer esk_..."
Réponse 200
json
[
  {
    "id": "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f",
    "url": "https://example.com/webhooks/edushell",
    "event_types": [
      "member.removed",
      "org.closed"
    ]
  }
]
POST/orgs/{orgId}/webhooksCréer un point de webhook
Paramètres
NomTypeDans
orgId · requisuuidpath
url · requisstring (https)body
event_types · requisstring[]body
descriptionstringbody
Requête
bash
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
json
{
  "id": "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f",
  "url": "https://example.com/webhooks/edushell",
  "event_types": [
    "member.removed",
    "org.closed"
  ],
  "secret": "whsec_4b8e6a3f2c1d0e9b8a7c6d5e4f3a2b1c"
}