Content Profiles

Content profiles let you change the way how your content should be edited and what validation rules should apply.


You can specify custom profiles in server/data/content_types.json file.

Then you can sync it with database using cli command:

python app:initialize_data --entity-name content_types

In the file there should be list of profiles:

    {"_id": "story", "label": "Story", "enabled": 1, ...},
    {"_id": "snap", "label": "Snap", "enabled": 0, ...}

Available fields are:

_id string
Profile id, its value will be set in item.profile field and will be available in output.
label string
Label visible in the client.
description string
Optional profile description.
priority int
Used for sorting in descending order.
enabled boolean
Flag if profile is enabled (visible in lists) or not.
schema dict

Schema configuration for profile. There you can define validation rules for Item Schema fields:

"schema": {
    "headline": {
        "type": "string",
        "required": true,
        "maxlength": 120,
    "keywords": {
        "type": "list",
        "required": true,
        "allowed": ["sport", "news"]

Keys are field names, and for each field you can specify:

type string
One of string, list, dict, integer, number.
required boolean
If true, field must be there and be non empty.
minlength, maxlength int
Minimum and maximum length allowed for string type.
allowed list
List of allowed values for string or list type.
schema dict
Validation rules for dict type items.
nullable boolean
If True the value can be set to null.
regex string

Regex validation rule, eg.:

"regex": "[a-z]+"
editor dict

Editor configuration for profile, there you can set what fields will be visible and how these should be displayed:

"editor": {
    "headline": {
        "order": 1,
        "sdWidth": "full",
        "enabled": true
    "body_html": {
        "order": 5,
        "formatOptions": ["h2", "bold", "italic"],
        "enabled": true
    "ednote": {
        "enabled": false

Rules for fields are:

order int
Where the field is visible in the editor.
sdWidth string
One of full, half and quarter. Fields are floating so there can be more on the same line as long as they fit there.
enabled boolean
If false field won’t be visible in the editor.
formatOptions list

What format options should be available, only works with body_html and abstract fields. For each there will be a button visible in the editor toolbar.










Available schema fields

These are fields you can use in your content profile:

class superdesk.default_schema.DefaultSchema

Default schema.

abstract = string

item abstract

anpa_category = list


anpa_take_key = string

anpa take key

authors = list


body footer

body_html = string

item content

byline = string


company_codes = list

company codes

dateline = dict

dateline - info about where news was written

ednote = string

editorial note

feature_media = media

embedded media in the item

footer = string

item footer

genre = list

item genre

headline = string


keywords = list


language = string


media_description = string

embedded media description

place = list

place where news happened

priority = integer

news item priority

sign_off = string

item sign off info

slugline = string


sms = string

sms version of an item

subject = list


urgency = integer

news item urgency

usageterms = string


Plain text profile

Before there are any content profiles defined for a desk there is one called Plain text.

Package profiles

Package profiles are not yet supported.