Eluvio O API v1.0.0
Eluvio "O" is an open source node.js application driven by configuration and workflow specification stored in Content Fabric objects.
It is primarily used for media ingest and provisioning workflows.
Configuration URLs:
- Eluvio O (dev instance): https://dev.o.svc.eluv.io/
Authentication
- HTTP Authentication, scheme: key API key tied to a user address
Job Management
Submit workflow jobs and monitor status.
Each workflow is identified by the 'workflow_id' (for example 'create_master', 'create_mez'). When submitting a new job you simply supply the 'worklow_id' to execute and the definition of the job (JSON), which is specific to each workflow. Optionally submit a job reference ID (if not specified, one will be created for the job). The job reference ID is used to retrieve execution status.
Submit Job
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/queue_job/:workflow_id \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/queue_job/:workflow_id HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/queue_job/:workflow_id',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"queue_id": "string",
"job_parameters": {},
"job_reference": "string"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/queue_job/:workflow_id',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/queue_job/:workflow_id',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/queue_job/:workflow_id', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/queue_job/:workflow_id");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/queue_job/:workflow_id", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/queue_job/:workflow_id', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /queue_job/:workflow_id
Queue the execution of a workflow job
Body parameter
{
"queue_id": "string",
"job_parameters": {},
"job_reference": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | GenericJobSpec | false | Job spec |
Example responses
200 Response
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | job reference | JobSubmissionResult |
Job Status
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/job_status \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/job_status HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/job_status',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"job_reference": "string"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/job_status',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/job_status',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/job_status', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/job_status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/job_status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/job_status', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /job_status
Poll for job execution status
Body parameter
{
"job_reference": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | JobStatus | false | Job reference |
Example responses
200 Response
{
"job_id": "j_1676069348573_add_captions_0x008ce485e6d792baec3dfe777fbf89d72761f7b30d4741ef6a62e3e3df6a7ed3",
"status": "complete",
"status_code": 100,
"status_details": {
"steps": {
"add_captions_file": {
"start_time": "2023-02-10T22:49:20.346Z",
"end_time": "2023-02-10T22:49:34.288Z",
"status_code": 100,
"retries": 0,
"outputs": {
"caption_key": "captions-french-parisian-convertedvtt",
"mezzanine_object_version_hash": "hq__8TJ9jmTgwQJhLv9zc5d7d1237uthvuwMh1gsYoLgAhpJ3sGxWrPMz1EjFfSAT6fNAwdrjTQydQ"
}
},
"convert_to_vtt": {
"start_time": "2023-02-10T22:49:19.073Z",
"end_time": "2023-02-10T22:49:20.255Z",
"status_code": 100,
"retries": 0,
"outputs": {
"anomalies": [],
"force_offset": true,
"force_framerate": true,
"offset_sec": 0,
"file_path": "/tmp/french_parisian_converted.vtt"
}
},
"download_captions_file_from_fabric": {
"start_time": "2023-02-10T22:49:15.247Z",
"end_time": "2023-02-10T22:49:18.935Z",
"status_code": 100,
"retries": 0,
"outputs": {
"target_files_path": [
"/tmp/french_parisian.itt"
]
}
},
"report_status": {
"start_time": "2023-02-10T22:49:45.488Z",
"end_time": "2023-02-10T22:49:51.566Z",
"status_code": 100,
"retries": 0,
"outputs": {
"result": "{\"message\":\"success\"}",
"text": "{\n \"message\":\"Adding French (Parisian) captions to a great movie\",\n \"ip_title_id\":\"1232125\",\n \"type\":\"feature\",\n \"job_id\":\"j_1676069348573_add_captions_0x008ce485e6d792baec3dfe777fbf89d72761f7b30d4741ef6a62e3e3df6a7ed3\",\n \"mezzanine_object_id\":\"iq__4Wu3FcZGjMBE345ux2Jn8x5r2mpA\",\n \"production_master_object_id\":\"iq__343bzafn6789k9MDYim6QaxnFQej\",\n \"status\":\"complete\"\n}",
"blocks": null
}
},
"test_if_retrieval_needed": {
"start_time": "2023-02-10T22:49:13.973Z",
"end_time": "2023-02-10T22:49:14.799Z",
"status_code": 99,
"retries": 0,
"outputs": {
"result": false
}
},
"update_kit_status": {
"start_time": "2023-02-10T22:49:35.440Z",
"end_time": "2023-02-10T22:49:44.364Z",
"status_code": 100,
"retries": 0,
"outputs": {
"production_master_version_hash": "hq__8iSBNHSWwafE21VvZy3456jccM8pjPvE7rB8iAkcNBXVRfqKBSAcuMVF2YqPn2reDr6s7RUwkT"
}
}
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Workflow status including specifics for each 'step' | Inline |
404 | Not Found | none | None |
Response Schema
Media Ingest
Workflow components for media ingest.
Media ingest typically consists of the creation of the 'production master' object, which specifies
media sources (files) and the playable 'variants' (combinations of media tracks to play - video, audio, subtitles),
and creation of the 'playable mezzanine', the content objects that will provide all playable formats (DASH, HLS, etc.)
Media source files can be uploaded to the content fabric 'production master' object or specified as "S3" URLs (in which case
the source files will not be copied into the content fabric - will just be used for the creation of the mezzanines).
When using regular files uploaded to the contenet fabric, the 'production master' content object must be created and the files must
be uploaded prior to invoking the workflow, and the files.
Quick reference on files upload: https://hub.doc.eluv.io/basics/files/
Create Mezzanine
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/queue_job/create_mezz \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/queue_job/create_mezz HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/queue_job/create_mezz',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"queue_id": "string",
"job_parameters": {
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/queue_job/create_mezz',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/queue_job/create_mezz',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/queue_job/create_mezz', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/queue_job/create_mezz");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/queue_job/create_mezz", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/queue_job/create_mezz', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /queue_job/create_mezz
Create and set up a 'playable mezzanine' object from media sources. This workflow can create either one single 'playable mezzanine' content object, or separate 'production master' and 'playable mezzanine' objects.
Prerequisites:
- if media sources are files uploaded to the content fabric, create a content object first and upload the media file(s) first, then specify the object ID in the job parameters
- if media sources are stored in AWS S3 or compatible storage, the job will create the 'production master'
Body parameter
{
"queue_id": "string",
"job_parameters": {
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | CreateMez | false | Mezzanine spec |
Example responses
200 Response
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | job submission result | JobSubmissionResult |
Create Master
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/queue_job/create_master \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/queue_job/create_master HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/queue_job/create_master',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "create_master",
"parameters": {
"sources": [
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_video_with_dual_en_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_dual_fr_ca_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_dual_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_la_en_pt_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sample_title_la_video_with_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a"
],
"masters_library": "ilib6xxBeDlh9yNZqKHpwXtmej8kS9i",
"variants": {
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/queue_job/create_master',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/queue_job/create_master',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/queue_job/create_master', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/queue_job/create_master");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/queue_job/create_master", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/queue_job/create_master', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /queue_job/create_master
Create and set up a 'production master' object
Body parameter
{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "create_master",
"parameters": {
"sources": [
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_video_with_dual_en_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_dual_fr_ca_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_dual_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_la_en_pt_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sample_title_la_video_with_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a"
],
"masters_library": "ilib6xxBeDlh9yNZqKHpwXtmej8kS9i",
"variants": {
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | CreateMaster | false | Production master spec |
Example responses
200 Response
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | job reference | JobSubmissionResult |
Create Mezzanine From Master
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"queue_id": "string",
"job_parameters": {
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/queue_job/create_mezz_from_master', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /queue_job/create_mezz_from_master
Create and set up a 'playable mezzanine' object based on a previously created 'production master'
Body parameter
{
"queue_id": "string",
"job_parameters": {
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | CreateMez | false | Mezzanine spec |
Example responses
200 Response
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | job submission result | JobSubmissionResult |
Add Subtitle
Code samples
# You can also use wget
curl -X POST https://dev.o.svc.eluv.io/queue_job/add_subtitle \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST https://dev.o.svc.eluv.io/queue_job/add_subtitle HTTP/1.1
Host: dev.o.svc.eluv.io
Content-Type: application/json
Accept: application/json
var headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
$.ajax({
url: 'https://dev.o.svc.eluv.io/queue_job/add_subtitle',
method: 'post',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "add_caption",
"parameters": {
"source": "https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_en_us.vtt?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"mezzanine_object_id": "iq__9jBeDlh9yNZqKHpwXtmej8kSi6",
"label": "French (Canadian)(forced)",
"language": "fr-ca",
"forced": true,
"offset_sec": -3600,
"dropframe": true,
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://dev.o.svc.eluv.io/queue_job/add_subtitle',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://dev.o.svc.eluv.io/queue_job/add_subtitle',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://dev.o.svc.eluv.io/queue_job/add_subtitle', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://dev.o.svc.eluv.io/queue_job/add_subtitle");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://dev.o.svc.eluv.io/queue_job/add_subtitle", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
'application/json',
'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://dev.o.svc.eluv.io/queue_job/add_subtitle', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
POST /queue_job/add_subtitle
Add a subtitle to a 'production master' and 'playable mezzanine'
Body parameter
{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "add_caption",
"parameters": {
"source": "https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_en_us.vtt?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"mezzanine_object_id": "iq__9jBeDlh9yNZqKHpwXtmej8kSi6",
"label": "French (Canadian)(forced)",
"language": "fr-ca",
"forced": true,
"offset_sec": -3600,
"dropframe": true,
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AddSubtitle | false | Subtitle spec |
Example responses
200 Response
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | job reference | JobSubmissionResult |
Schemas
CreateMez
{
"queue_id": "string",
"job_parameters": {
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
queue_id | string | true | workflow execution queue identifier |
job_parameters | CreateMezJobParameters | true | none |
CreateMezJobParameters
{
"ip_title_id": "MERDUAL2",
"title": "Meridian",
"masters_type": "iq__21EzEFzCNiZztrraysaHMVnTF3vp",
"asset_type": "primary",
"title_type": "feature",
"mezzanines_lib": "ilib3t4Cf8pdxftVcc4Si35yZxPgN33",
"mezzanines_type": "iq__3uQrMgQae71yBMsdpuQQL6NeQVjq",
"source_object_id": "iq__3QmafNQfXAFd7uxBFSAQb78PFJkA",
"variant": {
"dual_audio": {
"streams": {
"english_stereo": {
"default_for_media_type": true,
"label": "English (stereo)",
"language": "en",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 1
}
],
"type": "audio"
},
"french_stereo": {
"default_for_media_type": false,
"label": "French (stereo)",
"language": "fr",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 2
}
],
"type": "audio"
},
"video": {
"default_for_media_type": true,
"label": "video",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "Meridian-1080p-multilanguage.mp4",
"stream_index": 0
}
],
"type": "video"
}
}
}
},
"config_url": "https://demov3.net955210.contentfabric.io/config",
"slug": "meridian",
"admin_group": "0x586626b981046af729502454b2c866f4d366e0e1",
"info": {
"synopsis": "Meridian is a 2016 film noir thriller film directed by Curtis Clark and written by Clark and James Harmon Brown. The film stars Kevin Kilner, Reid Scott, and Elyse Levesque, and focuses on detectives investigating the disappearances of three men in 1940s Los Angeles. It was released on Netflix and Xiph.org in September 2016.",
"runtime": 12,
"production_companies": [
"Virgin Soil Pictures"
],
"country": "United States",
"language": "English",
"talent": {
"cast": [
{
"name": "Kevin Kilner",
"character_name": "Mac"
},
{
"name": "Reid Scott",
"character_name": "Jake"
}
],
"directed_by": [
"Curtis Clark"
],
"screenplay_by": [
"Justin Haythe"
],
"story_by": [
"Curtis Clark",
"James Harmon Brown"
],
"produced_by": [
"Malcolm Duncan"
],
"music_by": [
"Alex Kovacs"
],
"edited_by": [
"David Sconyers"
]
}
},
"slack_web_hook": "https://hooks.slack.com/services/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"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
source_object_id | string | true | the ID of the object in which the source files were uploaded |
variant | object | false | the variant definition. Must be formatted as {variant_name: variant_definition_structure |
mezzanines_lib | string | false | the ID of the library in which to find exesiting mezzanine or create one |
mezzanines_type | string | true | the content type to use when creating a new mezzanine object |
playout_formats | array | false | the list of playout format to be supported by the default offering |
drm_optional | boolean | false | Indicates if set to true that clear formats are allowed in the default offering |
abr_profile | object | false | Forces the definition of the ABR ladder instead of using a dyamically generated one |
config_url | string | false | the config URL to use for the workflow - to be used if the goal is to run the workflow on a specific node or on a different environment |
private_key | password | false | if provided the key will be used for the fabric access instead of using the fabric user of the engine |
asset_type | string | false | indicates whether the asset is primary or is a component to be added to a primary asset (like a clip or a trailer) |
title_type | string | false | indicates whether the title is an feature, episode or other relevant type |
title | string | false | the title for the asset |
display_title | string | false | If provided, indicates how the title should be display |
ip_title_id | string | false | A unique ID for that asset - typically a catalogue idea of some sort |
slug | string | false | a URL safe version of the title or ip-title-id also meant to be unique |
info | object | false | a data structure with metadata about the asset (synopsis, cast, runtime, copyrights, ...) |
admin_group | string | false | If provided, admin rights will be granted for the generated mezzanine to the specified group |
masters_type | string | false | If the source object was not created using a ABR master compatible content type, a content type should be provided to convert the source object into a master object |
slack_web_hook | string | false | If provided an notification will be sent on a slack channel upon workflow completion |
JobSubmissionResult
{
"queue_id": "low_priority",
"job_reference": "job_1676685930525",
"queued": true
}
Properties
None
GenericJobSpec
{
"queue_id": "string",
"job_parameters": {},
"job_reference": "string"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
queue_id | string | true | none |
job_parameters | object | true | none |
job_reference | string | false | none |
JobStatus
{
"job_reference": "string"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
job_reference | string | true | none |
CreateMaster
{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "create_master",
"parameters": {
"sources": [
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_video_with_dual_en_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_dual_fr_ca_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_dual_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_la_en_pt_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sample_title_la_video_with_es_419_audio.mov?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a"
],
"masters_library": "ilib6xxBeDlh9yNZqKHpwXtmej8kS9i",
"variants": {
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}
}
Properties
None
AddSubtitle
{
"queue_id": "low_priority",
"job_reference": "optional client generated job reference",
"job_description": {
"workflow_object_id": "add_caption",
"parameters": {
"source": "https://s3.us-west-2.amazonaws.com/library_prod/mezzanines/na/sampletitle_na_en_us.vtt?X-Amz-Credential=AKIAV0213%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230213T201928Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=1a63c4053d2aa01a",
"mezzanine_object_id": "iq__9jBeDlh9yNZqKHpwXtmej8kSi6",
"label": "French (Canadian)(forced)",
"language": "fr-ca",
"forced": true,
"offset_sec": -3600,
"dropframe": true,
"north_america": {
"streams": {
"english_5_1": {
"default_for_media_type": true,
"label": "English(5.1)",
"language": "en",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 4
}
]
},
"english_stereo": {
"default_for_media_type": true,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2CHANNELS_1STEREO",
"sources": [
{
"channel_index": 1,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
},
{
"channel_index": 0,
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 7
}
]
},
"french_canadian_5_1": {
"default_for_media_type": false,
"label": "French (Canadian)(5.1)",
"language": "fr-ca",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 5
}
]
},
"french_canadian_stereo": {
"default_for_media_type": false,
"label": "French (Canadian)(Stereo)",
"language": "fr-ca",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_dual_fr_ca_audio.mov",
"stream_index": 7
}
]
},
"spanish_latin_am_5_1": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(5.1)",
"language": "es-419",
"mapping_info": "6MONO_1SURROUND",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 4
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 5
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 3
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 2
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 6
},
{
"files_api_path": "sampletitle_na_dual_es_419_audio.mov",
"stream_index": 7
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sampletitle_na_video_with_dual_en_audio.mov",
"stream_index": 0
}
]
}
}
},
"latin_america": {
"streams": {
"english_stereo": {
"default_for_media_type": false,
"label": "English(Stereo)",
"language": "en",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 0
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 1
}
]
},
"spanish_latin_am_stereo": {
"default_for_media_type": false,
"label": "Spanish (Latin Am)(Stereo)",
"language": "es-419",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 1
},
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 2
}
]
},
"portuguese_brazil_stereo": {
"default_for_media_type": true,
"label": "Portuguese (Brazil)(Stereo)",
"language": "pt-br",
"mapping_info": "2MONO_1STEREO",
"sources": [
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 2
},
{
"files_api_path": "sampletitle_la_en_pt_audio.mov",
"stream_index": 3
}
]
},
"video": {
"default_for_media_type": false,
"label": "",
"language": "",
"mapping_info": "",
"sources": [
{
"files_api_path": "sample_title_la_video_with_es_419_audio.mov",
"stream_index": 0
}
]
}
}
}
}
}
}
Properties
None