[{"data":1,"prerenderedAt":1143},["ShallowReactive",2],{"navigation_docs_en":3,"-en-settings-integrations-drm-providers":408,"-en-settings-integrations-drm-providers-surround":1138},[4,25,74,124,238,253,313,342,388],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Concepts","\u002Fen\u002Fgetting-started\u002Fconcepts","en\u002F1.getting-started\u002F3.concepts","i-lucide-book-open",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Live Production","\u002Fen\u002Flive-production","en\u002F2.live-production",[30,35,55,60],{"title":31,"path":32,"stem":33,"icon":34},"On air","\u002Fen\u002Flive-production\u002Fon-air","en\u002F2.live-production\u002F1.on-air","i-lucide-radio",{"title":36,"path":37,"stem":38,"children":39,"page":24},"Live Streams","\u002Fen\u002Flive-production\u002Flive-streams","en\u002F2.live-production\u002F2.live-streams",[40,45,50],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Fen\u002Flive-production\u002Flive-streams\u002Foverview","en\u002F2.live-production\u002F2.live-streams\u002F1.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Options","\u002Fen\u002Flive-production\u002Flive-streams\u002Flive-stream-options","en\u002F2.live-production\u002F2.live-streams\u002F2.live-stream-options","i-lucide-file-text",{"title":51,"path":52,"stem":53,"icon":54},"Start and stop","\u002Fen\u002Flive-production\u002Flive-streams\u002Fstart-stop","en\u002F2.live-production\u002F2.live-streams\u002F3.start-stop","i-lucide-play-circle",{"title":56,"path":57,"stem":58,"icon":59},"Scheduler","\u002Fen\u002Flive-production\u002Fscheduler","en\u002F2.live-production\u002F3.scheduler","i-lucide-calendar-clock",{"title":61,"path":62,"stem":63,"children":64,"page":24},"Recordings","\u002Fen\u002Flive-production\u002Frecordings","en\u002F2.live-production\u002F4.recordings",[65,69],{"title":41,"path":66,"stem":67,"icon":68},"\u002Fen\u002Flive-production\u002Frecordings\u002Foverview","en\u002F2.live-production\u002F4.recordings\u002F1.overview","i-lucide-circle-dot",{"title":70,"path":71,"stem":72,"icon":73},"Editor","\u002Fen\u002Flive-production\u002Frecordings\u002Feditor","en\u002F2.live-production\u002F4.recordings\u002F2.editor","i-lucide-scissors",{"title":75,"path":76,"stem":77,"children":78,"page":24},"Configuration","\u002Fen\u002Fconfiguration","en\u002F3.configuration",[79,93,98,111],{"title":80,"path":81,"stem":82,"children":83,"page":24},"Devices","\u002Fen\u002Fconfiguration\u002Fdevices","en\u002F3.configuration\u002F1.devices",[84,88],{"title":80,"path":85,"stem":86,"icon":87},"\u002Fen\u002Fconfiguration\u002Fdevices\u002Fdevices","en\u002F3.configuration\u002F1.devices\u002F1.devices","i-lucide-server",{"title":89,"path":90,"stem":91,"icon":92},"Groups","\u002Fen\u002Fconfiguration\u002Fdevices\u002Fgroups","en\u002F3.configuration\u002F1.devices\u002F2.groups","i-lucide-network",{"title":94,"path":95,"stem":96,"icon":97},"Sources","\u002Fen\u002Fconfiguration\u002Fsources","en\u002F3.configuration\u002F2.sources","i-lucide-cable",{"title":99,"path":100,"stem":101,"children":102,"page":24},"Encodings","\u002Fen\u002Fconfiguration\u002Fencodings","en\u002F3.configuration\u002F3.encodings",[103,107],{"title":99,"path":104,"stem":105,"icon":106},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fprofiles","en\u002F3.configuration\u002F3.encodings\u002F1.profiles","i-lucide-sliders-horizontal",{"title":89,"path":108,"stem":109,"icon":110},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fgroups","en\u002F3.configuration\u002F3.encodings\u002F2.groups","i-lucide-layers",{"title":112,"path":113,"stem":114,"children":115,"page":24},"Destinations","\u002Fen\u002Fconfiguration\u002Fdestinations","en\u002F3.configuration\u002F4.destinations",[116,120],{"title":112,"path":117,"stem":118,"icon":119},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fdestinations","en\u002F3.configuration\u002F4.destinations\u002F1.destinations","i-lucide-send",{"title":89,"path":121,"stem":122,"icon":123},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups","en\u002F3.configuration\u002F4.destinations\u002F2.publishing-groups","i-lucide-share-2",{"title":125,"path":126,"stem":127,"children":128,"page":24},"Settings","\u002Fen\u002Fsettings","en\u002F4.settings",[129,142,147,163,179],{"title":130,"path":131,"stem":132,"children":133,"page":24},"Users","\u002Fen\u002Fsettings\u002Fusers","en\u002F4.settings\u002F1.users",[134,138],{"title":130,"path":135,"stem":136,"icon":137},"\u002Fen\u002Fsettings\u002Fusers\u002Fusers","en\u002F4.settings\u002F1.users\u002F1.users","i-lucide-user",{"title":89,"path":139,"stem":140,"icon":141},"\u002Fen\u002Fsettings\u002Fusers\u002Fuser-groups","en\u002F4.settings\u002F1.users\u002F2.user-groups","i-lucide-users",{"title":143,"path":144,"stem":145,"icon":146},"Security","\u002Fen\u002Fsettings\u002Fsecurity","en\u002F4.settings\u002F2.security","i-lucide-shield",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":24},"Assets","i-lucide-image","\u002Fen\u002Fsettings\u002Fassets","en\u002F4.settings\u002F3.assets",[153,158],{"title":154,"path":155,"stem":156,"icon":157},"Logos","\u002Fen\u002Fsettings\u002Fassets\u002Flogos","en\u002F4.settings\u002F3.assets\u002F1.logos","i-lucide-images",{"title":159,"path":160,"stem":161,"icon":162},"Files","\u002Fen\u002Fsettings\u002Fassets\u002Ffiles","en\u002F4.settings\u002F3.assets\u002F2.files","i-lucide-clapperboard",{"title":164,"icon":165,"path":166,"stem":167,"children":168,"page":24},"External Storage","i-lucide-folder-cog","\u002Fen\u002Fsettings\u002Fexternal-storage","en\u002F4.settings\u002F4.external-storage",[169,174],{"title":170,"path":171,"stem":172,"icon":173},"Remote Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Fremote-folders","en\u002F4.settings\u002F4.external-storage\u002F1.remote-folders","i-lucide-folder-archive",{"title":175,"path":176,"stem":177,"icon":178},"Target Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Ftarget-folders","en\u002F4.settings\u002F4.external-storage\u002F2.target-folders","i-lucide-folder-up",{"title":180,"path":181,"stem":182,"children":183,"page":24},"Integrations","\u002Fen\u002Fsettings\u002Fintegrations","en\u002F4.settings\u002F5.integrations",[184,188,193,207],{"title":41,"path":185,"stem":186,"icon":187},"\u002Fen\u002Fsettings\u002Fintegrations\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F1.overview","i-lucide-plug",{"title":189,"path":190,"stem":191,"icon":192},"MediaCopilot","\u002Fen\u002Fsettings\u002Fintegrations\u002Fmediacopilot","en\u002F4.settings\u002F5.integrations\u002F2.mediacopilot","i-lucide-sparkles",{"title":194,"icon":195,"path":196,"stem":197,"children":198,"page":24},"C21 Live Cloud","i-lucide-cloud","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud",[199,202],{"title":41,"path":200,"stem":201,"icon":195},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F1.overview",{"title":203,"path":204,"stem":205,"icon":206},"Accounts","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Faccounts","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F2.accounts","i-lucide-key-round",{"title":208,"icon":146,"path":209,"stem":210,"children":211,"page":24},"DRM Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm","en\u002F4.settings\u002F5.integrations\u002F4.drm",[212,216,220,224,228,233],{"title":41,"path":213,"stem":214,"icon":215},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F1.overview","i-lucide-shield-check",{"title":217,"path":218,"stem":219,"icon":146},"Widevine","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fwidevine","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F2.widevine",{"title":221,"path":222,"stem":223,"icon":146},"PlayReady","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fplayready","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F3.playready",{"title":225,"path":226,"stem":227,"icon":146},"FairPlay","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Ffairplay","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F4.fairplay",{"title":229,"path":230,"stem":231,"icon":232},"Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fproviders","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers","i-lucide-shield-half",{"title":234,"path":235,"stem":236,"icon":237},"Workflow","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fworkflow","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F6.workflow","i-lucide-workflow",{"title":239,"path":240,"stem":241,"children":242,"page":24},"System Status","\u002Fen\u002Fsystem-status","en\u002F5.system-status",[243,248],{"title":244,"path":245,"stem":246,"icon":247},"Commands","\u002Fen\u002Fsystem-status\u002Fcommands","en\u002F5.system-status\u002F1.commands","i-lucide-square-terminal",{"title":249,"path":250,"stem":251,"icon":252},"Logs","\u002Fen\u002Fsystem-status\u002Flogs","en\u002F5.system-status\u002F2.logs","i-lucide-scroll-text",{"title":254,"path":255,"stem":256,"children":257,"page":24},"How Tos","\u002Fen\u002Fhow-tos","en\u002F6.how-tos",[258,263,268,273,277,281,285,290,294,299,304,309],{"title":259,"path":260,"stem":261,"icon":262},"Start and stop a Live stream","\u002Fen\u002Fhow-tos\u002Fstart-stream-via-api","en\u002F6.how-tos\u002F1.start-stream-via-api","i-lucide-terminal",{"title":264,"path":265,"stem":266,"icon":267},"Ingest a YouTube Live broadcast","\u002Fen\u002Fhow-tos\u002Fingest-youtube-live","en\u002F6.how-tos\u002F10.ingest-youtube-live","i-lucide-youtube",{"title":269,"path":270,"stem":271,"icon":272},"Source Synchronized Encoding (SSE) — bit-identical redundancy","\u002Fen\u002Fhow-tos\u002Fsource-synchronized-encoding","en\u002F6.how-tos\u002F11.source-synchronized-encoding","i-lucide-copy-check",{"title":274,"path":275,"stem":276,"icon":34},"Broadcast radio as video","\u002Fen\u002Fhow-tos\u002Fbroadcast-radio-as-video","en\u002F6.how-tos\u002F12.broadcast-radio-as-video",{"title":278,"path":279,"stem":280,"icon":215},"Protect a Live stream with multi-DRM","\u002Fen\u002Fhow-tos\u002Fmulti-drm-destination","en\u002F6.how-tos\u002F2.multi-drm-destination",{"title":282,"path":283,"stem":284,"icon":59},"Schedule a weekly recurring broadcast","\u002Fen\u002Fhow-tos\u002Fweekly-recurring-broadcast","en\u002F6.how-tos\u002F3.weekly-recurring-broadcast",{"title":286,"path":287,"stem":288,"icon":289},"Cut a clip in the Editor and send it to MediaCopilot","\u002Fen\u002Fhow-tos\u002Fexport-recording-to-mediacopilot","en\u002F6.how-tos\u002F4.export-recording-to-mediacopilot","i-lucide-upload-cloud",{"title":291,"path":292,"stem":293,"icon":149},"Apply a logo overlay to a running Live stream","\u002Fen\u002Fhow-tos\u002Fapply-logo-overlay","en\u002F6.how-tos\u002F5.apply-logo-overlay",{"title":295,"path":296,"stem":297,"icon":298},"Black out or replace the program on a running Live stream","\u002Fen\u002Fhow-tos\u002Fbroadcast-blackout","en\u002F6.how-tos\u002F6.broadcast-blackout","i-lucide-square",{"title":300,"path":301,"stem":302,"icon":303},"Switch the source of a running Live stream","\u002Fen\u002Fhow-tos\u002Fruntime-source-switch","en\u002F6.how-tos\u002F7.runtime-source-switch","i-lucide-repeat-2",{"title":305,"path":306,"stem":307,"icon":308},"Toggle a Publishing mid-broadcast","\u002Fen\u002Fhow-tos\u002Ftoggle-publishing-mid-broadcast","en\u002F6.how-tos\u002F8.toggle-publishing-mid-broadcast","i-lucide-toggle-right",{"title":310,"path":311,"stem":312,"icon":34},"Contribute a live signal to MediaCopilot Live","\u002Fen\u002Fhow-tos\u002Fcontribute-to-mediacopilot-live","en\u002F6.how-tos\u002F9.contribute-to-mediacopilot-live",{"title":314,"path":315,"stem":316,"children":317,"page":24},"Installation","\u002Fen\u002Finstallation","en\u002F7.installation",[318,323,328,333,338],{"title":319,"path":320,"stem":321,"icon":322},"Prepare the host","\u002Fen\u002Finstallation\u002Fprepare-host","en\u002F7.installation\u002F1.prepare-host","i-lucide-server-cog",{"title":324,"path":325,"stem":326,"icon":327},"Install C21 Live Control","\u002Fen\u002Finstallation\u002Fcontrol","en\u002F7.installation\u002F2.control","i-lucide-cloud-download",{"title":329,"path":330,"stem":331,"icon":332},"Install C21 Live Encoder","\u002Fen\u002Finstallation\u002Fencoder","en\u002F7.installation\u002F3.encoder","i-lucide-cpu",{"title":334,"path":335,"stem":336,"icon":337},"Updates","\u002Fen\u002Finstallation\u002Fupdates","en\u002F7.installation\u002F4.updates","i-lucide-refresh-cw",{"title":339,"path":340,"stem":341,"icon":206},"Licenses","\u002Fen\u002Finstallation\u002Flicenses","en\u002F7.installation\u002F5.licenses",{"title":343,"path":344,"stem":345,"children":346,"page":24},"Developers","\u002Fen\u002Fdevelopers","en\u002F8.developers",[347,351,369],{"title":41,"path":348,"stem":349,"icon":350},"\u002Fen\u002Fdevelopers\u002Foverview","en\u002F8.developers\u002F1.overview","i-lucide-code",{"title":352,"icon":350,"path":353,"stem":354,"children":355,"page":24},"API","\u002Fen\u002Fdevelopers\u002Fapi","en\u002F8.developers\u002F2.api",[356,359,364],{"title":41,"path":357,"stem":358,"icon":350},"\u002Fen\u002Fdevelopers\u002Fapi\u002Foverview","en\u002F8.developers\u002F2.api\u002F1.overview",{"title":360,"path":361,"stem":362,"icon":363},"Authentication","\u002Fen\u002Fdevelopers\u002Fapi\u002Fauthentication","en\u002F8.developers\u002F2.api\u002F2.authentication","i-lucide-key",{"title":365,"path":366,"stem":367,"icon":368},"Pagination and Errors","\u002Fen\u002Fdevelopers\u002Fapi\u002Fpagination-errors","en\u002F8.developers\u002F2.api\u002F3.pagination-errors","i-lucide-list-ordered",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":24},"MCP Server","i-lucide-bot","\u002Fen\u002Fdevelopers\u002Fmcp-server","en\u002F8.developers\u002F3.mcp-server",[375,378,383],{"title":41,"path":376,"stem":377,"icon":371},"\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Foverview","en\u002F8.developers\u002F3.mcp-server\u002F1.overview",{"title":379,"path":380,"stem":381,"icon":382},"Tools","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Ftools","en\u002F8.developers\u002F3.mcp-server\u002F2.tools","i-lucide-wrench",{"title":384,"path":385,"stem":386,"icon":387},"Examples","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Fexamples","en\u002F8.developers\u002F3.mcp-server\u002F3.examples","i-lucide-play",{"title":389,"path":390,"stem":391,"children":392,"page":24},"Resources","\u002Fen\u002Fresources","en\u002F9.resources",[393,398,403],{"title":394,"path":395,"stem":396,"icon":397},"Links","\u002Fen\u002Fresources\u002Flinks","en\u002F9.resources\u002F1.links","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":402},"Release Notes","\u002Fen\u002Fresources\u002Frelease-notes","en\u002F9.resources\u002F2.release-notes","i-lucide-clipboard-list",{"title":404,"path":405,"stem":406,"icon":407},"Glossary","\u002Fen\u002Fresources\u002Fglossary","en\u002F9.resources\u002F3.glossary","i-lucide-book-a",{"id":409,"title":229,"body":410,"description":1131,"extension":1132,"links":1133,"meta":1134,"navigation":1135,"path":230,"seo":1136,"stem":231,"__hash__":1137},"docs_en\u002Fen\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers.md",{"type":411,"value":412,"toc":1117},"minimark",[413,435,444,689,693,799,802,805,881,885,893,902,906,919,1059,1075,1081,1084,1088,1099,1113],[414,415,416,417,421,422,425,426,430,431,434],"p",{},"A ",[418,419,420],"strong",{},"DRM provider"," is the credentials catalogue entry that connects ",[418,423,424],{},"C21 Live Control"," to an upstream multi-DRM service. Each provider record declares a brand (",[427,428,429],"code",{},"provider_type","), a SPEKE endpoint and the credentials the brand expects. Once registered, the provider can be attached to a Destination through the Destination's ",[427,432,433],{},"drm"," block.",[436,437,439,440,443],"h2",{"id":438},"schema-drmprovider","Schema (",[427,441,442],{},"DrmProvider",")",[445,446,447,463],"table",{},[448,449,450],"thead",{},[451,452,453,457,460],"tr",{},[454,455,456],"th",{},"UI label",[454,458,459],{},"Field",[454,461,462],{},"Notes",[464,465,466,482,510,525,540,559,586,601,629,648,663],"tbody",{},[451,467,468,474,479],{},[469,470,471],"td",{},[418,472,473],{},"Name",[469,475,476],{},[427,477,478],{},"name",[469,480,481],{},"Display name (≤ 100 characters).",[451,483,484,489,493],{},[469,485,486],{},[418,487,488],{},"Provider type",[469,490,491],{},[427,492,429],{},[469,494,495,496,499,500,503,504,499,507,509],{},"Brand identifier from the server-side catalogue (today ",[427,497,498],{},"AXINOM",", ",[427,501,502],{},"EZDRM","). Drives the credential field set the form requires. The UI shows the values with human casing (",[427,505,506],{},"Axinom",[427,508,502],{},"); the spec and API expect uppercase.",[451,511,512,517,522],{},[469,513,514],{},[418,515,516],{},"SPEKE URL",[469,518,519],{},[427,520,521],{},"speke_url",[469,523,524],{},"Primary SPEKE endpoint.",[451,526,527,532,537],{},[469,528,529],{},[418,530,531],{},"SPEKE URL backup",[469,533,534],{},[427,535,536],{},"speke_url_backup",[469,538,539],{},"Optional fallback SPEKE endpoint.",[451,541,542,547,552],{},[469,543,544],{},[418,545,546],{},"Tenant ID",[469,548,549],{},[427,550,551],{},"tenant_id",[469,553,554,555,558],{},"Required when the brand declares ",[427,556,557],{},"requires_tenant_id = true"," (for example AXINOM).",[451,560,561,566,571],{},[469,562,563],{},[418,564,565],{},"Credentials",[469,567,568],{},[427,569,570],{},"credentials",[469,572,573,574,577,578,581,582,585],{},"Provider-type-specific envelope. Write-only — ",[427,575,576],{},"GET"," returns the sentinel ",[427,579,580],{},"••••••••"," for stored values. Resending the envelope unchanged on ",[427,583,584],{},"PUT"," preserves the stored blob.",[451,587,588,593,598],{},[469,589,590],{},[418,591,592],{},"Enabled",[469,594,595],{},[427,596,597],{},"enabled",[469,599,600],{},"Whether the provider is selectable by Destinations.",[451,602,603,608,613],{},[469,604,605],{},[418,606,607],{},"Validation status",[469,609,610],{},[427,611,612],{},"validation_status",[469,614,615,616,499,619,499,622,625,626,628],{},"One of ",[427,617,618],{},"UNKNOWN",[427,620,621],{},"VALID",[427,623,624],{},"INVALID",". Reset to ",[427,627,618],{}," after any change that affects connectivity.",[451,630,631,636,641],{},[469,632,633],{},[418,634,635],{},"Last validation",[469,637,638],{},[427,639,640],{},"validation_date",[469,642,643,644,647],{},"Timestamp of the last ",[427,645,646],{},"validateDrmProvider"," round trip.",[451,649,650,655,660],{},[469,651,652],{},[418,653,654],{},"Validation error",[469,656,657],{},[427,658,659],{},"validation_error",[469,661,662],{},"Sanitised error message from the last failed validation.",[451,664,665,670,675],{},[469,666,667],{},[418,668,669],{},"Supported systems",[469,671,672],{},[427,673,674],{},"supported_systems",[469,676,677,678,499,680,499,682,684,685,688],{},"Array exposed by the brand. A subset of ",[427,679,217],{},[427,681,221],{},[427,683,225],{},". The OpenAPI spec emits the values in uppercase (",[427,686,687],{},"WIDEVINE \u002F PLAYREADY \u002F FAIRPLAY","); this document and the UI use TitleCase for readability.",[436,690,692],{"id":691},"operations","Operations",[445,694,695,708],{},[448,696,697],{},[451,698,699,702,705],{},[454,700,701],{},"Action",[454,703,704],{},"Method + path",[454,706,707],{},"operationId",[464,709,710,725,740,755,770,785],{},[451,711,712,715,720],{},[469,713,714],{},"List providers",[469,716,717],{},[427,718,719],{},"GET \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders",[469,721,722],{},[427,723,724],{},"getAllDrmProviders",[451,726,727,730,735],{},[469,728,729],{},"Read a provider",[469,731,732],{},[427,733,734],{},"GET \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}",[469,736,737],{},[427,738,739],{},"getDrmProviderById",[451,741,742,745,750],{},[469,743,744],{},"Register a provider",[469,746,747],{},[427,748,749],{},"POST \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders",[469,751,752],{},[427,753,754],{},"addDrmProvider",[451,756,757,760,765],{},[469,758,759],{},"Update a provider",[469,761,762],{},[427,763,764],{},"PUT \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}",[469,766,767],{},[427,768,769],{},"updateDrmProvider",[451,771,772,775,780],{},[469,773,774],{},"Delete a provider",[469,776,777],{},[427,778,779],{},"DELETE \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}",[469,781,782],{},[427,783,784],{},"deleteDrmProvider",[451,786,787,790,795],{},[469,788,789],{},"Validate a provider",[469,791,792],{},[427,793,794],{},"POST \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}\u002Fvalidate",[469,796,797],{},[427,798,646],{},[414,800,801],{},"Every operation requires the System Administrator role.",[436,803,744],{"id":804},"register-a-provider",[806,807,808,813,820,824,843,847,861,865],"steps",{},[809,810,812],"h3",{"id":811},"open-the-form","Open the form",[414,814,815,816,819],{},"Open ",[427,817,818],{},"Integrations → DRM → Providers → Add provider",".",[809,821,823],{"id":822},"fill-the-fields","Fill the fields",[414,825,826,827,499,829,499,831,833,834,836,837,839,840,842],{},"Set ",[427,828,473],{},[427,830,488],{},[427,832,516],{},", optional ",[427,835,546],{}," and the brand-specific ",[427,838,565],{}," envelope. Keep ",[427,841,592],{}," on for normal operation.",[809,844,846],{"id":845},"save","Save",[414,848,849,850,852,853,856,857,860],{},"Submitting calls ",[427,851,754],{},". The credentials envelope is encrypted on the server (AES-256-CBC, with a key derived via PBKDF2-SHA256) and never returned again; ",[427,854,855],{},"has_credentials"," is set to ",[427,858,859],{},"true"," on the row.",[809,862,864],{"id":863},"validate","Validate",[414,866,867,868,871,872,874,875,877,878,880],{},"Run the ",[869,870,864],"em",{}," action. ",[427,873,646],{}," round-trips the stored credentials against the upstream SPEKE service and updates ",[427,876,612],{},". A failed validation surfaces a sanitised error in ",[427,879,659],{},"; correct the credentials with an update and re-validate.",[436,882,884],{"id":883},"edit-and-delete","Edit and delete",[414,886,887,889,890,892],{},[427,888,769],{}," is a partial update. Resending the credentials envelope with the sentinel ",[427,891,580],{}," values preserves the stored blob; sending any field with a real value re-encrypts the full envelope.",[414,894,895,897,898,901],{},[427,896,784],{}," removes the provider. Destinations that referenced the deleted provider via ",[427,899,900],{},"drm.provider_id"," lose that reference and fail validation at start time until they are pointed at a different provider.",[436,903,905],{"id":904},"attaching-a-provider-to-a-destination","Attaching a provider to a Destination",[414,907,908,909,911,912,914,915,918],{},"Once a provider is registered and ",[427,910,621],{},", attach it on each protected Destination through the ",[427,913,433],{}," block (see ",[916,917,112],"a",{"href":113},"):",[920,921,926],"pre",{"className":922,"code":923,"language":924,"meta":925,"style":925},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"drm\": {\n    \"active\": true,\n    \"provider_id\": \u003Cprovider id>,\n    \"contentid\": \"\u003Ccontent identifier>\",\n    \"systems\": [\"Widevine\", \"PlayReady\"]\n  }\n}\n","json","",[427,927,928,937,955,972,991,1014,1047,1053],{"__ignoreMap":925},[929,930,933],"span",{"class":931,"line":932},"line",1,[929,934,936],{"class":935},"sMK4o","{\n",[929,938,940,943,946,949,952],{"class":931,"line":939},2,[929,941,942],{"class":935},"  \"",[929,944,433],{"class":945},"spNyl",[929,947,948],{"class":935},"\"",[929,950,951],{"class":935},":",[929,953,954],{"class":935}," {\n",[929,956,958,961,965,967,969],{"class":931,"line":957},3,[929,959,960],{"class":935},"    \"",[929,962,964],{"class":963},"sBMFI","active",[929,966,948],{"class":935},[929,968,951],{"class":935},[929,970,971],{"class":935}," true,\n",[929,973,975,977,980,982,984,988],{"class":931,"line":974},4,[929,976,960],{"class":935},[929,978,979],{"class":963},"provider_id",[929,981,948],{"class":935},[929,983,951],{"class":935},[929,985,987],{"class":986},"sTEyZ"," \u003Cprovider id>",[929,989,990],{"class":935},",\n",[929,992,994,996,999,1001,1003,1006,1010,1012],{"class":931,"line":993},5,[929,995,960],{"class":935},[929,997,998],{"class":963},"contentid",[929,1000,948],{"class":935},[929,1002,951],{"class":935},[929,1004,1005],{"class":935}," \"",[929,1007,1009],{"class":1008},"sfazB","\u003Ccontent identifier>",[929,1011,948],{"class":935},[929,1013,990],{"class":935},[929,1015,1017,1019,1022,1024,1026,1029,1031,1033,1035,1038,1040,1042,1044],{"class":931,"line":1016},6,[929,1018,960],{"class":935},[929,1020,1021],{"class":963},"systems",[929,1023,948],{"class":935},[929,1025,951],{"class":935},[929,1027,1028],{"class":935}," [",[929,1030,948],{"class":935},[929,1032,217],{"class":1008},[929,1034,948],{"class":935},[929,1036,1037],{"class":935},",",[929,1039,1005],{"class":935},[929,1041,221],{"class":1008},[929,1043,948],{"class":935},[929,1045,1046],{"class":935},"]\n",[929,1048,1050],{"class":931,"line":1049},7,[929,1051,1052],{"class":935},"  }\n",[929,1054,1056],{"class":931,"line":1055},8,[929,1057,1058],{"class":935},"}\n",[414,1060,1061,1064,1065,1067,1068,1070,1071,1074],{},[427,1062,1063],{},"encryption_mode"," is omitted because the server derives it from ",[427,1066,1021],{}," (no ",[427,1069,225],{}," → ",[427,1072,1073],{},"cenc","). Sending it explicitly is allowed; the server recomputes the value either way.",[920,1076,1077],{"className":922,"code":925,"language":924,"meta":925,"style":925},[427,1078,1079],{"__ignoreMap":925},[929,1080],{"class":931,"line":932},[414,1082,1083],{},"A Destination without DRM configured publishes clear.",[436,1085,1087],{"id":1086},"faq","FAQ",[1089,1090,1092,1093,1095,1096,1098],"collapsible",{"name":1091},"Which provider types are supported today?","The server-side catalogue currently advertises ",[427,1094,498],{}," and ",[427,1097,502],{},". The set is server-driven and additional brands can be added without breaking the API contract.",[1089,1100,1102,1104,1105,1107,1108,1110,1111,819],{"name":1101},"Why does a provider stay in `UNKNOWN` after I create it?",[427,1103,612],{}," is reset to ",[427,1106,618],{}," after any change that affects connectivity (SPEKE URL, tenant id, credentials). Run ",[869,1109,864],{}," to round-trip credentials against the upstream service; a successful call moves the status to ",[427,1112,621],{},[1114,1115,1116],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":925,"searchDepth":939,"depth":939,"links":1118},[1119,1121,1122,1128,1129,1130],{"id":438,"depth":939,"text":1120},"Schema (DrmProvider)",{"id":691,"depth":939,"text":692},{"id":804,"depth":939,"text":744,"children":1123},[1124,1125,1126,1127],{"id":811,"depth":957,"text":812},{"id":822,"depth":957,"text":823},{"id":845,"depth":957,"text":846},{"id":863,"depth":957,"text":864},{"id":883,"depth":939,"text":884},{"id":904,"depth":939,"text":905},{"id":1086,"depth":939,"text":1087},"Register, validate and manage DRM providers in C21 Live Control.","md",null,{},{"icon":232},{"title":229,"description":1131},"oJniHeNjgC_GuAlX6hnPtFWVotI7ZVrAWlZmRtl632E",[1139,1141],{"title":225,"path":226,"stem":227,"description":1140,"icon":146,"children":-1},"Register a FairPlay-capable DRM provider in C21 Live Control and attach it to a Destination.",{"title":234,"path":235,"stem":236,"description":1142,"icon":237,"children":-1},"End-to-end workflow for protecting a Live stream with DRM in C21 Live Control.",1782916494545]