FAQs
This page addresses frequently asked questions about Content Service.
Last updated
Was this helpful?
This page addresses frequently asked questions about Content Service.
Last updated
Was this helpful?
What is the life-cycle of a content object?
Content when created will have 'Draft' status. When the Content is submitted for Review, content status will be updated to 'Review'. When a Content is accepted (submitted for publishing), status will first move to 'Processing' and then to 'Live' if it is processed successfully else to 'Failed'. When a published content is edited, a image node gets created with the id ending with '.img' (do_Id.img). Status of the image node will be 'Draft' whereas status of non-image node will be 'Live'. Image node will follow the above life cycle.
When a content in 'Review' status is rejected in Review, status of the content will be updated back to 'Draft'.
When a content is submitted for delete/retire, status of the content will be updated to 'Retired'.
When a content retire API is triggered, status of the content will be updated to 'Retired'. Please note that when a content with both actual node and image node existing is retired, image node is hard deleted from the system and actual node's status is updated to 'Retired'.
Yes, discard content API can be used to delete the image node of a content object. Please note that the image node will be hard deleted from the system.
Actual node will be hard deleted from the system.
can be used for fetching object types 'Content', 'ContentImage', 'Collection', 'CollectionImage' and 'Asset' only. Whereas, can be used for fetching all types of objects in the application ('Content', 'ContentImage', 'Collection', 'CollectionImage', 'QuestionSet', 'QuestionSetImage', 'Asset', 'Channel', 'Framework', 'ObjectCategory', 'ObjectCategoryDefintion', 'License', 'Question', etc. )
Note: All attributes in can be used for searching in API filters. However, 'objectType' attribute cannot be used in .
Content object metadata is stored in the Neo4j database. Uploaded Source for a content and appIcon images are stored in Cloud. Metadata is synced to Elasticsearch and Redis.
Actual node metadata can be read using 'Read Content API' URL in the format '/content/v2/read/do_id'.
Image node metadata can be read using 'Read Content API' URL in the format '/content/v2/read/do_id**?mode=edit**' or '/content/v2/read/do_id**.img**'.
ECML content 'body' can be fetched using 'Read Content API' URL in the format '/content/v2/read/do_id**?fields=body**'.
When a Content object Publish API is invoked, after metadata validation, content-publish flink job is invoked using respective kafka topic. In the flink job, post the pkgVersion validation, a content is first updated to 'Processing' status. Later, packaging of the content starts (ECAR generation) with types SPINE and FULL. Once ECAR is generated and uploaded to cloud, status is updated to 'Live'.
Currently, the platform supports the following formats for compiled content:
Text (.pdf)
Video (.mp4, .webm, YouTube URLs)
HTML (as .zip)
ECML (created using the inbuilt content editor)
EPUB
H5P
'index.html' in the .zip is a must.
There can be only one level of folders directly inside zip. sub folders (Folders within folders) are not allowed/may not work well.
File names and Folder names should not contain special characters. It can only be alphanumeric.
When a file is uploaded as a content, source file is copied to the configured cloudstorage blob path and the blob path url is saved in 'artifactUrl' attribute. When a video content is published, as a post publish process, streaming source is generated and the path is saved in 'streamingUrl' attribute.