Flags Reference
A single reference for the boolean flags across Krios models — what each controls and its default. Modeling flags live on content types and field definitions; the rest are platform, access-control, and lifecycle flags.
Content type flags
On ContentType:
| Flag | Default | Controls |
|---|---|---|
isRoutable | false | Whether entries of this type get a URL / RouteIndex row. Pages are routable; components/blocks are not. Note the default is false — set it true for anything that should be reachable by path. |
isPublishable | true | Whether entries can be published. false makes the type draft-only (e.g. a settings singleton consumed by reference); publishing such an entry returns 422 content_type_not_publishable. |
isSingleton | false | Reserved / not yet enforced. A schema column only — there is no API to set it and nothing enforces the "one entry" rule today. Intended for site settings / global config in a future release. |
Field flags
On FieldDefinition:
| Flag | Default | Controls |
|---|---|---|
isRequired | false | Value must be present to publish — enforced at publish, not at save, so drafts may be incomplete. Required references must also be published in the same locale before the entry can publish. |
isLocalizable | false | Value is stored per-locale. When false, the value is shared across all locales (__shared). Immutable once content exists: shared and per-locale values use different storage keys, so the field-update API returns 409 is_localizable_immutable if you try to change this flag after any value has been written. Set it correctly at field creation. |
isMultiple | false | Field holds an array (multiple media, references, enum values, etc.) rather than a single value. |
isSearchable | false | Field contributes to full-text search. Only text / richtext produce search text. |
isFilterable | false | Advisory in V1 — marks the field for filtering; the GraphQL collection where input is generated but not yet applied by the resolver. Enforced in V2. |
isSortable | false | Advisory in V1 — marks the field for sorting. Collections sort by updatedAt (GraphQL) / createdAt+updatedAt (REST) today. Enforced in V2. |
isSensitive | false | PII flag (V2 behavior) — marks the field for redaction / handling policy. |
Environment flags
On Environment:
| Flag | Default | Controls |
|---|---|---|
isDefault | false | The live destination. Exactly one environment per project is the default; creation code sets it explicitly. Delivery and the admin resolve the live environment via isDefault: true. |
isLocked | false | Freezes direct edits — a locked environment can only receive content via promotion, not direct authoring. |
Workflow flags
On WorkflowDefinition:
| Flag | Default | Controls |
|---|---|---|
isDefault | false | The workflow applied to content types that don't specify one. Setting a new default clears the flag on the previous one. |
isActive | true | Whether the workflow is selectable / enforced. |
Redirect flags
On Redirect:
| Flag | Default | Controls |
|---|---|---|
isRegex | false | Treats source as a regular expression rather than an exact path (advanced redirects). |
Media flags
On MediaAsset:
| Flag | Default | Controls |
|---|---|---|
isPublic | true | Whether the asset is served via the public CDN URL. |
Access-control flags
| Flag | Model | Default | Controls |
|---|---|---|---|
isSuperAdmin | User | false | Platform super-admin — access to the tenant-management surface across tenants. |
isSystem | Role | false | Marks a built-in role (Admin, Editor, Publisher, Viewer). System roles can't be deleted. |
Lifecycle flags
These appear on many tables and behave consistently:
| Flag | Default | Controls |
|---|---|---|
isActive | true | Soft enable/disable toggle (tenants, projects, API keys, locales, workflows, …). Inactive rows are excluded from normal resolution but not deleted. |
isDeleted | false | Soft delete. Deleted rows are filtered from queries and free their unique keys (slugs, apiNames) via suffixing; never hard-deleted in V1. |
isStale | false | On a localized value / translation: the source locale changed after this translation was last updated, so it may need re-translation. |