Forms commands
Reference for the `revenexx forms` commands — every subcommand with a runnable example.
Auto-generated. This page is generated from the revenexx CLI by
tools/sync-cli-reference.mjs. Don't edit it by hand — your changes will be overwritten.
Every revenexx forms subcommand. The example shows the required arguments; the options table lists every flag the command accepts, with a ✓ marking required flags. Some flag names carry a -_ (e.g. --attribute-_values) — that is the exact token the CLI accepts, so copy them verbatim. Run revenexx forms <command> --help for the live options.
create
Bash
revenexx forms create \
--name Price request \
--slug price-request
| Flag | Required | Description |
|---|---|---|
--name <name> | What this form is called in the Cockpit's form list. Operator-facing only — the storefront never renders it, so renaming a form breaks no page. | |
--slug <slug> | URL-safe identifier, unique per tenant. This is the name a storefront resolves a form by (\ | |
--definition [definition...] | The form itself: a FormKit schema, held as a flat ARRAY of nodes (it defaults to \ | |
--metadata <metadata> | Free-form metadata on the FORM, which this app neither reads nor writes: yours to key however an integration needs, stored and returned verbatim. (The metadata this app does write is on a SUBMISSION — see \ | |
--settings <settings> | Submit label, success message, per-form notify email, post-submit actions, translations — see the \ | |
--status <status> | Lifecycle. \ |
defaults
Bash
revenexx forms defaults
delete
Bash
revenexx forms delete \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The form, by id. |
get
Bash
revenexx forms get \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The form, by id. |
list
Bash
revenexx forms list
| Flag | Required | Description |
|---|---|---|
--id <id> | Filter to one form by id, which answers a one-row page rather than the row — \ | |
--name <name> | Filter to one form by its exact name. Whole-value equality and case-sensitive — there is no substring search on this API. | |
--slug <slug> | Filter to one form by its slug — unique per tenant, so this is how a storefront resolves a form without knowing its id. \ | |
--status <status> | Filter to one lifecycle status. \ | |
--created-at <created-at> | Filter to forms created at EXACTLY this instant. Equality, not a range: a date alone matches only a row whose timestamp is exactly that, so it selects nothing for a whole day. To read by time, sort instead (\ | |
--updated-at <updated-at> | Filter to forms last written at EXACTLY this instant — the same equality-not-range caveat as \ | |
--limit <limit> | Page size. Default 50; a value above 200 is clamped to 200 rather than refused, and \ | |
--offset <offset> | How many matching rows to skip. Page N is \ | |
--order <order> | Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400. | |
--filter <column=value> | Filter rows by column equality (repeatable). |
submissions-create
Bash
revenexx forms submissions-create \
--data '{ "key": "value" }' \
--form-id ''
| Flag | Required | Description |
|---|---|---|
--data <data> | What the visitor typed — the substance of the submission, and the reason this row is the payload of \ | |
--form-id <form-id> | The form this submission was made against. It is resolved at insert, so an id no form in this tenant holds is a 404 and nothing is stored — a submission with no form is a lead nobody can read. Required on a create: it is the only thing that says which form was filled in. | |
--form-slug <form-slug> | The form's slug as it stood when this submission arrived, copied onto the row: the inbox filters by form without a join, and a submission still says which form collected it after that form has been renamed. It does not outlive a DELETED form — the foreign key cascades and takes the submission with it. On a write the body's value WINS; omit it and the form's own slug is copied in. So: OPTIONAL — send it and it is stored as sent, even if it disagrees with the form; omit it and the form's own slug is filled in from \ | |
--metadata <metadata> | Free-form metadata, yours to key as an integration needs. The resolved notification recipient is merged OVER it at insert, so \ | |
--source <source> | Where the submission came from. The storefront sends the \ | |
--status <status> | Inbox triage. \ |
submissions-delete
Bash
revenexx forms submissions-delete \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The submission, by id. |
submissions-get
Bash
revenexx forms submissions-get \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The submission, by id. |
submissions-list
Bash
revenexx forms submissions-list
| Flag | Required | Description |
|---|---|---|
--id <id> | Filter to one submission by id, as a one-row page. \ | |
--form-id <form-id> | Filter to one form's inbox, by id — the reliable one, because it survives a rename of the slug. | |
--form-slug <form-slug> | Filter to one form's inbox by slug — the denormalised copy, so neither a join nor a prior lookup of the form is needed. | |
--source <source> | Filter to one origin, exactly as it was recorded — normally the page path the storefront sent. Whole-value equality, so it selects one page and not a prefix. | |
--status <status> | Filter to one inbox status. \ | |
--created-at <created-at> | Filter to submissions that arrived at EXACTLY this instant. Equality, not a range, so this is not how a date span is read — sort (\ | |
--updated-at <updated-at> | Filter to submissions last written at EXACTLY this instant — the same equality-not-range caveat as \ | |
--limit <limit> | Page size. Default 50; a value above 200 is clamped to 200 rather than refused, and \ | |
--offset <offset> | How many matching rows to skip. Page N is \ | |
--order <order> | Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400. | |
--filter <column=value> | Filter rows by column equality (repeatable). |
submissions-prune
Bash
revenexx forms submissions-prune
| Flag | Required | Description |
|---|---|---|
--dry-run [value] | Default TRUE. Nothing is deleted until this is explicitly false. | |
--form-slug <form-slug> | Narrow the sweep to one form. | |
--older-than-days <older-than-days> | Age threshold. Omit to use the retention floor. A value BELOW the floor is raised to it — the setting is the floor, not a default, and the floor is the LONGEST submission_retention_days configured anywhere in the tenant (see the operation description). | |
--status <status> | Narrow the sweep to one inbox status, e.g. 'spam'. |
submissions-update
Bash
revenexx forms submissions-update \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The submission, by id. | |
--data <data> | What the visitor typed — the substance of the submission, and the reason this row is the payload of \ | |
--form-id <form-id> | The form this submission was made against. It is resolved at insert, so an id no form in this tenant holds is a 404 and nothing is stored — a submission with no form is a lead nobody can read. Required on a create: it is the only thing that says which form was filled in. | |
--form-slug <form-slug> | The form's slug as it stood when this submission arrived, copied onto the row: the inbox filters by form without a join, and a submission still says which form collected it after that form has been renamed. It does not outlive a DELETED form — the foreign key cascades and takes the submission with it. On a write the body's value WINS; omit it and the form's own slug is copied in. So: OPTIONAL — send it and it is stored as sent, even if it disagrees with the form; omit it and the form's own slug is filled in from \ | |
--metadata <metadata> | Free-form metadata, yours to key as an integration needs. The resolved notification recipient is merged OVER it at insert, so \ | |
--source <source> | Where the submission came from. The storefront sends the \ | |
--status <status> | Inbox triage. \ |
update
Bash
revenexx forms update \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The form, by id. | |
--definition [definition...] | The form itself: a FormKit schema, held as a flat ARRAY of nodes (it defaults to \ | |
--metadata <metadata> | Free-form metadata on the FORM, which this app neither reads nor writes: yours to key however an integration needs, stored and returned verbatim. (The metadata this app does write is on a SUBMISSION — see \ | |
--name <name> | What this form is called in the Cockpit's form list. Operator-facing only — the storefront never renders it, so renaming a form breaks no page. | |
--settings <settings> | Submit label, success message, per-form notify email, post-submit actions, translations — see the \ | |
--slug <slug> | URL-safe identifier, unique per tenant. This is the name a storefront resolves a form by (\ | |
--status <status> | Lifecycle. \ |
vocabularies-get
Bash
revenexx forms vocabularies-get \
--name form-statuses
| Flag | Required | Description |
|---|---|---|
--name <name> | The vocabulary name — the part after the dot in the qualified id. |
vocabularies-list
Bash
revenexx forms vocabularies-list
| Flag | Required | Description |
|---|---|---|
--filter <column=value> | Filter rows by column equality (repeatable). |