Lecture
POST/v1/playback-tokens
Lien de lecture signé pour un apprenant (après avoir vérifié ses droits)
Permission playback:write
Corps de la requête
| Champ | Type | Détails |
|---|---|---|
| videoIdobligatoire | string | format ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ |
| viewer | string | 64 caractères au plus |
| viewerRef | string | format ^[A-Za-z0-9._:-]{1,128}$ |
| ttlSeconds | number | — |
Réponse 200 · Lien de lecture
curl -X POST https://api.vidoum.com/v1/playback-tokens \
-H "Authorization: Bearer $VIDOUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"videoId": "8f2c1d4e-…",
"viewer": "sara.m@lycee.ma",
"ttlSeconds": 14400
}'GET/v1/playback-sessions
Sessions de lecture avec la progression des apprenants, de la plus récente à la plus ancienne (synchronisation LMS)
Permission playback:write
Paramètres de requête
| Champ | Type | Détails |
|---|---|---|
| limitobligatoire | integer | ≥ 1 · ≤ 200 · par défaut 50 |
| videoId | string | format ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ |
| viewerRef | string | format ^[A-Za-z0-9._:-]{1,128}$ |
| activeSince | string | 40 caractères au plus |
| completed | "true" | "false" | — |
| cursor | string | 200 caractères au plus · format ^[A-Za-z0-9_-]+$ |
Réponse 200 · Page de sessions
| Champ | Type | Détails |
|---|---|---|
| sessionsobligatoire | PlaybackSession[] | — |
| nextCursorobligatoire | string | null | — |
curl https://api.vidoum.com/v1/playback-sessions \
-H "Authorization: Bearer $VIDOUM_API_KEY"GET/v1/playback-sessions/{id}
Une session de lecture et la progression de l’apprenant
Permission playback:write
Paramètres de chemin
| Champ | Type | Détails |
|---|---|---|
| idobligatoire | string (uuid) | — |
Réponse 200 · Session
| Champ | Type | Détails |
|---|---|---|
| sessionobligatoire | PlaybackSession | — |
curl https://api.vidoum.com/v1/playback-sessions/ID \
-H "Authorization: Bearer $VIDOUM_API_KEY"POST/v1/playback-events
Événements du lecteur, authentifiés par le lien de lecture (envoyés par le lecteur Vidoum, pas par votre serveur)
Public, sans clé
Corps de la requête
| Champ | Type | Détails |
|---|---|---|
| tokenobligatoire | string | 10 à 4096 caractères · format ^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$ |
| videoIdobligatoire | string | format ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ |
| eventsobligatoire | object[] | 1 élément(s) au moins · 50 éléments au plus |
| events[].seqobligatoire | integer | ≥ 0 · ≤ 1 000 000 |
| events[].typeobligatoire | "started" | "paused" | "resumed" | "progress" | "completed" | "error" | — |
| events[].positionobligatoire | number | ≥ 0 · ≤ 86 400 |
| events[].duration | number | ≥ 0 · ≤ 86 400 |
| events[].from | number | ≥ 0 · ≤ 86 400 |
| events[].to | number | ≥ 0 · ≤ 86 400 |
| events[].code | "expired" | "network" | "media" | "unsupported" | — |
| events[].at | number | — |
Réponse 204 · Accepté (les doublons sont ignorés)
curl -X POST https://api.vidoum.com/v1/playback-events \
-H "Content-Type: application/json" \
-d '{
"token": "…",
"videoId": "8f2c1d4e-…",
"events": [
"video.ready",
"video.failed"
]
}'POST/v1/playback-sessions/{id}/revoke
Révoquer un lien de lecture avant son expiration (effectif en 2 minutes environ)
Permission playback:write
Paramètres de chemin
| Champ | Type | Détails |
|---|---|---|
| idobligatoire | string (uuid) | — |
Corps de la requête
| Champ | Type | Détails |
|---|---|---|
| reason | string | 200 caractères au plus |
Réponse 200 · Révoqué
| Champ | Type | Détails |
|---|---|---|
| sessionobligatoire | object | — |
| session.idobligatoire | string | — |
| session.revokedAtobligatoire | string | — |
| session.expiresAtobligatoire | integer | — |
curl -X POST https://api.vidoum.com/v1/playback-sessions/ID/revoke \
-H "Authorization: Bearer $VIDOUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Abonnement résilié"
}'