The Storyline JSON Structure

When CUE Zipline retrieves the print variant of this storyline from the Content Store web service, it is supplied in the form of a JSON structure like this:

{
  "storyline": {
    "id": "5b3251f0-33ba-11eb-b23d-5b6ae38640b0",
    "version": "1",
    "sourceId": "c9fb7ff2-6e3c-42c0-8c79-40c817bd90f4",
    "model": "https://my-content-store/webservice/escenic/shared/model/storyline-template/print",
    "inheritedFrom": "https://ece-cue-unstable-nightly.cci.cue.cloud/webservice/escenic/storyline/ad9c82a8-3314-11eb-b23d-5b6ae38640b0",
    "elements": ["/storyElements/1","/storyElements/2","/storyElements/3","/storyElements/4","/storyElements/5"]
  },
  "storyElements": {
    "1": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/print_head",
      "fields": [],
      "elements": ["/storyElements/6"]
    },
    "2": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/print_head_deck",
      "fields": []
    },
    "3": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/print_body",
      "fields": [],
      "elements": ["/storyElements/7","/storyElements/8","/storyElements/9"]
    },
    "4": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/print_assets",
      "fields": []
    },
    "5": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/print_quote",
      "fields": []
    },
    "6": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/headline",
      "fields": [
        {
          "name": "headline",
          "value": "My Bullet Test",
          "annotations": []
        }
      ]
    },
    "7": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Here is an introductory paragraph, followed by a list:",
          "annotations": [
            {
              "index": 24,
              "length": 9,
              "name": "bold",
              "value": true
            }
          ]
        }
      ]
    },
    "8": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/list_bulleted",
      "fields": [],
      "elements": ["/storyElements/10","/storyElements/11","/storyElements/12","/storyElements/13"]
    },
    "9": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Concluding paragraph.",
          "annotations": []
        }
      ]
    },
    "10": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Item one",
          "annotations": []
        }
      ]
    },
    "11": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Item two",
          "annotations": []
        }
      ]
    },
    "12": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/list_bulleted",
      "fields": [],
      "elements": ["/storyElements/14","/storyElements/15"]
    },
    "13": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Item three",
          "annotations": []
        }
      ]
    },
    "14": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Nested one",
          "annotations": []
        }
      ]
    },
    "15": {
      "model": "https://my-content-store/webservice/escenic/shared/model/story-element-type/paragraph",
      "fields": [
        {
          "name": "paragraph",
          "value": "Nested two",
          "annotations": []
        }
      ]
    }
  }
}

The above structure has been simplified to improve legibility: the actual data returned by the web service will contain some additional URLs, IDs and so on that are not relevant for our purposes.