DRM Providers

Providers

Registra, valida y gestiona DRM providers en C21 Live Control.

Un DRM provider es el registro de catálogo de credenciales que conecta C21 Live Control con un servicio multi-DRM upstream. Cada registro declara una marca (provider_type), un endpoint SPEKE y las credenciales que la marca espera. Una vez registrado, el proveedor puede asociarse a un Destination mediante el bloque drm del Destination.

Esquema (DrmProvider)

Etiqueta UICampoNotas
NamenameNombre visible (≤ 100 caracteres).
Provider typeprovider_typeIdentificador de marca del catálogo servidor (hoy AXINOM, EZDRM). Determina el conjunto de campos de credencial que el formulario exige. La UI muestra los valores con casing humanizado (Axinom, EZDRM); el spec y la API esperan mayúsculas.
SPEKE URLspeke_urlEndpoint SPEKE principal.
SPEKE URL backupspeke_url_backupEndpoint SPEKE de respaldo opcional.
Tenant IDtenant_idObligatorio cuando la marca declara requires_tenant_id = true (por ejemplo AXINOM).
CredentialscredentialsSobre específico del tipo de proveedor. Solo escritura — GET devuelve el valor centinela •••••••• para valores almacenados. Reenviar el sobre sin cambios en PUT preserva el blob almacenado.
EnabledenabledSi el proveedor es seleccionable por los Destinations.
Validation statusvalidation_statusUno de UNKNOWN, VALID, INVALID. Vuelve a UNKNOWN tras cualquier cambio que afecte a la conectividad.
Last validationvalidation_dateTimestamp del último viaje de validateDrmProvider.
Validation errorvalidation_errorMensaje de error saneado de la última validación fallida.
Supported systemssupported_systemsArray expuesto por la marca. Un subconjunto de Widevine, PlayReady, FairPlay. El spec OpenAPI emite los valores en mayúsculas (WIDEVINE / PLAYREADY / FAIRPLAY); este documento y la UI usan TitleCase por legibilidad.

Operaciones

AcciónMétodo + rutaoperationId
Listar proveedoresGET /c21apiv2/settings/integrations/drmprovidersgetAllDrmProviders
Leer un proveedorGET /c21apiv2/settings/integrations/drmproviders/{providerId}getDrmProviderById
Registrar un proveedorPOST /c21apiv2/settings/integrations/drmprovidersaddDrmProvider
Actualizar un proveedorPUT /c21apiv2/settings/integrations/drmproviders/{providerId}updateDrmProvider
Borrar un proveedorDELETE /c21apiv2/settings/integrations/drmproviders/{providerId}deleteDrmProvider
Validar un proveedorPOST /c21apiv2/settings/integrations/drmproviders/{providerId}/validatevalidateDrmProvider

Cada operación requiere el rol System Administrator.

Registrar un proveedor

Abre el formulario

Abre Integrations → DRM → Providers → Add provider.

Rellena los campos

Establece Name, Provider type, SPEKE URL, Tenant ID opcional y el sobre Credentials específico de la marca. Deja Enabled activo para operación normal.

Guarda

Al enviar se llama a addDrmProvider. El sobre de credenciales se cifra en el servidor (AES-256-CBC, con clave derivada vía PBKDF2-SHA256) y no se devuelve más; has_credentials se pone a true en la fila.

Valida

Ejecuta la acción Validate. validateDrmProvider hace un viaje de ida y vuelta de las credenciales almacenadas contra el servicio SPEKE upstream y actualiza validation_status. Una validación fallida expone un error saneado en validation_error; corrige las credenciales con un update y vuelve a validar.

Editar y borrar

updateDrmProvider es una actualización parcial. Reenviar el sobre de credenciales con el valor centinela •••••••• preserva el blob almacenado; enviar cualquier campo con un valor real re-cifra el sobre completo.

deleteDrmProvider elimina el proveedor. Los Destinations que referenciaban el proveedor borrado en drm.provider_id pierden la referencia y fallan la validación al arrancar hasta que se apunten a otro proveedor.

Asociar un proveedor a un Destination

Una vez registrado un proveedor y con VALID, asócialo a cada Destination protegido mediante el bloque drm (consulta Destinations):

{
  "drm": {
    "active": true,
    "provider_id": <id del proveedor>,
    "contentid": "<identificador de contenido>",
    "systems": ["Widevine", "PlayReady"]
  }
}

encryption_mode se omite porque el servidor lo deriva de systems (sin FairPlaycenc). Si se envía, el servidor lo recalcula igualmente.

Un Destination sin DRM configurado emite en claro.

FAQ

Copyright © 2026