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.