OpenWOP openwop.dev

Status: Stable · v2.1.0 (2026-09-11) · RFC 0177, RFC 0137.

Why this exists

A form-content pack ships declarative form templates a host renders in its own chrome. v1 templates had no conditional visibility, no localization, and no validation beyond required and format. v2 adds all three by reusing constructs the corpus already defines. The manifest is schemas/v2/form-content-pack-manifest.schema.json; installation and signing follow packs.md.

Conditional visibility

A field MAY carry when: <EdgeCondition>. The grammar is the WorkflowEdge.condition object { type, left, right } of schemas/v2/workflow-definition.schema.json, with the operator set of workflow-chain-packs.md §"Edge conditions": type is one of expression, equals, notEquals, contains, regex, truthy, falsy; truthy and falsy take left only. A host MUST evaluate when with its edge-condition semantics and MUST NOT accept any other expression language for visibility.

{ "id": "region", "type": "select", "label": "Region",
  "when": { "type": "equals", "left": "fields.shipping", "right": "international" } }

Localized strings

label, title, and description are localized strings. A host MUST select the rendered language by the locale-selection and fallback rules of i18n.md, and MUST treat every rendered string as untrusted: escaped for the target surface, never interpreted as markup, script, or a template directive.

Validation

ConstraintApplies toRule
requiredany typethe value MUST be present
formattext, longtextone of email, uri, date, date-time, time, or x-<format>
minLengthtext, longtexta host MUST reject a shorter value
min, maxnumbera host MUST reject a value outside the closed range
patterntext, longtexta host MUST reject a non-matching value

The five spec-reserved format values are the core set. A host that recognizes a format SHOULD apply it; one that does not MUST ignore it and accept plain text. A host MUST ignore format on any type other than text or longtext.