Products commands

Reference for the `revenexx products` 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 products 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 products <command> --help for the live options.

batch

Bash
revenexx products batch
FlagRequiredDescription
--ids [ids...]Product ids, when the caller already holds them.
--skus [skus...]Product SKUs — the identifier a foreign system carries, which is why this route exists at all.

completeness

Bash
revenexx products completeness \
    --id '' \
    --data '{ "key": "value" }'
FlagRequiredDescription
--id <id>The \
--data <data>Request body

create

Bash
revenexx products create \
    --sku ACME-4711-BLK
FlagRequiredDescription
--sku <sku>The merchant's own article number — unique per tenant, and the value every integration (ERP, shop, feed, price list) joins on. The one identifier a person types, and the fallback this app shows when the catalog holds no name.
--attribute-values <attribute-values>Every attribute value the record carries, in ONE jsonb document — the core of an attribute-driven PIM. A record's properties are not columns here: they are rows in \
--completeness <completeness>How much of what this product's family REQUIRES it actually carries — the number a merchandiser works down. \
--deleted-at <deleted-at>When the product was soft-deleted. \
--enabled [value]Whether the product is offered. A create defaults it from the \
--family-id <family-id>The family that decides which attributes this product HAS. Without one nothing is required, completeness cannot be computed and the display name never resolves — \
--family-variant-id <family-variant-id>Which variant structure of the family this product follows — the axes it splits on. Null on a simple product.
--kind <kind>Where the product sits in the variant hierarchy. 'simple' stands on its own. 'model' carries the values its variants share and is never sold itself. 'variant' carries the axis values and points at its model through \
--parent-id <parent-id>The product MODEL this variant belongs to. Only a \
--quantified-associations <quantified-associations>The import-side mirror of associations that carry a quantity — a bundle, a bill of materials, a spare-parts set. NOTHING IN THIS APP READS OR WRITES IT: no route produces it, no route consumes it, and it is null on every product this app has created. The surface that IS served is relational — \
--tax-class <tax-class>The tax class key the prices app resolves a VAT rate from. Free text here — the vocabulary belongs to the app that prices, and \

delete

Bash
revenexx products delete \
    --id ''
FlagRequiredDescription
--id <id>The \

family-assign

Bash
revenexx products family-assign \
    --id ''
FlagRequiredDescription
--id <id>The \
--family-code <family-code>Alternative to family_id — a \
--family-id <family-id>The family to assign.

get

Bash
revenexx products get \
    --id ''
FlagRequiredDescription
--id <id>The \

grid

Bash
revenexx products grid
FlagRequiredDescription
--limit <limit>Page size (default 50, max 200). A larger value is clamped rather than refused.
--offset <offset>Row offset for pagination (default 0). Page with \
--order <order>Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.
--q <q>Case-insensitive substring of the display name (or the SKU, when there is no name).
--kind <kind>Restrict to one product kind.
--enabled [value]Restrict to enabled or disabled products.
--family-id <family-id>Restrict to one family. A family id that does not exist is not an error here — it simply matches nothing.

labels

Bash
revenexx products labels
FlagRequiredDescription
--ids [ids...]Product ids to name. At most 500.
--skus [skus...]Product SKUs to name. At most 500.

list

Bash
revenexx products list
FlagRequiredDescription
--limit <limit>Page size (default 50, max 200). A larger value is clamped rather than refused.
--offset <offset>Row offset for pagination (default 0). Page with \
--order <order>Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.
--id <id>Exact match on \
--sku <sku>Exact match on \
--kind <kind>Exact match on \
--parent-id <parent-id>Exact match on \
--family-id <family-id>Exact match on \
--family-variant-id <family-variant-id>Exact match on \
--enabled [value]Exact match on \
--tax-class <tax-class>Exact match on \
--attribute-values <attribute-values>Exact match on \
--label <label>Exact match on \
--quantified-associations <quantified-associations>Exact match on \
--completeness <completeness>Exact match on \
--created-at <created-at>Exact match on \
--updated-at <updated-at>Exact match on \
--deleted-at <deleted-at>Exact match on \
--filter <column=value>Filter rows by column equality (repeatable).

product-associations-create

Bash
revenexx products product-associations-create \
    --association-type-id '' \
    --product-id '' \
    --target-product-id ''
FlagRequiredDescription
--association-type-id <association-type-id>Which kind of relation this is — the \
--product-id <product-id>The product the relation starts at — the one whose detail page shows it.
--target-product-id <target-product-id>The product the relation points at — the accessory, the spare part, the cross-sell.
--position <position>Order in which the targets are shown, ascending.
--quantity <quantity>How many of the target belong to the source — the 4 in "this bundle contains 4 casters". Only meaningful when the association type carries \

product-associations-delete

Bash
revenexx products product-associations-delete \
    --id ''
FlagRequiredDescription
--id <id>The \

product-associations-get

Bash
revenexx products product-associations-get \
    --id ''
FlagRequiredDescription
--id <id>The \

product-associations-list

Bash
revenexx products product-associations-list
FlagRequiredDescription
--limit <limit>Page size (default 50, max 200). A larger value is clamped rather than refused.
--offset <offset>Row offset for pagination (default 0). Page with \
--order <order>Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.
--id <id>Exact match on \
--product-id <product-id>Exact match on \
--association-type-id <association-type-id>Exact match on \
--target-product-id <target-product-id>Exact match on \
--quantity <quantity>Exact match on \
--position <position>Exact match on \
--created-at <created-at>Exact match on \
--filter <column=value>Filter rows by column equality (repeatable).

product-associations-update

Bash
revenexx products product-associations-update \
    --id ''
FlagRequiredDescription
--id <id>The \
--association-type-id <association-type-id>Which kind of relation this is — the \
--position <position>Order in which the targets are shown, ascending.
--product-id <product-id>The product the relation starts at — the one whose detail page shows it.
--quantity <quantity>How many of the target belong to the source — the 4 in "this bundle contains 4 casters". Only meaningful when the association type carries \
--target-product-id <target-product-id>The product the relation points at — the accessory, the spare part, the cross-sell.

update

Bash
revenexx products update \
    --id ''
FlagRequiredDescription
--id <id>The \
--attribute-values <attribute-values>Every attribute value the record carries, in ONE jsonb document — the core of an attribute-driven PIM. A record's properties are not columns here: they are rows in \
--completeness <completeness>How much of what this product's family REQUIRES it actually carries — the number a merchandiser works down. \
--deleted-at <deleted-at>When the product was soft-deleted. \
--enabled [value]Whether the product is offered. A create defaults it from the \
--family-id <family-id>The family that decides which attributes this product HAS. Without one nothing is required, completeness cannot be computed and the display name never resolves — \
--family-variant-id <family-variant-id>Which variant structure of the family this product follows — the axes it splits on. Null on a simple product.
--kind <kind>Where the product sits in the variant hierarchy. 'simple' stands on its own. 'model' carries the values its variants share and is never sold itself. 'variant' carries the axis values and points at its model through \
--parent-id <parent-id>The product MODEL this variant belongs to. Only a \
--quantified-associations <quantified-associations>The import-side mirror of associations that carry a quantity — a bundle, a bill of materials, a spare-parts set. NOTHING IN THIS APP READS OR WRITES IT: no route produces it, no route consumes it, and it is null on every product this app has created. The surface that IS served is relational — \
--sku <sku>The merchant's own article number — unique per tenant, and the value every integration (ERP, shop, feed, price list) joins on. The one identifier a person types, and the fallback this app shows when the catalog holds no name.
--tax-class <tax-class>The tax class key the prices app resolves a VAT rate from. Free text here — the vocabulary belongs to the app that prices, and \

vocabularies-get

Bash
revenexx products vocabularies-get \
    --name product-kinds
FlagRequiredDescription
--name <name>The vocabulary name, as listed by GET /products/vocabularies.

vocabularies-list

Bash
revenexx products vocabularies-list
FlagRequiredDescription
--filter <column=value>Filter rows by column equality (repeatable).
Was this page helpful?