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
| Flag | Required | Description |
|---|---|---|
--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" }'
| Flag | Required | Description |
|---|---|---|
--id <id> | The \ | |
--data <data> | Request body |
create
Bash
revenexx products create \
--sku ACME-4711-BLK
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The \ |
family-assign
Bash
revenexx products family-assign \
--id ''
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The \ |
grid
Bash
revenexx products grid
| Flag | Required | Description |
|---|---|---|
--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
| Flag | Required | Description |
|---|---|---|
--ids [ids...] | Product ids to name. At most 500. | |
--skus [skus...] | Product SKUs to name. At most 500. |
list
Bash
revenexx products list
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The \ |
product-associations-get
Bash
revenexx products product-associations-get \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The \ |
product-associations-list
Bash
revenexx products product-associations-list
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--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 ''
| Flag | Required | Description |
|---|---|---|
--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
| Flag | Required | Description |
|---|---|---|
--name <name> | The vocabulary name, as listed by GET /products/vocabularies. |
vocabularies-list
Bash
revenexx products vocabularies-list
| Flag | Required | Description |
|---|---|---|
--filter <column=value> | Filter rows by column equality (repeatable). |