API PlayLoop Playlists
Objectif
Créer et maintenir les playlists PlayLoop qui alimentent les devices d’affichage dynamique.
Périmètre
Liste, création, modification, suppression, ajout/retrait/réordonnancement d’items.
Acteurs/applications consommatrices
- Interface PlayLoop admin.
- API Laravel.
- Devices via endpoint device playlist.
Authentification requise
Routes admin visibles : identify.app + auth:sanctum, avec X-App-Source: playloop.
Permissions/RBAC
- Gestion réservée aux propriétaires/gestionnaires de l’acteur.
- Un device ne reçoit que les playlists qui lui sont assignées ou applicables.
Endpoints actuels visibles si confirmés
| Méthode | Route | Statut |
|---|---|---|
GET | /api/v1/playloop/acteurs/{id}/playlists | Confirmé. |
POST | /api/v1/playloop/acteurs/{id}/playlists | Confirmé. |
POST | /api/v1/playloop/playlists/{id}/items | Confirmé. |
PATCH | /api/v1/playloop/playlists/{id}/reorder | Confirmé. |
PATCH | /api/v1/playloop/playlists/{id} | Confirmé. |
DELETE | /api/v1/playloop/playlists/{id} | Confirmé. |
DELETE | /api/v1/playloop/playlists/items/{id} | Confirmé. |
Endpoints cibles proposés si utile
POST /api/v1/playloop/playlists/{id}/publish, non confirmé.GET /api/v1/playloop/playlists/{id}/preview, non confirmé.
Exemple de requête
POST /api/v1/playloop/playlists/playlist-id/items
Authorization: Bearer <token>
X-App-Source: playloop
Content-Type: application/json
{
"content_type": "media",
"content_id": "media-id",
"duration_s": 10,
"ordre": 1
}
Exemple de réponse succès
{
"item": {
"id": "item-id",
"content_type": "media",
"content_id": "media-id",
"duration_s": 10,
"ordre": 1,
"content": null
}
}
Exemple d’erreur
{
"error": "playlist_scope_denied",
"message": "Vous ne pouvez pas modifier cette playlist."
}
Pagination si applicable
Applicable à la liste des playlists.
Rate limiting si applicable
Recommandé sur réordonnancement et ajout massif d’items.
Audit/logs si applicable
Recommandé pour création, suppression, publication et réordonnancement.
Sécurité
- Vérifier que les médias appartiennent au même périmètre.
- Ne pas exposer de contenu non validé aux devices.
- Respecter l’autonomie PlayLoop sans dépendre obligatoirement de DMV.
État actuel vs cible
| Sujet | État actuel | Cible |
|---|---|---|
| CRUD playlist | Routes visibles. | Versionnement et cache device à stabiliser. |
| Items | Routes visibles. | Contrat précis d’item à définir. |
Points à confirmer
- Format exact des items.
- Assignation playlist-device.
- Versionnement, ETag ou horodatage de sync.
- Preview/publication.