-
Notifications
You must be signed in to change notification settings - Fork 8
Content Management
The lang
parameter is mandatory for this call.
You can add more filters, see apidoc
contents = api.get_call("content/list", body={"lang":"en"})
This call is designed for content view
content = api.get_call("content/get", uid="5386179638984704")
NB: content.uid
= content.id
Get content with action=PAGE_EDIT
to have all relevant data.
content = api.get_call("content/get", uid="5386179638984704", action="PAGE_EDIT")
Note: the version number is used to lock ressource. You have to put the last version number of a content in version
to be allowed to update a content, else a bad request:"CONTENT_NOT_UP_TO_DATE" will be returned.
The simplest way to create content is to use an existing template. This template will define all design configuration.
base_template = api.get_call("template/get", uid="123456789")
# note : it's possible to use a content as well.
new_content = {
"type": "page", # fixed
"template": base_template[template], # copy all the structure (see below for details)
"customContentType": base_template["customContentType"], # custom content type id
"customer": base_template["customer"], # customer id
"instance": base_template["instance"], # instance id
"feedKeys": base_template["feedKeys"], # it's the `visibleBy` field in the front interface.
"publicationDate": base_template[publicationDate],
"title": {"en": "created content from api"},
"slug": {"en": "create-content-from-api"}, # WARNING : should be unique per instance
"metadata": [], # if any, provide metadata value uid
}
new_content_saved = api.get_call("content/save", body=new_content)
{
"id" :"134567",
"type": "page",
"status": "LIVE|ARCHIVED",
"thumbnail" : "media library url",
"publicationDate" : "2018-06-29T09:28:34.346124",
"updatedAt": "2018-06-29T09:28:34.346124",
"authorId": "23142536879786754" # set at creation time with the connected user
}
To create content on behalf other users you have to be connected with this user.
The template
property contains the whole page structure.
Widgets are directly placed in this structure.
{ "template": {
"components": [
{
"type": "row",
"cells": [
{
"type": "cell",
"components":[
{
"type": "row|widget",
...
},
...]
},
...]
},
...]
}
}
You should iterate over all the structure to find the correct widget to update.
A content can have a thumbnail, that is a picture associated to it that show when listed in a content-list widget for instance.
Your media should be uploaded on LumApps, see Media Management
# First get the content
content = api.get_call('content/get', uid="6448894901878784")
# Update the thumbnail field by the media blob key
new_content = {
...
"thumbnail": <your_new_blob_key>
}
# Resave the content
api.get_call('content/save', body=new_content)
Widget are placed in the content.template
tree.
Widget can be identified by their uuid
{
"type": "widget",
"widgetType": "contact|html|...",
"uuid": "ca2bd99c-7b7e-11e8-8255-abba20e0e453",
}
Specific configurations are in properties
.
Ex for an html widget:
{
"type": "widget",
"widgetType": "html",
"uuid": "ca2bd99c-...",
"properties": {
"content":
{
"fr": "<p>Contenu html en français</p>",
"en": "<p>Html text in english </p>"
},
"id": "identifier set in front > style > advance",
"class": "class set in front > style > advance",
}
}
The properties>id
(or class) could be used to simplify widget access from code and communication with design team.
See Widgets for specific configurations.
See Global Widgets for widgets defined at instance level.