# Créer une session de lecture

Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.

Comment la lecture est autorisée

Votre backend décide qui peut regarder le contenu. DRM-X fournit l’autorisation de lecture. Le lecteur l’utilise pour demander une licence DRM.

- 01**Spectateur**

Se connecte à votre service et demande une vidéo.

- 02**Votre backend**

Vérifie l’achat, l’abonnement ou toute autre autorisation d’accès de l’utilisateur.

- 03**DRM-X**

Applique les règles choisies et renvoie la configuration ainsi que l’autorisation de lecture.

- 04**Lecteur**

Utilise l’autorisation reçue pour demander la licence DRM nécessaire à la lecture.

Votre moteur décide de l'accès; DRM-X applique la politique signée. Les licences de médias chiffrés et DRM suivent des chemins de livraison séparés.

API 

## Créer une session de lecture universelle [#](#create-a-universal-playback-session)



```
POST https://api6.drm-x.com/api/v1/playback/environments/{siteId}/sessions
Accept: application/json
Content-Type: application/json
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}
```



```
{
  "contentId": "course-12-lesson-4",
  "contentType": "vod",
  "drmSystem": "widevine",
  "subject": "customer-user-1001",
  "sessionId": "new-unpredictable-id-per-playback",
  "playbackMode": "streaming",
  "licensePolicyTemplate": "multi-tier-standard",
  "useEnvironmentDefaults": true,
  "applicationId": "customer-web",
  "platformCapabilities": {
    "clientPlatform": "web",
    "drmSystems": ["widevine"],
    "manifestTypes": ["dash"],
    "maximumHeight": 2160,
    "persistentState": false,
    "sdkVersion": "1.2.0-preview.6"
  }
}
```



Une réponse réussie au contrat v1 comprend le manifeste faisant autorité, les variantes disponibles, DRM-licence spécifique URL, une courte durée de vie DRM License Token ou l'autorisation de procuration du client, un itinéraire de libération, la hauteur maximale autorisée et les voies autorisées. `Cache-Control: no-store`.



Utilisez une session imprévisible ID pour chaque tentative de lecture réelle. La réutilisation d'un ID à travers les appareils va à l'encontre du comptage simultané du flux.





## Authentification et champs de requête de confiance[#](#authentication-and-trusted-request-fields)

Appelez ce API de votre serveur avec un client de projet API qui a `license-tokens:create`. Utilisez l'environnement UUID comme `siteId`. Votre visionneur authentifié appelle votre terminal; votre terminal fournit les champs de confiance ci-dessous.

| Champ | Signification | Règle d'intégration | 
| --- | --- | --- |

| `contentId` | La référence de contenu publiée | Résoudre à partir de votre catalogue de confiance après la vérification des droits. | 

| `subject` | Votre identifiant de visionneur stable | Dérivé de la session authentifiée, pas d'un utilisateur fourni par le client ID. | 

| `drmSystem` | `widevine`, `playready`, `fairplay` ou `wiseplay` | Correspond à la sélection DRM à la lecteur capacités. | 

| `sessionId` | Identité de cette tentative de lecture | Générer une nouvelle valeur imprévisible pour chaque tentative. | 

| `contentType` | `vod` ou `live` | Utilisez le type enregistré pour le contenu. | 

| `playbackMode` | `streaming` dans Contrat v1 | La lecture hors ligne nécessite une extension ultérieure du contrat. | 

| `licensePolicyTemplate` / `licensePolicy` | Une politique désignée ou une politique sur les douanes | Sélectionnez sur votre serveur; ne fournissez pas les deux. Voir les règles de politique [](https://docs.drm-x.com/fr/license-service/policies). | 

| `platformCapabilities` | Plate-forme, systèmes DRM, types de manifestes et conseils d'appareil | Envoyer des capacités explicites avec de nouvelles intégrations. Ils décrivent le client; ils ne remplacent pas la politique de licence. | 



## Consommez les descripteurs de réponse[#](#consume-the-response-descriptors)

Utilisez les descripteurs de contrat v1 imbriqués. Ne construisez pas d'URL de licence à partir de devines ou remplacez les URLs manifestes enregistrées par lecteur entrées.

| Champ de réponse | Comment l'utiliser | 
| --- | --- |

| `contractVersion` | Vérifiez que la version du contrat retourné est supportée par votre intégration. | 

| `manifestUrl` / `manifestUrls` | Chargez le manifeste sélectionné faisant autorité ou une variante compatible retournée. | 

| `expiresAt` | L'expiration de cette autorisation limitée. | 

| `drm` | Lire `system`, `licenseServerUrl`, `drmLicenseToken`, `tokenType` et l'option `fairPlayCertificateUrl`. Un proxy jeton du client peut remplacer l'autorisation face au navigateur par sa propre session délimitée. | 

| `release` | Utilisez ses `url`, `method` et `authorizationScheme` pour libérer la session lorsque la lecture prend fin. | 

| `policy` | Honor `maximumHeight` et `allowedTrackTypes`. Le fournisseur applique toujours la politique signée. | 

| `tracks` | Lisez la capacité de sélection de la langue audio/sous-titre et la norme de langue-tag. | 

Retournez votre réponse lecteur avec `Cache-Control: no-store`. Ne transmettez jamais le projet Access Key dans le navigateur. Limitez les en-têtes d'autorisation aux itinéraires de licence et de certificat retournés.



## Gérer les erreurs et les réservations de libération[#](#handle-errors-and-release-reservations)

Inspectez l'état HTTP et la machine-readable `code`. Conservez le `requestId` pour le dépannage et le respect `retryable` ; un droit refusé ou une police invalide a besoin d'une décision corrigée, pas d'une boucle de réessayer. Consultez la référence d'erreur de session [playback ](https://docs.drm-x.com/fr/api-reference/errors).

Relâchez la réservation sur Stop, le remplacement de la lecture, les erreurs de terminal et l'arrêt de l'application. Une nouvelle tentative de lecture obtient une nouvelle session ID.

<!-- Canonical: https://docs.drm-x.com/fr/api-reference/playback-sessions -->
<!-- Language: fr -->
