Bootstrap / Update the Delivery Workspace
Typically, the Delivery Workspace and the DeliveryRequests in them are not created manually or directly via the API.
Instead, the account is configured with the necessary settings for Delivery Workspaces, and the Delivery Request Templating is set up. Once that is done, creating and updating a Delivery Workspace becomes very easy.
When a product is created / updated in the clients system that should be represented as a Limecraft Delivery Workspace, a Product.Update
event should be sent using the following call:
POST /account/{id}/event
This call will create an event in a production.
Details
Description
On success it returns a list of the Event objects.
Parameters
Path Parameters
Name | Description | Required | Type |
---|---|---|---|
|
✔ |
Long |
Body Parameters
Name | Description | Required | Type |
---|---|---|---|
|
events to be created |
✘ |
List of Event |
Event
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
accountId |
✘ |
Long |
int64 |
|
actor |
✘ |
Object |
||
created |
✘ |
Date |
date-time |
|
editorialObjectId |
✘ |
Long |
int64 |
|
extended |
✘ |
Object |
||
funnel |
✘ |
String |
||
href |
✘ |
Href |
||
id |
✘ |
String |
||
lastUpdated |
✘ |
Date |
date-time |
|
message |
✘ |
String |
||
name |
✘ |
String |
||
object |
✘ |
Object |
||
objectType |
✘ |
String |
||
playback |
✘ |
Boolean |
||
productionId |
✘ |
Long |
int64 |
|
requestId |
✘ |
String |
||
retro |
✘ |
Boolean |
||
segmentId |
✘ |
Long |
int64 |
|
segmentInstanceId |
✘ |
Long |
int64 |
|
shareId |
✘ |
Long |
int64 |
|
stopped |
✘ |
Date |
date-time |
|
subscriptionId |
✘ |
Long |
int64 |
|
target |
✘ |
Object |
||
transactionId |
✘ |
String |
||
type |
✘ |
String |
Enum: Activity, Production.create, Production.update, Production.delete, Production.restore, Production.move, Team.add, Team.remove, Media.create, Media.delete, Media.probe, Media.ingest, Media.instance.proxy.online, Media.instance.proxy.offline, Media.instance.material, FileResource.material, AccountTeam.add, AccountTeam.remove, Monitor.create, Monitor.update, Monitor.delete, Monitor.clear, Monitor.trigger, Workflow.start, Workflow.error, Workflow.update, Workflow.complete, Task.start, Task.error, Task.update, Task.complete, Transcription.automatic, Transcription.automatic.failed, Translation.automatic, Translation.automatic.failed, Subtitling.automatic, Subtitling.automatic.failed, Transcode, Transcode.failed, Metric.correction, Transfer.start, Transfer.complete, Transfer.failed, DeliveryRequestSubmission.create, DeliveryRequestSubmission.update, Account.changeOwnership, DeliveryRequest.create, DeliveryRequest.update, Media.update, Subtitling.import, Subtitling.import.failed, Subtitling.manual, Transcription.summarize, |
|
verb |
✘ |
String |
Return Type
Event
Field Name | Required | Type | Description | Format |
---|---|---|---|---|
accountId |
✘ |
Long |
int64 |
|
actor |
✘ |
Object |
||
created |
✘ |
Date |
date-time |
|
editorialObjectId |
✘ |
Long |
int64 |
|
extended |
✘ |
Object |
||
funnel |
✘ |
String |
||
href |
✘ |
Href |
||
id |
✘ |
String |
||
lastUpdated |
✘ |
Date |
date-time |
|
message |
✘ |
String |
||
name |
✘ |
String |
||
object |
✘ |
Object |
||
objectType |
✘ |
String |
||
playback |
✘ |
Boolean |
||
productionId |
✘ |
Long |
int64 |
|
requestId |
✘ |
String |
||
retro |
✘ |
Boolean |
||
segmentId |
✘ |
Long |
int64 |
|
segmentInstanceId |
✘ |
Long |
int64 |
|
shareId |
✘ |
Long |
int64 |
|
stopped |
✘ |
Date |
date-time |
|
subscriptionId |
✘ |
Long |
int64 |
|
target |
✘ |
Object |
||
transactionId |
✘ |
String |
||
type |
✘ |
String |
Enum: Activity, Production.create, Production.update, Production.delete, Production.restore, Production.move, Team.add, Team.remove, Media.create, Media.delete, Media.probe, Media.ingest, Media.instance.proxy.online, Media.instance.proxy.offline, Media.instance.material, FileResource.material, AccountTeam.add, AccountTeam.remove, Monitor.create, Monitor.update, Monitor.delete, Monitor.clear, Monitor.trigger, Workflow.start, Workflow.error, Workflow.update, Workflow.complete, Task.start, Task.error, Task.update, Task.complete, Transcription.automatic, Transcription.automatic.failed, Translation.automatic, Translation.automatic.failed, Subtitling.automatic, Subtitling.automatic.failed, Transcode, Transcode.failed, Metric.correction, Transfer.start, Transfer.complete, Transfer.failed, DeliveryRequestSubmission.create, DeliveryRequestSubmission.update, Account.changeOwnership, DeliveryRequest.create, DeliveryRequest.update, Media.update, Subtitling.import, Subtitling.import.failed, Subtitling.manual, Transcription.summarize, |
|
verb |
✘ |
String |
Content Type
-
application/json
Responses
Code | Description | Datatype |
---|---|---|
200 |
The request was successful. |
|
The body of the request depends on the particular settings and integration, but will be similar to the example below.
{
"type": "Activity",
"verb": "Product.update",
"object": {
// points to DeliveryRequestTemplateGroup's handle property
"deliveryRequestTemplateGroupHandle": "default-template",
// a volume access handle can be passed in to link DeliveryRequests with
// certain storage credentials
"volumeAccessHandle": "default-storage",
"supplierEmail": "john.doe@the-production-house.com",
"product": {
// identifier of the product in the client's systems
"externalReference": "258536834293527",
// this will become the workspace title
"title": "Title Of The Series",
// various properties (depend on configuration)
"productType": "Series",
"category": "Show",
"productionYear": "2024",
"productionHouse": "TBD",
"pressSheetID": "258536854774828",
"workName": "Title Of The Series",
"expectedDuration": "01:30:00.000",
"expectedNrOfEpisodes": 17,
"seasonNumber": 7,
"parentSerie": {
"externalReference": "256577041480527",
"title": "Title Of The Parent Series"
},
// episodes to be created
"episodes": [
{
"externalReference": "258536855592527",
"title": "Blind Auditions 1",
"episodeNumber": 1,
"expectedDuration": "01:30:00.000",
"pressSheetID": "258536855593828",
"productType": "Episode"
},
{
"externalReference": "258536856072527",
"title": "Blind Auditions 2",
"episodeNumber": 2,
"expectedDuration": "01:30:00.000",
"pressSheetID": "258536856073828",
"productType": "Episode"
},
{
"externalReference": "258536856352527",
"title": "Liveshow 3",
"episodeNumber": 16,
"expectedDuration": "01:45:00.000",
"pressSheetID": "258536856353828",
"productType": "Episode"
},
{
"externalReference": "259214142265527",
"title": "Liveshow 4 - Finale",
"episodeNumber": 17,
"expectedDuration": "01:40:00.000",
"pressSheetID": "259214142909828",
"productType": "Episode"
}
]
}
}
}
If the HTTP call succeeds, the event was received properly by us. The posted event will be returned with an additional id field.
{
"verb": "Product.update",
...,
"id": "734544f9-b975-4b1c-a791-4e2d8bf9db84"
}
The event will asynchronously start a workflow on Limecraft’s end, which will result in Production , Editorial Object and DeliveryRequest objects being created / updated.
Limecraft Flow can notify the client of created objects with a HTTP POST to deliveryWorkspaceBootstrapWebhookUrl
(this is an account setting).
The body of this notification depends on the concrete settings made on the account. It can contain the created / updated Editorial Objects. If required, it can also contain the ids of each created DeliveryRequest, as shown in the example below.
{
"objects": [
{
"id" : 123,
"objectType" : "DeliveryRequest"
},
{
"id" : 456,
"objectType" : "DeliveryRequest"
},
{
"id" : 789,
"objectType" : "DeliveryRequest"
},
{
"categoryId": 195621,
"created": 1742390884531,
"createdBy": "REST",
"creatorId": 3,
"customFields": {
"parentSeriesExternalReference": {
"multiValued": false,
"type": "STRING",
"value": "256577041480527",
"values": [
"256577041480527"
]
},
"externalReference": {
"multiValued": false,
"type": "STRING",
"value": "258536834293527",
"values": [
"258536834293527"
]
},
"expectedNrOfEpisodes": {
"multiValued": false,
"type": "LONG",
"value": "17",
"values": [
"17"
]
},
"productionHouse": {
"multiValued": false,
"type": "STRING",
"value": "TBD",
"values": [
"TBD"
]
},
"parentSeriesTitle": {
"multiValued": false,
"type": "STRING",
"value": "Title Of The Parent Series",
"values": [
"Title Of The Parent Series"
]
},
"seasonNumber": {
"multiValued": false,
"type": "LONG",
"value": "7",
"values": [
"7"
]
},
"productionYear": {
"multiValued": false,
"type": "STRING",
"value": "2024",
"values": [
"2024"
]
},
"expectedDuration": {
"multiValued": false,
"type": "STRING",
"value": "01:30:00.000",
"values": [
"01:30:00.000"
]
},
"category": {
"multiValued": false,
"type": "STRING",
"value": "Show",
"values": [
"Show"
]
},
"workName": {
"multiValued": false,
"type": "STRING",
"value": "Title Of The Series",
"values": [
"Title Of The Series"
]
},
"pressSheetID": {
"multiValued": false,
"type": "STRING",
"value": "258536854774828",
"values": [
"258536854774828"
]
},
"productType": {
"label": "Product Type",
"multiValued": false,
"type": "STRING",
"value": "Series",
"values": [
"Series"
]
}
},
"funnel": "Delivery.Series",
"href": "/production/19807/eo/462915",
"hrefs": {
"children": "/production/19807/eo/462915/children",
"drafts": "/production/19807/notebook/462915/draft",
"editDecisionLists": "/production/19807/eo/462915/edl",
"category": "/production/19807/category/195621",
"exportSummary": "/production/19807/eo/462915/export/summary",
"export": "/production/19807/eo/462915/export"
},
"id": 462915,
"lastUpdated": 1742390885067,
"objectType": "Notebook",
"productionId": 19807,
"subObjects_index": 0,
"systemFields": {},
"title": "Title Of The Series",
"version": 1
}
]
}
If something goes wrong during the workspace bootstrapping or update process, a call to the same endpoint will be made with the following body. It is an array of error objects. Such an object contains at least a message property which can be shown to an end user. It can contain additional properties which can help with debugging.
either objects is filled in, or errors is filled in. |
{
"error": [{
"error": {
"code": 4000,
"message": "Multiple productions found matching the externalReference"
},
"pressSheetID": "259014014310828",
"productType": "Episode",
"externalReference": "259014015329527"
}]
}
At this point, the Delivery Workspace is set up! It will be bootstrapped with DeliveryRequests according to what is specified in the template.
Production companies and other suppliers can now start filling in these requests, and submitting them.