A manifest entry names an input and binds it to a port
Three fields say what the input is called and where it goes; the rest is documentation for whoever calls the workflow.
The rule
- A manifest entry carries a
name, anode_idand aport, all required, and may carrytitle,description,examplesandrequired. - The optional metadata applies to the input side only.
- A
requiredentry is folded into the built contract's top-level list of required names rather than surviving as a key on the property fragment.
What it means
Three fields are the entry: name is what the caller calls the input, and
node_id plus port are where it lands inside the workflow. Everything else
an entry may carry — title, description, examples, required — is
metadata for whoever calls the workflow, and it applies only to the input
side; an entry that binds an output port carries none of it into the built
contract.
required is the field worth pausing on. It is not stored as a key on the
property fragment itself; it is folded into the built schema's own top-level
required list, the way JSON Schema expects required properties to be named
(MAN-16). An entry can be required without that fact ever appearing next to
its own type and default.
Example
The workflow declares one input, bound to a port, with author-facing metadata attached.
{
"name": "customer_email",
"node_id": "n1",
"port": "key",
"title": "Customer email",
"description": "Email to look up their support history.",
"examples": ["a@b.com", "c@d.com"]
}{
"type": "string",
"title": "Customer email",
"description": "Email to look up their support history.",
"examples": ["a@b.com", "c@d.com"]
}name, node_id and port decided where this property comes from; title,
description and examples only decorate it.