Synchronize MediaObjects
MediaObjects can be synchronized with Limecraft Flow (or imported) using the synchronization endpoint:
POST /api/production/:productionId/mo
The body of the call consists of a MediaObjectRequest object, or a list of such objects.
In return, the response will include the corresponding clip responses for each of the MediaObjectRequest objects.
Each MediaObjectRequest declares:
-
the desired state of the clip on Limecraft Flow including the base media object properties and the media object annotation properties (
name
,customFields
,clipMetadata
, …) -
a list of media object instances, including tracks and material instances (
mediaObjectInstances
,mediaInfo
, …) -
the
collections
to which the clip should be attached -
the
annotations
of the clip -
options steering the synchronization process (synchronizeOptions)
The response will be a MediaObjectResponse, or a list of such objects.
During synchronization, Limecraft Flow will attempt to match each object in the MediaObjectRequest tree with an existing object in the database and put the object in the desired state.
There are two phases in handling a clip synchronization request:
-
Matching
-
Updating
Those two steps are applied to each object defined in the MediaObjectRequest.
Matching
Clips itself are matched by using the resolveMethod
property set at the root level of the MediaObjectRequest.
At the time of writing, CRITERIA
is the only supported value for resolveMethod
.
When selecting the CRITERIA resolve method, the matching criteria are specified in a synchronizeOptions
object. Learn more about synchronizeOptions
here.
The below example will use CRITERIA to match on the MediaObject name:
[
{
name: 'synctest01.jpg',
type: 'IMAGE',
resolveMethod: 'CRITERIA',
synchronizeOptions: {
clip: {
options: {
failOnMultipleMatches: true,
},
matchingCriteria: [
{
properties: ['name'],
}
]
}
}
},
{
name: 'synctest02.jpg',
type: 'IMAGE',
resolveMethod: 'CRITERIA',
synchronizeOptions: {
...
}
}
]
Given matching criteria defined in the synchronization options, Limecraft Flow will look for the object at hand in the database.
The matching criteria object defines how and on which properties the object will be matched.
The list of criteria is iterated and for each matching object a matching score is attached.
The object with the highest matching score is selected for updating.
Updating
When no match is found, a new clip or collection is created.
When a match is found, the existing entry is updated to correspond with the desired state described in the MediaObjectRequest.
return style
The return objects can be controlled using the returnStyle
query parameter:
-
returnStyle=included
— The return object will be in a tree-like structure, closely representing the data model structure. -
returnStyle=legacy
— The return object will be a flat list of MediaObjectResponse. If only one MediaObjectRequest was passed, the response will not be a list, but a single MediaObjectResponse object.
The default value is legacy
.
Examples
Simple name-based synchronize
When this is the body of the POST
[
{
name: 'synctest20.jpg',
type: 'IMAGE',
customFields: {},
resolveMethod: 'CRITERIA',
synchronizeOptions: {
clip: {
options: {
failOnMultipleMatches: true,
},
matchingCriteria: [
{
properties: ['name'],
}
]
}
}
},
{
name: 'synctest21.jpg',
type: 'IMAGE',
customFields: {},
resolveMethod: 'CRITERIA',
synchronizeOptions: {
clip: {
options: {
failOnMultipleMatches: true,
},
matchingCriteria: [
{
properties: ['name'],
}
]
}
}
}
]
The response could look the snippet shown below (which is shortened for readability). The synctest20.jpg
already existed in the example, the synctest21.jpg
did not. This can be seen in the syncReport.mediaObjectResolve.newMediaObject
values.
[
{
"createdObjects": [
{
"annotations": null,
"id": 579943,
"mediaObjectInstances": null,
"name": "synctest20.jpg",
"objectType": "MediaObject",
"tracks": null,
"type": "IMAGE",
"workflowId": "edf4f45f-7743-4092-9044-90219f8b748c",
...
},
{
"description": "this is a description",
"funnel": "MediaObjectAnnotation",
"id": 1023789,
"mediaObjectId": 579943,
"objectType": "MediaObjectAnnotation",
...
}
],
"id": 579943,
"isNew": false,
"mediaObjectAnnotation": {
"description": "this is a description",
"funnel": "MediaObjectAnnotation",
"id": 1023789,
...
},
"mediaObjectAnnotationId": 1023789,
"mediaObjectId": 579943,
"name": "synctest20.jpg",
"objectType": "MediaObject",
"syncReport": {
"annotationResolve": [],
"collectionResolve": [],
"createdComponents": [],
"materialInstanceResolve": [],
"mediaObjectInstanceResolve": [],
"mediaObjectResolve": {
"indexUsed": true,
"newMediaObject": false,
"noMatch": false,
"noMediaInfoGiven": false
},
"trackResolve": []
},
"workflowId": "edf4f45f-7743-4092-9044-90219f8b748c",
...
},
{
"createdObjects": [
{
"annotations": [],
"id": 579962,
"mediaObjectInstances": [],
"name": "synctest21.jpg",
"objectType": "MediaObject",
"tracks": [],
"type": "IMAGE",
"workflowId": "b696fff7-1b48-417c-81c3-fc39895ec318",
...
},
{
"funnel": "MediaObjectAnnotation",
"id": 1023858,
"mediaObjectId": 579962,
"objectType": "MediaObjectAnnotation",
...
}
],
"creatorId": 3,
"duration": 0,
"durationSeconds": 0,
"growing": false,
"id": 579962,
"isNew": true,
"keyFrame": 0,
"lastUpdated": 1700750723449,
"mediaObjectAnnotation": {
"funnel": "MediaObjectAnnotation",
"id": 1023858,
"mediaObjectId": 579962,
"objectType": "MediaObjectAnnotation",
...
},
"mediaObjectAnnotationId": 1023858,
"mediaObjectId": 579962,
"name": "synctest21.jpg",
"objectType": "MediaObject",
"syncReport": {
"annotationResolve": [],
"collectionResolve": [],
"createdComponents": [],
"materialInstanceResolve": [],
"mediaObjectInstanceResolve": [],
"mediaObjectResolve": {
"indexUsed": true,
"newMediaObject": true,
"noMatch": false,
"noMediaInfoGiven": false
},
"trackResolve": []
},
"tracks": [],
"type": "IMAGE",
"workflowId": "b696fff7-1b48-417c-81c3-fc39895ec318",
...
}
]
Synchronize and upload a particular version
Now let’s look at a more advanced scenario. Now, we set up the low-level clip properties ourselves. This assumes some kind of "media probing" happened locally first, to be able to set the mediaInfo
properties.
Synchronize call to create the MediaObject, MediaObjectInstance, MaterialInstance
In the example below, we set up RAW version of the MediaObject provided, with one MaterialInstance
, and two, separate, tracks — AUDIO and VIDEO.
{
"resolveMethod": "CRITERIA",
"synchronizeOptions": {
"clip": {
"options": {
"failOnMultipleMatches": true
},
"matchingCriteria": [
{
"properties": [
"name"
]
}
]
}
},
"name": "My super clip",
"type": "VIDEO",
"duration": 110.11,
"sampleRate": {
"drop_frame": false,
"numerator": 25,
"denumerator": 1
},
"mediaInfo": {
"mimeType": "video/mp4",
"tracks": [
{
"type": "VIDEO",
"width": 1280,
"height": 720,
"fps": {
"numerator": 25,
"denumerator": 1
},
"duration": 110.11,
"codingFormat": "h264",
"kBitRate": 1901.94,
"subsampling": "4:2:0",
"size": 184915,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_1"
},
{
"type": "AUDIO",
"duration": 110,
"codingFormat": "aac",
"kBitRate": 191.238,
"samplingFrequency": 44100,
"channels": 2,
"index": 1,
"number": 1,
"name": "1439278785225_df5ff499-fb7d-4311-9046-fdbd02183e7f",
"segmentDuration": -1,
"size": 184915,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_2"
}
],
"length": 184915,
"timecode": 0,
"duration": 110.11,
"frames": 2752
},
"mediaObjectInstances": [
{
"type": "RAW",
"duration": 110.11,
"size": 123456,
"mediaInfo": {
"mimeType": "video/mp4",
"frames": 2752,
"length": 184915,
"timecode": 0,
"duration": 110.11,
"tracks": [
{
"type": "VIDEO",
"width": 1280,
"height": 720,
"fps": {
"numerator": 25,
"denumerator": 1
},
"duration": 110.11,
"codingFormat": "h264",
"kBitRate": 1901.94,
"subsampling": "4:2:0",
"size": 123456,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_1"
},
{
"type": "AUDIO",
"duration": 110,
"codingFormat": "aac",
"kBitRate": 191.238,
"samplingFrequency": 44100,
"channels": 2,
"index": 1,
"number": 1,
"name": "1439278785225_df5ff499-fb7d-4311-9046-fdbd02183e7f",
"segmentDuration": -1,
"size": 123456,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_2"
}
]
},
"tracks": [
{
"type": "VIDEO",
"width": 1280,
"height": 720,
"fps": {
"numerator": 25,
"denumerator": 1
},
"duration": 110.11,
"codingFormat": "h264",
"kBitRate": 1901.94,
"subsampling": "4:2:0",
"size": 184915,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_1",
"materials": [
{
"alternateBackupLocation": "/Volumes/Nearline/Production Name/collection1/collection2/test.mp4",
"onAlternateBackup": true,
"size": 123456,
"filename": "test.mp4"
}
]
},
{
"type": "AUDIO",
"duration": 110,
"codingFormat": "aac",
"kBitRate": 191.238,
"samplingFrequency": 44100,
"channels": 2,
"index": 1,
"number": 1,
"name": "1439278785225_df5ff499-fb7d-4311-9046-fdbd02183e7f",
"segmentDuration": -1,
"size": 184915,
"fileName": "1.mp4",
"timecodeOffset": 0,
"tape": "14392787",
"file_index": 0,
"uuid": "track_2",
"materials": [
{
"alternateBackupLocation": "/Volumes/Nearline/Production Name/collection1/collection2/test.mp4",
"onAlternateBackup": true,
"size": 123456,
"filename": "test.mp4"
}
]
}
]
}
]
}
Initiate the upload
Now, we have to explicitly ask the API where we should send the bytes to, for uploading them to the MaterialInstance it created in the previous call. The response of the call contained a materialInstanceId
property, which we need to construct the url to kick off the upload.
POST /production/{prId}/mo/{mediaObjectId}/mai/{materialInstanceId}/upload
This call will prepare the API to receive the upload of the file.
Details
Description
The returned json object will contain a field uploadLocation that is to receive the upload.
Parameters
Path Parameters
Name | Description | Required | Type |
---|---|---|---|
|
ID of the production. |
✔ |
Long |
|
ID of the MediaObject. |
✔ |
Long |
|
ID of the MaterialInstance. |
✔ |
Long |
Body Parameters
Name | Description | Required | Type |
---|---|---|---|
|
✘ |
MaterialInstanceRequest |
MaterialInstanceRequest
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
acceptedType |
✘ |
String |
||
accessToken |
✘ |
String |
||
alternateBackupLocation |
✘ |
String |
||
alternateBackupMetadata |
✘ |
Object |
||
alternateBackupType |
✘ |
String |
||
archive1Location |
✘ |
String |
||
archive1Metadata |
✘ |
Object |
||
archive1Type |
✘ |
String |
||
archive2Location |
✘ |
String |
||
archive2Metadata |
✘ |
Object |
||
archive2Type |
✘ |
String |
||
archive3Location |
✘ |
String |
||
archive3Metadata |
✘ |
Object |
||
archive3Type |
✘ |
String |
||
attachToEdlId |
✘ |
Long |
int64 |
|
backupCompleted |
✘ |
Date |
date-time |
|
backupStarted |
✘ |
Date |
date-time |
|
businessKey |
✘ |
String |
||
content |
✘ |
String |
||
created |
✘ |
Date |
The time when this resource was created |
date-time |
createdBy |
✘ |
String |
The request or process that created this resource |
|
creatorId |
✘ |
Long |
The id of the user who created this resource |
int64 |
deleted |
✘ |
Boolean |
||
deletedTimestamp |
✘ |
Date |
date-time |
|
description |
✘ |
String |
||
duration |
✘ |
Double |
double |
|
enableHDProxy |
✘ |
Boolean |
||
enableProxy |
✘ |
Boolean |
||
enableShot |
✘ |
Boolean |
||
enableSpeaker |
✘ |
Boolean |
||
enableSpeech |
✘ |
Boolean |
||
enableStitch |
✘ |
Boolean |
||
fileName |
✘ |
String |
||
filename |
✘ |
String |
||
fingerprints |
✘ |
Set of string |
||
forceOverwrite |
✘ |
Boolean |
||
growing |
✘ |
Boolean |
||
hash |
✘ |
String |
||
id |
✔ |
Long |
The id of this resource |
int64 |
isCloud |
✘ |
Boolean |
||
isData |
✘ |
Boolean |
||
isProxy |
✘ |
Boolean |
||
lastUpdated |
✘ |
Date |
The time when this resource was last updated |
date-time |
location |
✘ |
String |
||
locationMetadata |
✘ |
Object |
||
markForRemoval |
✘ |
Boolean |
||
materialInstanceId |
✘ |
Long |
int64 |
|
md5 |
✘ |
String |
||
md5Partials |
✘ |
String |
||
md5VerificationCompleted |
✘ |
Date |
date-time |
|
md5VerificationStatus |
✘ |
String |
Enum: NOT_VERIFIED, VERIFIED, REJECTED, |
|
mediaInfo |
✘ |
String |
||
mediaInfoProxy |
✘ |
String |
||
mediaObjectId |
✘ |
Long |
int64 |
|
mediaObjectInstanceId |
✘ |
Long |
int64 |
|
mediaObjectType |
✘ |
String |
Enum: IMAGE, DOCUMENT, PENDING, AUDIO, VIDEO, SNIPPET, PACKAGE, |
|
metadata |
✘ |
Boolean |
||
modifiedBy |
✔ |
String |
The request or process responsible for the last update of this resource |
|
moiType |
✘ |
String |
Enum: RAW, PROXY, EDL, SHOTSTITCH, STITCH, THUMB, THUMB_SHOT, THUMB_SIXTY, WAVEFORM, AUDIO_MONO, AUDIO_SPEECH, VOLDEMORT_XML, ATTACHMENT, HDR_PROXY, MEZZANINE_PROXY, |
|
mxfReport |
✘ |
Boolean |
||
objectType |
✘ |
String |
The data model type or class name of this resource |
|
onAlternateBackup |
✘ |
Boolean |
||
onAlternateBackupTimestamp |
✘ |
Date |
date-time |
|
onArchive1 |
✘ |
Boolean |
||
onArchive1Timestamp |
✘ |
Date |
date-time |
|
onArchive2 |
✘ |
Boolean |
||
onArchive2Timestamp |
✘ |
Date |
date-time |
|
onArchive3 |
✘ |
Boolean |
||
onArchive3Timestamp |
✘ |
Date |
date-time |
|
onBackup |
✘ |
Boolean |
||
onBackupTimestamp |
✘ |
Date |
date-time |
|
onFlow |
✘ |
Boolean |
||
onFlowTimestamp |
✘ |
Date |
date-time |
|
onsite |
✘ |
Boolean |
||
pathOnCard |
✘ |
String |
||
pattern |
✘ |
String |
||
prefix |
✘ |
String |
||
productionId |
✘ |
Long |
int64 |
|
proxyProfile |
✘ |
String |
||
rawPath |
✘ |
String |
||
removeFromQuota |
✘ |
Boolean |
||
screenshot |
✘ |
List of ByteArray |
byte |
|
screenshotMimeType |
✘ |
String |
||
shouldBeOnAlternateBackup |
✘ |
Boolean |
||
shouldBeOnAlternateBackupTimestamp |
✘ |
Date |
date-time |
|
shouldBeOnBackup |
✘ |
Boolean |
||
shouldBeOnBackupTimestamp |
✘ |
Date |
date-time |
|
shouldBeOnFlow |
✘ |
Boolean |
||
shouldBeOnFlowTimestamp |
✘ |
Date |
date-time |
|
size |
✘ |
Long |
int64 |
|
smallHash |
✘ |
String |
||
tags |
✘ |
String |
||
tracks |
✘ |
Set of Track |
||
transferDetails |
✘ |
TransferDetails |
||
uid |
✘ |
String |
||
uploading |
✘ |
Boolean |
||
url |
✘ |
String |
||
version |
✔ |
Long |
The version of this resource, used for Optimistic Locking |
int64 |
volumeLocations |
✘ |
List of VolumeLocation |
||
zone |
✘ |
String |
Return Type
MaterialInstance
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
alternateBackupLocation |
✘ |
String |
||
alternateBackupMetadata |
✘ |
Object |
||
alternateBackupType |
✘ |
String |
||
archive1Location |
✘ |
String |
||
archive1Metadata |
✘ |
Object |
||
archive1Type |
✘ |
String |
||
archive2Location |
✘ |
String |
||
archive2Metadata |
✘ |
Object |
||
archive2Type |
✘ |
String |
||
archive3Location |
✘ |
String |
||
archive3Metadata |
✘ |
Object |
||
archive3Type |
✘ |
String |
||
backupCompleted |
✘ |
Date |
date-time |
|
backupStarted |
✘ |
Date |
date-time |
|
businessKey |
✘ |
String |
||
created |
✘ |
Date |
The time when this resource was created |
date-time |
createdBy |
✘ |
String |
The request or process that created this resource |
|
creatorId |
✘ |
Long |
The id of the user who created this resource |
int64 |
deleted |
✘ |
Boolean |
||
deletedTimestamp |
✘ |
Date |
date-time |
|
filename |
✘ |
String |
||
fingerprints |
✘ |
Set of string |
||
growing |
✘ |
Boolean |
||
id |
✔ |
Long |
The id of this resource |
int64 |
lastUpdated |
✘ |
Date |
The time when this resource was last updated |
date-time |
location |
✘ |
String |
||
locationMetadata |
✘ |
Object |
||
md5 |
✘ |
String |
||
md5Partials |
✘ |
String |
||
md5VerificationCompleted |
✘ |
Date |
date-time |
|
md5VerificationStatus |
✘ |
String |
Enum: NOT_VERIFIED, VERIFIED, REJECTED, |
|
mediaObjectId |
✘ |
Long |
int64 |
|
mediaObjectType |
✘ |
String |
Enum: IMAGE, DOCUMENT, PENDING, AUDIO, VIDEO, SNIPPET, PACKAGE, |
|
metadata |
✘ |
Boolean |
||
modifiedBy |
✔ |
String |
The request or process responsible for the last update of this resource |
|
moiType |
✘ |
String |
Enum: RAW, PROXY, EDL, SHOTSTITCH, STITCH, THUMB, THUMB_SHOT, THUMB_SIXTY, WAVEFORM, AUDIO_MONO, AUDIO_SPEECH, VOLDEMORT_XML, ATTACHMENT, HDR_PROXY, MEZZANINE_PROXY, |
|
mxfReport |
✘ |
Boolean |
||
objectType |
✘ |
String |
The data model type or class name of this resource |
|
onAlternateBackup |
✘ |
Boolean |
||
onAlternateBackupTimestamp |
✘ |
Date |
date-time |
|
onArchive1 |
✘ |
Boolean |
||
onArchive1Timestamp |
✘ |
Date |
date-time |
|
onArchive2 |
✘ |
Boolean |
||
onArchive2Timestamp |
✘ |
Date |
date-time |
|
onArchive3 |
✘ |
Boolean |
||
onArchive3Timestamp |
✘ |
Date |
date-time |
|
onBackup |
✘ |
Boolean |
||
onBackupTimestamp |
✘ |
Date |
date-time |
|
onFlow |
✘ |
Boolean |
||
onFlowTimestamp |
✘ |
Date |
date-time |
|
onsite |
✘ |
Boolean |
||
pathOnCard |
✘ |
String |
||
pattern |
✘ |
String |
||
productionId |
✘ |
Long |
int64 |
|
removeFromQuota |
✘ |
Boolean |
||
shouldBeOnAlternateBackup |
✘ |
Boolean |
||
shouldBeOnAlternateBackupTimestamp |
✘ |
Date |
date-time |
|
shouldBeOnBackup |
✘ |
Boolean |
||
shouldBeOnBackupTimestamp |
✘ |
Date |
date-time |
|
shouldBeOnFlow |
✘ |
Boolean |
||
shouldBeOnFlowTimestamp |
✘ |
Date |
date-time |
|
size |
✘ |
Long |
int64 |
|
tracks |
✘ |
Set of Track |
||
transferDetails |
✘ |
TransferDetails |
||
uid |
✘ |
String |
||
uploading |
✘ |
Boolean |
||
version |
✔ |
Long |
The version of this resource, used for Optimistic Locking |
int64 |
volumeLocations |
✘ |
List of VolumeLocation |
||
zone |
✘ |
String |
Content Type
-
application/json
Responses
Code | Description | Datatype |
---|---|---|
200 |
The request was successful. |
|
402 |
There are not enough subscription resources available to complete this request. |
|
403 |
The user needs LIBRARY_UPLOAD rights. |
|
404 |
The production, media object or material instance was not found. |
|
This call in turn returns a JSON object containing an uploadLocation
field. Now, as before, we can start sending bytes to this location.
Close the upload
And once all bytes are uploaded successfully, we should again close the upload to signal to the API that all bytes were send and it can start processing the file in the Ingest workflow.
POST /production/{prId}/mo/{mediaObjectId}/mai/{materialInstanceId}/close
Signal that the upload is finished.
Details
Description
Parameters
Path Parameters
Name | Description | Required | Type |
---|---|---|---|
|
ID of the production. |
✔ |
Long |
|
ID of the MediaObject. |
✔ |
Long |
|
ID of the MaterialInstance. |
✔ |
Long |
Body Parameters
Name | Description | Required | Type |
---|---|---|---|
|
✘ |
CloseRequest |
CloseRequest
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
skipIngest |
✘ |
Boolean |
||
skipVerification |
✘ |
Boolean |
Return Type
MediaObjectInstance
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
audioLayoutProperties |
✘ |
AudioLayoutProperties |
||
confidentiality |
✘ |
Integer |
int32 |
|
created |
✘ |
Date |
The time when this resource was created |
date-time |
createdBy |
✘ |
String |
The request or process that created this resource |
|
creatorId |
✘ |
Long |
The id of the user who created this resource |
int64 |
description |
✘ |
String |
||
duration |
✘ |
Double |
double |
|
id |
✔ |
Long |
The id of this resource |
int64 |
lastUpdated |
✘ |
Date |
The time when this resource was last updated |
date-time |
materialInfo |
✘ |
MaterialInfo |
||
materialUploadComplete |
✘ |
Date |
date-time |
|
mediaInfo |
✘ |
MediaInfo |
||
mediaObjectId |
✘ |
Long |
int64 |
|
mimeType |
✘ |
String |
||
modifiedBy |
✔ |
String |
The request or process responsible for the last update of this resource |
|
objectType |
✘ |
String |
The data model type or class name of this resource |
|
profile |
✘ |
String |
||
quality |
✘ |
String |
Enum: HIGH, MEDIUM, LOW, ULTRA, |
|
size |
✘ |
Long |
int64 |
|
sourceMediaObjectInstance |
✘ |
MediaObjectInstance |
||
sourceMediaObjectInstanceId |
✘ |
Long |
int64 |
|
tracks |
✘ |
Set of Track |
||
transcoderProfileUuid |
✘ |
String |
||
type |
✘ |
String |
Enum: RAW, PROXY, EDL, SHOTSTITCH, STITCH, THUMB, THUMB_SHOT, THUMB_SIXTY, WAVEFORM, AUDIO_MONO, AUDIO_SPEECH, VOLDEMORT_XML, ATTACHMENT, HDR_PROXY, MEZZANINE_PROXY, |
|
version |
✔ |
Long |
The version of this resource, used for Optimistic Locking |
int64 |
Content Type
-
application/json
Responses
Code | Description | Datatype |
---|---|---|
200 |
The request was successful. |
|
403 |
The user needs LIBRARY_UPLOAD rights. |
|
404 |
The production, media object or material instance was not found. |
|
412 |
The upload was not complete. |
|
More control
It is clear that this method is more complicated than the simple upload we described earlier. So why do it? The reason is that this method gives you much more control. For example, you can set up a PROXY MediaObjectInstance, and send that to Limecraft Flow so you get a browser-friendly preview while not having to send the original media to Limecraft Flow.
To add a MediaObjectInstance to a MediaObject, you can use this call:
POST /production/{prId}/mo/{moId}/moi
This call creates a new MediaObjectInstance.
Details
Description
Parameters
Path Parameters
Name | Description | Required | Type |
---|---|---|---|
|
ID of the production. |
✔ |
Long |
|
ID of the MediaObject. |
✔ |
Long |
Body Parameters
Name | Description | Required | Type |
---|---|---|---|
|
The mediaObjectInstance object. |
✔ |
BasicObjectNode |
BasicObjectNode
Node that maps to JSON Object structures in JSON content.
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
id |
✘ |
Integer |
int32 |
Return Type
MediaObjectInstance
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
audioLayoutProperties |
✘ |
AudioLayoutProperties |
||
confidentiality |
✘ |
Integer |
int32 |
|
created |
✘ |
Date |
The time when this resource was created |
date-time |
createdBy |
✘ |
String |
The request or process that created this resource |
|
creatorId |
✘ |
Long |
The id of the user who created this resource |
int64 |
description |
✘ |
String |
||
duration |
✘ |
Double |
double |
|
id |
✔ |
Long |
The id of this resource |
int64 |
lastUpdated |
✘ |
Date |
The time when this resource was last updated |
date-time |
materialInfo |
✘ |
MaterialInfo |
||
materialUploadComplete |
✘ |
Date |
date-time |
|
mediaInfo |
✘ |
MediaInfo |
||
mediaObjectId |
✘ |
Long |
int64 |
|
mimeType |
✘ |
String |
||
modifiedBy |
✔ |
String |
The request or process responsible for the last update of this resource |
|
objectType |
✘ |
String |
The data model type or class name of this resource |
|
profile |
✘ |
String |
||
quality |
✘ |
String |
Enum: HIGH, MEDIUM, LOW, ULTRA, |
|
size |
✘ |
Long |
int64 |
|
sourceMediaObjectInstance |
✘ |
MediaObjectInstance |
||
sourceMediaObjectInstanceId |
✘ |
Long |
int64 |
|
tracks |
✘ |
Set of Track |
||
transcoderProfileUuid |
✘ |
String |
||
type |
✘ |
String |
Enum: RAW, PROXY, EDL, SHOTSTITCH, STITCH, THUMB, THUMB_SHOT, THUMB_SIXTY, WAVEFORM, AUDIO_MONO, AUDIO_SPEECH, VOLDEMORT_XML, ATTACHMENT, HDR_PROXY, MEZZANINE_PROXY, |
|
version |
✔ |
Long |
The version of this resource, used for Optimistic Locking |
int64 |
Content Type
-
application/json
Responses
Code | Description | Datatype |
---|---|---|
201 |
The request was successful. |
|
403 |
The user needs LIBRARY_UPLOAD rights. |
|
404 |
The production or media object was not found. |
|