Aller au contenu principal

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)

ControllerEndpoint de baseDescription
AdminMoviesController/admin/moviesCRUD films, import TMDB, gestion des posters, traductions
AdminSeriesController/admin/seriesCRUD series, saisons, episodes, import TMDB
AdminLiveTvController/admin/livetvCRUD chaines TV en direct, guide des programmes (EPG)
AdminRadioController/admin/radioCRUD stations radio, categories
AdminPodcastsController/admin/podcastsCRUD collections de podcasts, episodes
AdminNewsController/admin/newsCRUD articles d'actualites, categories
AdminEventsController/admin/eventsCRUD evenements live, programmation
AdminReplaysController/admin/replaysCRUD replays TV, categories

Gestion des utilisateurs et comptes (4 controllers)

ControllerEndpoint de baseDescription
AdminUsersController/admin/usersListe, recherche, suspension, changement de role
AdminAccountsController/admin/accountsGestion des comptes (multi-profil), verrouillage
AdminProfilesController/admin/profilesConsultation et gestion des profils utilisateur
AdminAuthController/admin/authConnexion admin, gestion des tokens admin

Abonnements et paiements (3 controllers)

ControllerEndpoint de baseDescription
AdminSubscriptionPlansController/admin/subscription-plansCRUD plans d'abonnement, pricing, features
AdminSubscriptionsController/admin/subscriptionsGestion des abonnements utilisateur, renouvellements
AdminPaymentsController/admin/paymentsTransactions, remboursements, rapports financiers

Configuration de la plateforme (4 controllers)

ControllerEndpoint de baseDescription
AdminSettingsController/admin/settingsConfiguration globale de la plateforme
AdminSlidersController/admin/slidersGestion des sliders de la page d'accueil
AdminBannersController/admin/bannersGestion des bannieres publicitaires
AdminCatalogController/admin/catalogGenres, categories, langues, pays

Securite et monitoring (3 controllers)

ControllerEndpoint de baseDescription
AdminDevicesController/admin/devicesConsultation et revocation d'appareils
AdminSessionsController/admin/sessionsMonitoring et revocation de sessions
AdminRiskController/admin/riskEvenements de securite, scores de risque, regles

Operations (2 controllers)

ControllerEndpoint de baseDescription
AdminSyncController/admin/syncSynchronisation de contenu depuis les sources externes
AdminWebhooksController/admin/webhooksGestion des webhooks sortants, logs de delivery

Operations CRUD standard

Chaque controller de contenu suit un pattern CRUD uniforme :

OperationMethodeEndpointDescription
ListerGET/admin/{resource}Liste paginee avec filtres
DetailsGET/admin/{resource}/:idDetails complets
CreerPOST/admin/{resource}Creation avec validation
ModifierPATCH/admin/{resource}/:idModification partielle
SupprimerDELETE/admin/{resource}/:idSuppression (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

SourceRessourceDescription
MyTV V1moviesCatalogue de films avec enrichissement TMDB
MyTV V1seriesSeries TV avec saisons et episodes
MyTV V1livetvChaines TV en direct
MyTV V1radioStations radio
D5NewspodcastsCollections et episodes de podcasts
D5Newspodcast-themesCategories de podcasts
D5NewsreplaysReplays d'emissions

Endpoints de synchronisation

MethodeEndpointDescription
POST/admin/sync/startDemarrer un job
GET/admin/sync/jobsListe des jobs (pagine)
GET/admin/sync/jobs/:jobIdStatut d'un job
DELETE/admin/sync/jobs/:jobIdAnnuler un job
POST/admin/sync/jobs/:runId/resumeReprendre un job echoue
GET/admin/sync/quarantineElements en quarantaine
POST/admin/sync/quarantine/:id/resolveResoudre un element
GET/admin/sync/statsStatistiques 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

RoleNiveauAcces
SUPER_ADMINCompletTous les endpoints admin, gestion des roles
ADMINAvanceGestion du contenu, des utilisateurs, des abonnements
MODERATORLimiteModeration du contenu, consultation des utilisateurs

Comptes admin par defaut (seed)

RoleEmailMot de passe
SUPER_ADMIN[email protected]SuperAdmin@123!
ADMIN[email protected]Admin@123!
MODERATOR[email protected]Moderator@123!
danger

Changer les mots de passe par defaut en environnement de production.

Swagger

La documentation interactive de l'API Admin est disponible sur :

Les endpoints admin sont identifies par le tag Admin dans Swagger.