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

id

Long

Body Parameters
Name Description Required Type

Event

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
Table 1. http response codes
Code Description Datatype

200

The request was successful.

Event

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.