General¶
This section explains concepts that are reused across multiple modules. When a Cards, Templates, or Bulletins procedure refers to one of these concepts, follow the linked explanation here.
Access configuration (access_config)¶
Cards, Templates, Bulletins, and Visual Resources can restrict who can use or see an item. The saved configuration uses an access_config object.
| Access type | Meaning | allowed_groups |
|---|---|---|
public |
Available to users who can access the corresponding module. | Usually empty. |
restricted |
Available only to selected groups. | Contains one or more group IDs. |
Example:
{
"access_config": {
"access_type": "restricted",
"allowed_groups": ["group-colombia-editors", "group-guatemala-editors"]
}
}
Style configuration (style_config)¶
The frontend type is named StyleConfig; in saved JSON it normally appears under the key style_config. style_config is the shared styling object used by Templates, Cards, Bulletin content, sections, blocks, headers, footers, fields, lists, and some field-specific elements. It lets the interface store presentation rules without embedding them directly in the content value.
How style inheritance works¶
Styles can be defined at several levels. A lower level can override the value inherited from a higher level.
Typical order: global Template/Bulletin style → section → header/footer or block → field → field-specific sub-element.
For example, a Template may define font: "Arial" globally. A specific section can inherit Arial without storing its own font. A single field can then override that value with font: "Roboto".
When the editor shows an Inherited value, the property comes from a parent style and does not need to be duplicated on the current element.
Text and color properties¶
| JSON property | Interface purpose |
|---|---|
font |
Font family. The supplied editor includes Arial, Helvetica, Times New Roman, Georgia, Poppins, Roboto, Open Sans, Lato, Montserrat, Archivo Light, and Archivo Narrow. |
color |
Text color. |
primary_color |
Primary contextual color used by components and icons. |
secondary_color |
Secondary contextual color. |
background_color |
Element background color. |
background_opacity |
Background transparency where supported. |
background_image |
Selected background image URL. |
font_size |
Text size in pixels. |
font_weight |
Font weight, such as 400 or 700. |
line_height |
Line-height value. |
word_space |
Word spacing. |
font_style |
normal or italic. |
text_decoration |
none, underline, or line-through. |
text_align |
left, center, or right. |
Spacing, border, and size properties¶
| JSON property | Interface purpose |
|---|---|
padding |
Internal spacing, entered as a CSS-style value such as 16px or 10px 20px. |
margin |
External spacing. |
gap |
Space between child elements or fields. |
border_color |
Border color. |
border_width |
Border width. |
border_style |
Border style where supported. |
border_radius |
Corner radius. |
border_sides |
Border sides to display. The editor can store all or a comma-separated combination such as top,bottom. |
bulletin_width |
Global bulletin width in pixels. |
bulletin_height |
Global bulletin height in pixels. |
Layout properties¶
| JSON property | Values / purpose |
|---|---|
fields_layout |
horizontal or vertical. |
justify_content |
start, end, center, between, around, or evenly. |
align_items |
start, end, center, or stretch. |
list_style_type |
disc, circle, square, none, or decimal. |
list_items_layout |
vertical, horizontal, grid-2, grid-3, or table. |
show_table_header |
Shows or hides a header when a list uses table layout. |
header_background_color |
Table header background color. |
header_text_color |
Table header text color. |
header_font_size |
Table header font size. |
header_font_weight |
Table header font weight. |
icon_size |
Icon size in pixels. |
icon_use_original_color |
Keeps the icon's original color instead of applying the contextual primary color. |
Example:
{
"style_config": {
"font": "Arial",
"color": "#283618",
"background_color": "#fefae0",
"font_size": 18,
"font_weight": "700",
"padding": "12px 16px",
"gap": "8px",
"border_color": "#606c38",
"border_width": "1px",
"border_style": "solid",
"border_radius": "8px",
"fields_layout": "horizontal",
"justify_content": "between",
"align_items": "center"
}
}
Tip
Apply broad styling at the highest useful level, then override only the exceptions. This produces smaller, easier-to-maintain JSON and keeps the visual system consistent.
Content hierarchy¶
Templates, Cards, and Bulletins reuse the same content concepts.
Header and footer¶
A global header or footer contains optional styles and a list of fields. Templates can also define a section-specific header or footer. When a section is customized, its local header/footer takes priority over the global one for that section.
Section¶
A section is a top-level page or content area in a Template or Bulletin. A section can contain:
section_idanddisplay_name;- background images and a section icon;
order;- style configuration;
- blocks;
- a section-specific header and footer;
repeatable, which allows the Bulletin author to create multiple pages from the same section;skippable, which allows the section to disappear from review, export, and publication when every editable field is left empty.
Block¶
A block groups related fields. It has a block_id, display_name, optional icon, optional print configuration, a style configuration, and fields.
Field¶
A field defines what the author enters and what the final bulletin can display. Common properties include:
| Property | Meaning |
|---|---|
field_id |
Stable field identifier. |
display_name |
Human-readable name shown in the editor. |
type |
Field type. |
description |
Guidance for the person entering content. |
label |
Label displayed with the value when configured. |
form |
Whether the field is editable in the Bulletin form. |
bulletin |
Whether the field is shown in the final bulletin. |
print |
Optional print behavior. |
style_config |
Field-level style configuration. |
validation |
Required/min/max rules. |
field_config |
Type-specific configuration. |
value |
The actual Bulletin or fixed Card value, when applicable. |
Field types¶
The supplied frontend supports the following field types. The exact configuration controls shown by the editor depend on the selected type.
| Type | Typical use |
|---|---|
text |
Short or long text. |
text_with_icon |
Text with an icon selected from configured icon options. |
climate_data_puntual |
Structured climate parameters with labels, units, data types, and optional per-parameter styles. |
list |
Repeatable rows/items, with optional CSV import and vertical, horizontal, grid, or table display. |
select |
Selection from fixed options, optionally multiple. |
searchable |
Searchable choice list. |
select_with_icons |
Fixed options paired with icons. |
select_background |
Fixed options paired with background images. |
number |
Numeric value with numeric validation. |
date |
Single date with configurable display format. |
date_range |
Start/end dates with optional moon-phase behavior. |
image_upload |
Image supplied while completing the bulletin. |
page_number |
Page numbering, normally auto-generated. |
card |
Inserts one of the Cards available for the configured card type/tags. |
image |
Chooses from a configured list of images. |
moon_calendar |
Moon-calendar visual field. |
Validation rules¶
Fields can store these validation rules:
{
"validation": {
"required": true,
"min_length": 10,
"max_length": 500,
"min_value": 0,
"max_value": 100,
"decimal_places": 1
}
}
Only rules that make sense for the selected field type are normally used. Bulletin navigation and export can be blocked when required fields or list minimums have not been satisfied.
Master and version records¶
Templates and Bulletins separate long-lived identity from versioned content.
Master¶
The master stores identity and lifecycle information: name, machine name, description, access, status, current version ID, thumbnails, and audit information.
Version¶
A version stores the editable structure/content for one revision and includes a version number, commit message, previous version ID, and audit log.
The key difference is important:
Template version → version.content
Bulletin version → version.data
A Bulletin also stores base_template_master_id and base_template_version_id, so its origin can be traced back to the exact Template version used when it was created.
When a Template is edited and saved, the frontend creates a new Template version instead of overwriting the previous version. The master then points to the newest version.
Audit information (log)¶
Most saved records include a log object. The backend normally supplies this information; users do not type it manually.
{
"log": {
"created_at": "2026-08-12T09:00:00-05:00",
"creator_user_id": "user-102",
"creator_first_name": "Ana",
"creator_last_name": "Gomez",
"updated_at": "2026-08-12T09:20:00-05:00",
"updater_user_id": "user-102",
"updater_first_name": "Ana",
"updater_last_name": "Gomez"
}
}
The list screens use this information to show creator/updater details and modification dates where applicable.