Seed files
Every key of config/search/synonyms.yaml, config/tags/vocabulary.yaml and config/tags/smartlists.yaml, the files commands import into the database, and of the seed/organisations and seed/people records.
The first three files below seed data the database then owns. Each is read by a command, never reconciled at boot; after that, staff edit the data in the admin. engine-dmo seed apply also reads all three when they exist.
| File | Read by | Holds |
|---|---|---|
config/search/synonyms.yaml | engine-dmo search synonyms import | Search synonyms. Rules already held are left alone |
config/tags/vocabulary.yaml | engine-dmo tags import | The tag vocabulary. Existing keys are left alone. engine-dmo tags export writes the live vocabulary back |
config/tags/smartlists.yaml | engine-dmo seed apply | Smart lists. engine-dmo check and engine-dmo lists check validate them against the schema and the vocabulary |
search/synonyms.yaml
| Key | Type | Default | Meaning |
|---|---|---|---|
synonyms | list of objects | [] | Search synonym rules |
synonyms[].from | string | A one-way rule: this word also finds terms | |
synonyms[].locale | string | Every locale | The locale it applies in |
synonyms[].sites | list of string | Every site | The sites it applies on |
synonyms[].terms | list of string | Required | Words that mean the same; with from, what it expands to |
tags/vocabulary.yaml
| Key | Type | Default | Meaning |
|---|---|---|---|
tags | list of objects | [] | The tag tree |
tags[].children | list of objects | [] | Child tags, with the same keys, to any depth. Each child’s key is the full dotted key under its parent (stay.hotel under stay) |
tags[].colour | string | Its colour in the admin | |
tags[].key | string | Required | The tag’s key |
tags[].kind | string | topic; a child takes its parent’s | topic, audience, operational or internal |
tags[].label | map of string | Its label per locale | |
tags[].public | boolean | true; a child takes its parent’s | Listed to the public, in the content API’s tag list |
tags/smartlists.yaml
| Key | Type | Default | Meaning |
|---|---|---|---|
smart_lists | list of objects | [] | Seeded smart lists: saved queries over content or the CRM |
smart_lists[].key | string | Required | The list’s key |
smart_lists[].limit | integer | The most rows | |
smart_lists[].name | map of string | Its name per locale | |
smart_lists[].public | boolean | Templates may read it | |
smart_lists[].query | map of any | Required | The query, by field |
smart_lists[].site | string | The site it belongs to | |
smart_lists[].sort | object | Its order | |
smart_lists[].sort.direction | string | asc or desc | |
smart_lists[].sort.field | string | The field it sorts by | |
smart_lists[].subject | string | Required | What it lists |
seed/organisations and seed/people
engine-dmo: one YAML file per record, under seed/, read by engine-dmo seed apply. Organisations and people has an example of each.
organisations/<key>.yaml
| Key | Type | Default | Meaning |
|---|---|---|---|
key | string | The file name | The key a document’s organisation: names |
name | string | Required | The organisation’s name |
legal_name | string | Its legal name | |
status | string | active | prospect, active, lapsed or archived |
email, website | string | Its own address and website | |
phone, address | map of any | Stored as given | |
custom | map of any | The fields of config/crm/organisation.yaml, by handle | |
tags | list of string | Vocabulary tag keys | |
network | string | The first membership’s site’s, else the default site’s | The network’s key |
trash | boolean | false | Puts it in the trash once everything else is done |
contacts[].person | string | A people/ key or a contact’s email. Each contact needs this or name | |
contacts[].name, .email, .phone, .custom | The details of a person created for this contact | ||
contacts[].role | string | The job title, free text | |
contacts[].partner_role | string | contact | The partner role’s key |
contacts[].is_primary | boolean | false | The primary contact |
contacts[].started_on, .ended_on | date | ended_on makes a former contact | |
memberships[].site | string | The default site | The site’s key |
memberships[].tier | string | The tier’s key | |
memberships[].status | string | active | pending, active, lapsed or cancelled |
memberships[].joined_on, .renews_on, .ended_on | date | Its dates | |
memberships[].amount, .currency, .external_ref, .notes | string | The fee, its currency, your reference and staff notes | |
memberships[].history[] | list of objects | Later changes in order: tier, status, renews_on, ended_on, amount, reason | |
invitations[].email, .name, .role, .partner_role | string | Who is invited | |
invitations[].site | string | The default site | The site |
invitations[].by | string | Required | A people/ key or contact’s email, holding people.invite |
invitations[].accepted | boolean | false | Accept it at once |
people/<key>.yaml
| Key | Type | Default | Meaning |
|---|---|---|---|
key | string | The file name | The key a contact’s person: names |
name | string | given_name and family_name | The display name |
given_name, family_name | string | The parts of the name | |
email | string | Their address | |
phone, custom | map of any | Their phone, and the fields of config/crm/person.yaml by handle | |
marketing_consent | date | When they consented to marketing | |
network | string | The default site’s | The network’s key |
tags | list of string | Vocabulary tag keys | |
trash | boolean | false | Puts them in the trash once everything else is done |
AI prompt overrides
Every key of an AI prompt override file in config/ai/prompts/<key>.yaml.
Template API
How to get the complete, generated template surface for your own project (every global, filter, tag, field type, your types and fields, routes and components) from engine-dmo template api, docs serve, describe and guide.