Article

An article represents a piece of content created in the content management system. Different types of content like text or video articles share the same message structure, they can be distinguished by the Article.Type field. Text articles (type = Article.Type.ARTICLE) also have Article.SubType to differentiate its purpose and form.

Teaser

To improve performance of database access and during network transmission tapir is using a lightweight representation of Article in some places.

Depending on the service used to retrieve an article, the Article message might only contain data required on section pages:

  • Article.body set to null
  • Article.elements filtered by Element.relations to only contain TEASER, but neither OPENER nor SOCIAL

Thus, not containing any data that is only required on detail pages. This lightweight representation is sometimes referred to as Teaser.

Field nameTypeDescription
idint64Unique ID of the article defined by the content management system (required).
typeTypeMain content type of the article (required). See list of supported [ContentType][ct]
sub_typeSubTypeSubtype of the article. For ARTICLE this field holds a sub_type, for others like GALLERY it may not.
section_treeReferenceHierarchical section tree information of the article (required).
fieldsmap<string, string>Generic map containing general content and configuration information of the article (required). See fields
bodiesrepeated BodyRecursive textual body of the article to be rendered on detail pages. May be null for Teaser.
metadataMetadataThe articles Metadata, containing state and various timestamps.
elementsrepeated ElementElements required to render the teaser, such as IMAGE, VIDEO or AUTHOR
keywordsrepeated KeywordExtracted keywords from the article body like persons, locations, organizations etc.
onwardsint64IDs of articles related to this article. Related articles are defined manually in the content management system by the editorial department.
variantsmap<string, Article>Variants of this article, e.g. for headline testing.
entitiesstring [deprecated]Extracted entities from the article body like persons, locations, organizations etc. deprecated — use keywords instead.
authorsrepeated AuthorAuthors and or Agencies ƒor this content
related_articlesrepeated ArticleEditorial articles, which are related to the main article. May only be an empty unresolved article (not all services will resolve these).
referencesrepeated Reference[]References, e.g. URLs belonging to this article.

message Article {
int64 id = 1;
Type type = 2;
SubType sub_type = 3;
stroeer.core.v1.Reference section_tree = 4;
map<string, string> fields = 5;
repeated Body bodies = 6;
Metadata metadata = 7;
repeated Element elements = 8;
repeated Keyword keywords = 9;
repeated int64 onwards = 10 [deprecated = true];
map<string, Article> variants = 11;
repeated Author authors = 12;
repeated Article related_articles = 13;
repeated Reference references = 14;
repeated string entities = 100 [deprecated = true];

[~]

fields

The entry set is defined by the content management system and will vary depending on the main type of the article.

⚠ Clients must be resilient to unknown or missing entries. ⚠

For Article.Type.ARTICLE

this map will contain the following data:

keymandatorydescription
headline*the headline for this content
top_line*"dachzeile"
ref_path*URL path for this article e.g. /${section_tree}/id_${id}/${title}.html
ref_canonical*Canonical URL of this article, may differ if external, e.g. https://www.example.com/external.html
summarysummary for this content
teaser_textused on teasers, overrides summary
meta_robots
social_headlineused for social markup, overrides headline
headline_shortused for "Schlagzeilen", overrides headline
meta_titleHTML <meta title>
expert_line
social_description
meta_descriptionHTML <meta description>
reading_time_minutesestimated reading time in minutes
flag:hiddenthis content must be excluded from automated curations (CMS: no auto-content/manuell kuratieren)

For Article.Type.GALLERY

this map will contain the following data:

keymandatorydescription
headline*the headline for this content

enum Type

Enum valueDescription
TYPE_UNSPECIFIEDunspecified
ARTICLEA text article, usually sub typed
IMAGE[deprecated] An image article, unused, deprecated
VIDEOA video article, contains HLS-videos, as well as external live str
GALLERYA gallery article
EMBEDAn embed article including an oembed or edge_side_include element
AUTHORAn author article, currently not implemented
AGENCY[deprecated] An agency article, unused, deprecated
EXTERNALAn external article (teaser-like external article)
INTERNALUsed for internal purposes only.
CLUSTERa thematically grouped cluster for various amount of articles, resolved Trails embedded via related_articles

enum Type {
TYPE_UNSPECIFIED = 0;
ARTICLE = 1;
IMAGE = 2 [deprecated = true];
VIDEO = 3;
GALLERY = 4;
EMBED = 5;
AUTHOR = 6;
AGENCY = 7 [deprecated = true];
EXTERNAL = 8;
CLUSTER = 9;
INTERNAL = 100;
}

[~]

enum SubType

Content with Type.ARTICLE is usually sub typed to alter its form and purpose.

Enum valueDescription
SUB_TYPE_UNSPECIFIEDunspecified
NEWSMeldung/Nachricht — this is the default
COLUMNKolumne
COMMENTARYKommentar
INTERVIEWInterview
CONTROVERSYPro und Kontra/Streitgespräch
TAGESANBRUCHTagesanbruch
EVERGREENEvergreen
AGENCY_IMPORTContent originally imported from agency/tickers by the CMS
ADVERTORIALAdvertorial
QUIZQuiz
GAME(Browser)Game
COMPLIANCEInternal company articles like an imprint or contact forms
RECIPECooking recipe

enum SubType {
SUB_TYPE_UNSPECIFIED = 0;
NEWS = 1;
COLUMN = 2;
COMMENTARY = 3;
INTERVIEW = 4;
CONTROVERSY = 5;
TAGESANBRUCH = 6;
EVERGREEN = 7;
AGENCY_IMPORT = 8;
ADVERTORIAL = 9;
QUIZ = 10;
GAME = 11;
COMPLIANCE = 12;
RECIPE = 13;
}

[~]

[~]