Object Format standard_extended
Attention: this feature is only available in fylr. It is not available in easydb5!
The standard_extended
format for objects provides the object data in a fixed structure. It can be displayed by using a generic parser without any knowledge about the database schema.
System fields
The standard_extended
format is an extension of an object in standard format, that only adds new fields without changing anything else in the object compared to other formats.
The following fields are additionaly included in this format and contain translations for the names of system fields:
_objecttype_display_name
- The display name of the objecttype in mutltiple languages (see below)
- correlates to
_objecttype
_mask_display_name
- The display name of the mask in mutltiple languages
- correlates to
_mask
_tags
- List of tags, includes the following fields:
_id
: ID of the tagdisplayname
: display name of the tag in mutltiple languagesreference
(optional): Reference of the tag, if it is setshortname
(optional): Shortname of the tag, if it is set
- List of tags, includes the following fields:
_values
- List of fields and data (see below)
All other system fields are available as well. These field names are always fix.
List of values
All object data is in a list _values
, where each list element has the following structure:
api_name
- string, mandatory
- internal technical name of the field
display_name
- object, mandatory
- contains the name of the field in multiple languages
- the display name for each language can be display as is
type
- string, mandatory
- describes the data type of the field
- is also used as the key to access the actual data of the field in this object
- possible values are:
- data (key with the same name as the value of
type
)- mandatory
- the data type depends on
type
- some data can be displayed as is, some needs parsing
text
A string that can be displayed as is.
Example:
{
"api_name": "reference",
"display_name": {
"de-DE": "Referenz",
"en-US": "Reference"
},
"type": "text",
"text": "Ref 1"
}
text_loca
An object with data in multiple languages.
Example:
{
"api_name": "name",
"display_name": {
"und": "name"
},
"type": "text_loca",
"text_loca": {
"de-DE": "Deutscher Text",
"en-US": "English Text"
}
}
number
An object that contains a numeric value in integer or float format:
number
- number value that can be displayed as is
print
- a rendered string that can be displayed as is
- the print value is localized in the first data language which is configured for the user
Example:
{
"api_name": "currency",
"display_name": {
"de-DE": "Währung",
"en-US": "Currency"
},
"type": "number",
"number": {
"number": 2.57,
"print": "2,57"
}
}
bool
true
/ false
, can be displayed as is or be parsed.
Example:
{
"api_name": "yes_no",
"display_name": {
"de-DE": "Ja / Nein",
"en-US": "Yes / No"
},
"type": "bool",
"bool": true
}
date
An object that contains data of a timestamp (date and time), using the following fields:
to
- start timestamp of the date range in ISO8601 format
from
- end timestamp of the date range in ISO8601 format
print
- a rendered string that can be displayed as is
- the date value is rendered as short and simple as possible
Example:
{
"api_name": "date",
"display_name": {
"de-DE": "Datum",
"en-US": "Date"
},
"type": "date",
"date": {
"from": "2022-02-12T00:00:00Z",
"to": "2022-02-12T23:59:59Z",
"print": "2022-02-12"
}
}
The values from
and to
do not define a date range, but are used to define the granularity of the date.
{
"from": "2021-12-01T00:00:00Z",
"to": "2021-12-31T23:59:59Z"
}
would be used for the whole month of december 2021, without specifying a day. The resulting print
value would be 2021-12
.
date_range
An object that contains data of a date range following fields:
to
- start timestamp of the date range in ISO8601 format
from
- end timestamp of the date range in ISO8601 format
print
- a rendered string that can be displayed as is
- the date range value is rendered as short and simple as possible
Example:
{
"api_name": "daterange",
"display_name": {
"de-DE": "Datumsbereich",
"en-US": "Date Range"
},
"type": "date_range",
"date_range": {
"from": "2009-01-01T00:00:00Z",
"to": "2019-12-31T23:59:59Z",
"print": {
"und": "2009 - 2019"
}
}
}
custom
A complex object that contains data of a custom data type field:
_standard
- an object that contains the standard of the custom data type in multiple languages
_values
- list of fields in the custom data type
- the values are based on the search mapping that is defined in the
manifest.yml
of the custom datatype plugin
Example:
{
"api_name": "custom",
"display_name": {
"und": "Custom"
},
"type": "custom",
"custom": {
"_standard": {
"de-DE": "Custom Datentyp",
"en-US": "Custom Data Type"
},
"_values": [
{
"api_name": "locafield",
"display_name": {
"und": "locafield"
},
"text_loca": {
"de-DE": "loca DE",
"en-US": "loca US"
},
"type": "text_loca"
},
[...]
]
}
}
file
An object with data about a linked file, includes file information, urls and technical metadata.
To download / display / embed the image, the provided url
can be used.
Example:
{
"api_name": "file",
"display_name": {
"de-DE": "Datei",
"en-US": "File"
},
"type": "file",
"file": {
"technical_metadata": {
"extension": "jpg",
[...]
},
"versions": {
"original": {
"url": "http://...",
[...]
},
"preview": {
"url": "http://...",
[...]
},
[...]
},
[...]
}
}
linked_object
An object with information about a linked object (in standard format)
Example:
{
"api_name": "link_keyword",
"display_name": {
"de-DE": "Schlagwort",
"en-US": "Keyword"
},
"type": "linked_object",
"linked_object": {
"_mask": "keywords__all_fields",
"_mask_display_name": {
"und": "keywords__all_fields"
},
"_objecttype": "keyword",
"_objecttype_display_name": {
"und": "Keyword"
},
"_standard": {
[...]
},
"_system_object_id": 6,
"keyword": {
"_id": 3,
"_version": 1,
[...]
},
[...]
}
}
nested
Nested tables are lists of lists of values. The outer list contains multiple entries in the nested table. The inner list contains rows in the nested table entry and has the same structure as _values
in the top level object. Nested tables can be parsed using the same parsing algorithm and applying it in a recursive way.
Example:
{
"api_name": "_nested:object__techniques",
"display_name": {
"de-DE": "Techniken",
"en-US": "Techniques"
},
"type": "nested",
"nested": [
[
{
"api_name": "remark",
"display_name": {
"und": "remark"
},
"type": "text",
"text": "Test Keyword"
},
{
"api_name": "link_keyword",
"display_name": {
"de-DE": "Schlagwort",
"en-US": "Keyword"
},
"type": "linked_object",
"linked_object": {
"_mask": "keywords__all_fields",
"_mask_display_name": {
"und": "keywords__all_fields"
},
"_objecttype": "keyword",
"_objecttype_display_name": {
"und": "Keyword"
},
"_standard": {
[...]
},
"_system_object_id": 6,
"keyword": {
"_id": 3,
"_version": 1,
[...]
}
}
},
[...]
],
[
[...]
]
]
}
reverse_nested
Reverse nested tables are lists of reverse linked objects, each entry is an object which only contains a sub set of the system fields and _values
.
Most important difference is that _id
and _version
are not included in the sub object for the object, but are on top level.
Example:
{
"api_name": "_reverse_nested:images:lk_nested_id",
"display_name": {
"de-DE": "Revers verlinkt: Bilder",
"en-US": "Reverse nested: Images"
},
"type": "reverse_nested",
"reverse_nested": [
{
"_objecttype": "images",
"_objecttype_display_name": {
"en-US": "Images",
"de-DE": "Bilder"
},
"_id": 1,
"_global_object_id": "5@...",
"_system_object_id": 5,
"_version": 1,
"_values": [
[...]
]
},
[...]
]
}
Multilanguage values
If a value is available in multiple langauges, the value is an object with a simple key-value-structure.
Depending on the configured languages, there can be multiple different language codes as keys in this object. The value for each key is the translation in this language. If the objects are to be rendered in a specific language, this object can be filtered for the language. If the value is not language specific, it is included at the key und
(for undefined). This value can also be used as a fallback language.