Admin API
L'API d'administration fournit 150+ endpoints pour gerer l'ensemble de la plateforme MyTelevision. L'acces est restreint aux utilisateurs ayant les roles ADMIN ou SUPER_ADMIN.
Base URL : /api/v2/admin
Authentification : Tous les endpoints admin requierent un JWT Bearer token avec un role administrateur.
Authorization: Bearer <admin_access_token>
Vue d'ensemble des controllers
L'API d'administration comprend 24 controllers organises par domaine fonctionnel :
Gestion du contenu (8 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminMoviesController | /admin/movies | CRUD films, import TMDB, gestion des posters, traductions |
| AdminSeriesController | /admin/series | CRUD series, saisons, episodes, import TMDB |
| AdminLiveTvController | /admin/livetv | CRUD chaines TV en direct, guide des programmes (EPG) |
| AdminRadioController | /admin/radio | CRUD stations radio, categories |
| AdminPodcastsController | /admin/podcasts | CRUD collections de podcasts, episodes |
| AdminNewsController | /admin/news | CRUD articles d'actualites, categories |
| AdminEventsController | /admin/events | CRUD evenements live, programmation |
| AdminReplaysController | /admin/replays | CRUD replays TV, categories |
Gestion des utilisateurs et comptes (4 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminUsersController | /admin/users | Liste, recherche, suspension, changement de role |
| AdminAccountsController | /admin/accounts | Gestion des comptes (multi-profil), verrouillage |
| AdminProfilesController | /admin/profiles | Consultation et gestion des profils utilisateur |
| AdminAuthController | /admin/auth | Connexion admin, gestion des tokens admin |
Abonnements et paiements (3 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminSubscriptionPlansController | /admin/subscription-plans | CRUD plans d'abonnement, pricing, features |
| AdminSubscriptionsController | /admin/subscriptions | Gestion des abonnements utilisateur, renouvellements |
| AdminPaymentsController | /admin/payments | Transactions, remboursements, rapports financiers |
Configuration de la plateforme (4 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminSettingsController | /admin/settings | Configuration globale de la plateforme |
| AdminSlidersController | /admin/sliders | Gestion des sliders de la page d'accueil |
| AdminBannersController | /admin/banners | Gestion des bannieres publicitaires |
| AdminCatalogController | /admin/catalog | Genres, categories, langues, pays |
Securite et monitoring (3 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminDevicesController | /admin/devices | Consultation et revocation d'appareils |
| AdminSessionsController | /admin/sessions | Monitoring et revocation de sessions |
| AdminRiskController | /admin/risk | Evenements de securite, scores de risque, regles |
Operations (2 controllers)
| Controller | Endpoint de base | Description |
|---|---|---|
| AdminSyncController | /admin/sync | Synchronisation de contenu depuis les sources externes |
| AdminWebhooksController | /admin/webhooks | Gestion des webhooks sortants, logs de delivery |
Operations CRUD standard
Chaque controller de contenu suit un pattern CRUD uniforme :
| Operation | Methode | Endpoint | Description |
|---|---|---|---|
| Lister | GET | /admin/{resource} | Liste paginee avec filtres |
| Details | GET | /admin/{resource}/:id | Details complets |
| Creer | POST | /admin/{resource} | Creation avec validation |
| Modifier | PATCH | /admin/{resource}/:id | Modification partielle |
| Supprimer | DELETE | /admin/{resource}/:id | Suppression (soft-delete) |
Fonctionnalites communes
- Pagination :
?page=1&limit=20 - Tri :
?sort=createdAt&order=DESC - Recherche :
?search=terme - Filtres :
?status=PUBLISHED&accessType=FREE
Gestion des films (exemple)
POST /admin/movies
Creer un film.
POST /api/v2/admin/movies
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"title": "Inception",
"titleEn": "Inception",
"overview": "Un voleur s'infiltre dans les reves...",
"overviewEn": "A thief who steals secrets through dreams...",
"releaseDate": "2010-07-16",
"duration": 148,
"rating": "PG-13",
"accessType": "PREMIUM",
"status": "PUBLISHED",
"genres": ["action", "sci-fi"],
"tmdbId": 27205
}
Import depuis TMDB
POST /api/v2/admin/movies/import-tmdb
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"tmdbId": 27205,
"accessType": "PREMIUM",
"status": "DRAFT"
}
Upload de fichiers
POST /api/v2/admin/movies/:id/upload
Authorization: Bearer <admin_token>
Content-Type: multipart/form-data
file: <fichier_image>
type: poster | backdrop | trailer
Gestion des utilisateurs
GET /admin/users
Lister les utilisateurs avec filtres.
GET /api/v2/admin/users?page=1&limit=20&role=USER&status=ACTIVE&search=john
Authorization: Bearer <admin_token>
PATCH /admin/users/:id/role
Changer le role d'un utilisateur.
PATCH /api/v2/admin/users/:id/role
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"role": "MODERATOR"
}
POST /admin/users/:id/suspend
Suspendre un compte utilisateur.
POST /api/v2/admin/users/:id/suspend
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"reason": "Terms of service violation",
"duration": "30d"
}
Synchronisation de contenu
Le systeme de synchronisation importe du contenu depuis des sources externes.
POST /admin/sync/start
Demarrer un job de synchronisation.
POST /api/v2/admin/sync/start
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"resources": ["movies", "series", "livetv", "radio"],
"dryRun": false,
"limit": 100,
"concurrency": 5,
"forceRefresh": false,
"since": "2025-01-01T00:00:00Z"
}
Ressources synchronisables
| Source | Ressource | Description |
|---|---|---|
| MyTV V1 | movies | Catalogue de films avec enrichissement TMDB |
| MyTV V1 | series | Series TV avec saisons et episodes |
| MyTV V1 | livetv | Chaines TV en direct |
| MyTV V1 | radio | Stations radio |
| D5News | podcasts | Collections et episodes de podcasts |
| D5News | podcast-themes | Categories de podcasts |
| D5News | replays | Replays d'emissions |
Endpoints de synchronisation
| Methode | Endpoint | Description |
|---|---|---|
| POST | /admin/sync/start | Demarrer un job |
| GET | /admin/sync/jobs | Liste des jobs (pagine) |
| GET | /admin/sync/jobs/:jobId | Statut d'un job |
| DELETE | /admin/sync/jobs/:jobId | Annuler un job |
| POST | /admin/sync/jobs/:runId/resume | Reprendre un job echoue |
| GET | /admin/sync/quarantine | Elements en quarantaine |
| POST | /admin/sync/quarantine/:id/resolve | Resoudre un element |
| GET | /admin/sync/stats | Statistiques de synchronisation |
Gestion des webhooks
POST /admin/webhooks
Enregistrer un webhook sortant.
POST /api/v2/admin/webhooks
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"url": "https://your-server.com/webhooks/mytv",
"events": ["subscription.created", "payment.failed"],
"secret": "your-webhook-secret",
"isActive": true
}
GET /admin/webhooks/:id/logs
Consulter les logs de delivery d'un webhook.
GET /api/v2/admin/webhooks/:id/logs
Authorization: Bearer <admin_token>
POST /admin/webhooks/:id/test
Envoyer un webhook de test.
POST /api/v2/admin/webhooks/:id/test
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"eventType": "subscription.created"
}
Roles et permissions
| Role | Niveau | Acces |
|---|---|---|
SUPER_ADMIN | Complet | Tous les endpoints admin, gestion des roles |
ADMIN | Avance | Gestion du contenu, des utilisateurs, des abonnements |
MODERATOR | Limite | Moderation du contenu, consultation des utilisateurs |
Comptes admin par defaut (seed)
| Role | Mot de passe | |
|---|---|---|
| SUPER_ADMIN | [email protected] | SuperAdmin@123! |
| ADMIN | [email protected] | Admin@123! |
| MODERATOR | [email protected] | Moderator@123! |
Changer les mots de passe par defaut en environnement de production.
Swagger
La documentation interactive de l'API Admin est disponible sur :
- Production : https://api.mytelevision.app/api/docs
- Staging : https://staging-api.mytelevision.app/api/docs
Les endpoints admin sont identifies par le tag Admin dans Swagger.