> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://mediakind.ferndocs.com/harmonic/api/vos/scrambling-drm/create-drm-fixed-resource/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server. # Create DRM Fixed Resource POST https://device.example.com:443/cluster1/vos-api/scrambling/v1/drm/fixedResources Content-Type: application/json Create a fixed DRM resource for OTT encryption. Reference: https://mediakind.ferndocs.com/harmonic/api/vos/scrambling-drm/create-drm-fixed-resource ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Body (application/json) This endpoint expects a com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedResource. - `dashResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource, optional) - `hlsResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource, optional) - `id` (string, optional) — The id of DrmFixedResource - `packagingType` (enum, optional) — The packagingType of DrmFixedResource - Allowed values: `e_HLS`, `e_DASH`, `e_SS`, `e_SS_PLAYREADY` - `ssPlayReadyResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource, optional) - `ssResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource, optional) ## Response ### 200 OK - `dashResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource, optional) - `hlsResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource, optional) - `id` (string, optional) — The id of DrmFixedResource - `packagingType` (enum, optional) — The packagingType of DrmFixedResource - Allowed values: `e_HLS`, `e_DASH`, `e_SS`, `e_SS_PLAYREADY` - `ssPlayReadyResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource, optional) - `ssResource` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource, optional) ### 201 Created ## Errors ### 401 Unauthorized Error Unauthorized - `any` ### 403 Forbidden Error Forbidden - `any` ### 404 Not Found Error Not Found - `any` ## Types ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource - `dashDrm` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource_DashDrm, optional) - `dashDrms` (list of com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource_DashDrm, optional) — The dashDrm list of DrmFixedDashResource - `fixedIv` (string, optional) — The fixedIv of DrmFixedDashResource - `fixedKey` (string, optional) — The fixedKey of DrmFixedDashResource - `fixedKeyId` (string, optional) — The fixedKeyId of DrmFixedDashResource - `resourceId` (string, optional) — The resourceId of DrmFixedDashResource ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource - `fixedIv` (string, optional) — The fixedIv of HlsDrm - `fixedKey` (string, optional) — The fixedIv of HlsDrm - `fixedKeyId` (string, optional) — The fixedKeyId of HlsDrm - `hlsDrm` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource_HlsDrm, optional) - `hlsEncryptionMode` (string, optional) — The hlsEncryptionMode of HlsDrm - `keyUrl` (string, optional) — The keyUrl of HlsDrm - `playReadyHeader` (com.harmonicinc.vos.app.scrambling.drm.model.PlayReadyHeaderObject, optional) - `playReadyHeaderObject` (string, optional) — The playReadyHeaderObject of HlsDrm - `resourceId` (string, optional) — The resourceId of HlsDrm ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource - `leafLicense` (list of com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource_LeafLicense, optional) — The leafLicense of DrmFixedSsPlayReadyResource - `resourceId` (string, optional) — The resourceId of DrmFixedSsPlayReadyResource - `rootLicense` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource_RootLicense, optional) ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource - `fixedIv` (string, optional) — The fixedIv of DrmFixedSsResource - `fixedKey` (string, optional) — The fixedKey of DrmFixedSsResource - `fixedKeyId` (string, optional) — The fixedKeyId of DrmFixedSsResource - `resourceId` (string, optional) — The resourceId of DrmFixedSsResource - `ssDrm` (com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource_SsDrm, optional) - `ssDrms` (list of com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource_SsDrm, optional) — The SsDrms list of DrmFixedSsResource ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedDashResource_DashDrm - `clearkeyHeader` (com.harmonicinc.vos.app.scrambling.drm.model.ClearkeyHeader, optional) - `manifestHeader` (string, optional) — The manifestHeader of DrmFixedDashResource - `name` (string, optional) — The name of DrmFixedDashResource - `playReadyHeaderObject` (com.harmonicinc.vos.app.scrambling.drm.model.PlayReadyHeaderObject, optional) - `psshBox` (string, optional) — The psshBox of DrmFixedDashResource - `systemId` (string, optional) — The systemId of DrmFixedDashResource - `widevineCencHeader` (com.harmonicinc.vos.app.scrambling.drm.model.WidevineCencHeader, optional) ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource_HlsDrm - `indexPlaylistTags` (list of string, optional) — The indexPlaylistTags of HlsDrm - `keyAttributes` (list of com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource_KeyAttribute, optional) — The keyAttributes of HlsDrm - `name` (string, optional) — The name of HlsDrm - `playReadyHeaderObject` (com.harmonicinc.vos.app.scrambling.drm.model.PlayReadyHeaderObject, optional) - `systemId` (string, optional) — The systemId of HlsDrm - `variantPlaylistTags` (list of string, optional) — The variantPlaylistTags of HlsDrm ### com.harmonicinc.vos.app.scrambling.drm.model.PlayReadyHeaderObject - `customAttributes` (string, optional) — Arbitrary XML: CUSTOMATTRIBUTES - `dsId` (string, optional) — Service ID for the domain service: DS_ID - `includeChecksum` (boolean, optional) — To include checksum or not in PlayReady Header Object: CHECKSUM - `kid` (string, optional) — Key ID in Base64 representation: KID - `laUrl` (string, optional) — URL for the license acquisition Web service: LA_URL - `luiUrl` (string, optional) — URL for a non-silent license acquisition Web page: LUI_URL ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource_LeafLicense - `fixedKey` (string, optional) — The fixedKey of LeafLicense - `fixedKeyId` (string, optional) — The fixedKeyId of LeafLicense - `psshBox` (string, optional) — The psshBox of LeafLicense - `systemId` (string, optional) — The systemId of LeafLicense ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsPlayReadyResource_RootLicense - `systemData` (string, optional) — The systemData of RootLicense - `systemId` (string, optional) — The systemId of RootLicense ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedSsResource_SsDrm - `manifestHeader` (string, optional) — The manifestHeader of DrmFixedSsResource - `name` (string, optional) — The name of DrmFixedSsResource - `playReadyHeaderObject` (com.harmonicinc.vos.app.scrambling.drm.model.PlayReadyHeaderObject, optional) - `psshBox` (string, optional) — The psshBox of DrmFixedSsResource - `systemId` (string, optional) — The systemId of DrmFixedSsResource ### com.harmonicinc.vos.app.scrambling.drm.model.ClearkeyHeader - `laUrl` (string, optional) — URL for the key acquisition web service ### com.harmonicinc.vos.app.scrambling.drm.model.WidevineCencHeader - `algorithm` (enum, optional) — Encryption Algorithm - Allowed values: `UNENCRYPTED`, `AESCTR` - `contentId` (string, optional) — A content identifier which is specified by content provider - `keyId` (string, optional) — Key ID - `policy` (string, optional) — The name of a registered policy to be used for this asset - `provider` (string, optional) — Content provider name - `trackType` (string, optional) — Track type which is used to differentiate content keys used by an asset ### com.harmonicinc.vos.app.scrambling.drm.model.DrmFixedHlsResource_KeyAttribute - `attributeName` (string, optional) — The attributeName of DrmFixedHlsResource - `attributeValue` (string, optional) — The attributeValue of DrmFixedHlsResource ## Examples ### Example 1 **Request** ```json {} ``` **Response** ```json { "dashResource": { "dashDrm": { "clearkeyHeader": { "laUrl": "string" }, "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string", "widevineCencHeader": { "algorithm": "UNENCRYPTED", "contentId": "string", "keyId": "string", "policy": "string", "provider": "string", "trackType": "string" } }, "dashDrms": [ { "clearkeyHeader": { "laUrl": "string" }, "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string", "widevineCencHeader": { "algorithm": "UNENCRYPTED", "contentId": "string", "keyId": "string", "policy": "string", "provider": "string", "trackType": "string" } } ], "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "resourceId": "string" }, "hlsResource": { "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "hlsDrm": { "indexPlaylistTags": [ "string" ], "keyAttributes": [ { "attributeName": "string", "attributeValue": "string" } ], "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "systemId": "string", "variantPlaylistTags": [ "string" ] }, "hlsEncryptionMode": "string", "keyUrl": "string", "playReadyHeader": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "playReadyHeaderObject": "string", "resourceId": "string" }, "id": "string", "packagingType": "e_HLS", "ssPlayReadyResource": { "leafLicense": [ { "fixedKey": "string", "fixedKeyId": "string", "psshBox": "string", "systemId": "string" } ], "resourceId": "string", "rootLicense": { "systemData": "string", "systemId": "string" } }, "ssResource": { "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "resourceId": "string", "ssDrm": { "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string" }, "ssDrms": [ { "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string" } ] } } ``` **SDK Code** ```python import requests url = "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Example 2 **Request** ```json {} ``` **Response** ```json { "dashResource": { "dashDrm": { "clearkeyHeader": { "laUrl": "string" }, "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string", "widevineCencHeader": { "algorithm": "UNENCRYPTED", "contentId": "string", "keyId": "string", "policy": "string", "provider": "string", "trackType": "string" } }, "dashDrms": [ { "clearkeyHeader": { "laUrl": "string" }, "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string", "widevineCencHeader": { "algorithm": "UNENCRYPTED", "contentId": "string", "keyId": "string", "policy": "string", "provider": "string", "trackType": "string" } } ], "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "resourceId": "string" }, "hlsResource": { "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "hlsDrm": { "indexPlaylistTags": [ "string" ], "keyAttributes": [ { "attributeName": "string", "attributeValue": "string" } ], "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "systemId": "string", "variantPlaylistTags": [ "string" ] }, "hlsEncryptionMode": "string", "keyUrl": "string", "playReadyHeader": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "playReadyHeaderObject": "string", "resourceId": "string" }, "id": "string", "packagingType": "e_HLS", "ssPlayReadyResource": { "leafLicense": [ { "fixedKey": "string", "fixedKeyId": "string", "psshBox": "string", "systemId": "string" } ], "resourceId": "string", "rootLicense": { "systemData": "string", "systemId": "string" } }, "ssResource": { "fixedIv": "string", "fixedKey": "string", "fixedKeyId": "string", "resourceId": "string", "ssDrm": { "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string" }, "ssDrms": [ { "manifestHeader": "string", "name": "string", "playReadyHeaderObject": { "customAttributes": "string", "dsId": "string", "includeChecksum": true, "kid": "string", "laUrl": "string", "luiUrl": "string" }, "psshBox": "string", "systemId": "string" } ] } } ``` **SDK Code** ```python import requests url = "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://device.example.com/cluster1/vos-api/scrambling/v1/drm/fixedResources")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```