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, Notification, Annotation.create, User.register, User.delete, User.authenticationTypeUpdate,

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, Notification, Annotation.create, User.register, User.delete, User.authenticationTypeUpdate,

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.