Vue d'ensemble de l'API MyTelevision v2
L'API MyTelevision v2 est une API RESTful moderne construite avec NestJS, offrant un acces complet a la plateforme de streaming. Elle permet la gestion de contenus multimedia (films, series, TV en direct, radio, podcasts, replays, evenements live et actualites), l'authentification multi-provider, la gestion d'abonnements, et un systeme complet de profils multi-utilisateurs de type Netflix.
Statistiques de l'API
| Categorie | Nombre |
|---|---|
| Endpoints totaux | 587 |
| Modules | 72 |
| Controllers | 60 |
| Modeles (Schemas) | 73 |
| Tags Swagger | 42 |
Serveurs
| Environnement | URL |
|---|---|
| Local | http://localhost:3000/api/v2 |
| Staging | https://staging-api.mytelevision.app/api/v2 |
| Production | https://api.mytelevision.app/api/v2 |
Documentation interactive
| Ressource | URL |
|---|---|
| Swagger UI (Production) | https://api.mytelevision.app/api/docs |
| Swagger UI (Staging) | https://staging-api.mytelevision.app/api/docs |
| Swagger UI (Local) | http://localhost:3000/api/docs |
| OpenAPI JSON | /api/docs-json |
Architecture de l'API
L'API est organisee en modules fonctionnels :
API Publique (/api/v2)
| Module | Description | Lien |
|---|---|---|
| Auth | Authentification, inscription, connexion sociale | Auth |
| Accounts | Gestion des comptes (systeme multi-profil) | Accounts |
| Profiles | Gestion des profils (max 4 par compte) | Profiles |
| Content | Films, Series, Live TV, Radio, Podcasts, News, Events, Replays | Content |
| Streaming | Tokens de streaming securises et DRM | Streaming |
| Engagement | Reactions, Vues, Favoris, Historique | Engagement |
| Devices | Gestion des appareils | Devices |
| Signals | Signaux de recommandation | Signals |
| Sessions | Gestion des sessions | Sessions |
| Subscriptions | Abonnements et facturation | Subscriptions |
| Risk | Detection de fraude et securite | Risk |
API Administration (/api/v2/admin)
| Module | Description | Lien |
|---|---|---|
| Admin | 24 controllers d'administration | Admin |
Autres
| Module | Description | Lien |
|---|---|---|
| Webhooks | Webhooks sortants | Webhooks |
| Codes d'erreur | Reference des codes d'erreur | Erreurs |
Conventions de reponse
Reponse paginee
Tous les endpoints de liste retournent une reponse paginee :
{
"data": [...],
"meta": {
"page": 1,
"limit": 20,
"total": 150,
"totalPages": 8,
"hasNextPage": true,
"hasPreviousPage": false
}
}
Parametres de pagination
| Parametre | Type | Defaut | Description |
|---|---|---|---|
page | number | 1 | Numero de page |
limit | number | 10 | Items par page (max 100) |
sort | string | createdAt | Champ de tri |
order | string | DESC | Direction (ASC / DESC) |
Format d'erreur
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"timestamp": "2025-01-15T10:30:00.000Z",
"path": "/api/v2/movies",
"details": [
{
"field": "title",
"message": "title must be a string"
}
]
}
Localisation
L'API supporte le multilingue via header ou query parameter :
# Via header
curl -H "Accept-Language: fr-FR" https://api.mytelevision.app/api/v2/movies
# Via query parameter
curl https://api.mytelevision.app/api/v2/movies?lang=en_US
| Locale | Langue | Defaut |
|---|---|---|
fr_FR | Francais | Oui |
en_US | English | Non |
Les champs localises suivent le pattern :
title/titleEnoverview/overviewEndescription/descriptionEn
Versioning
L'API utilise le versioning par URL :
/api/v2/*-- Version actuelle (recommandee)/api/v1/*-- Deprecated (ne plus utiliser)
Premier appel
# Health check (non authentifie)
curl https://api.mytelevision.app/health
# Liste des films (authentifie)
curl -H "Authorization: Bearer $TOKEN" \
https://api.mytelevision.app/api/v2/movies?page=1&limit=10
Schemas communs
ContentStatus (Enum)
| Valeur | Description |
|---|---|
DRAFT | Brouillon |
PUBLISHED | Publie |
ARCHIVED | Archive |
COMING_SOON | A venir |
AccessType (Enum)
| Valeur | Description |
|---|---|
FREE | Gratuit |
PREMIUM | Premium (achat unique) |
SUBSCRIPTION | Abonnement requis |
MediaType (Enum)
| Valeur | Description |
|---|---|
MOVIE | Film |
SERIES | Serie |
EPISODE | Episode |
LIVETV | Chaine TV |
RADIO | Station radio |
PODCAST | Podcast |
NEWS | Article |
EVENT | Evenement live |
REPLAY | Replay |