Prices commands
Reference for the `revenexx prices` 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 prices 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 prices <command> --help for the live options.
entries-adjust
Bash
revenexx prices entries-adjust \
--list-id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--amount <amount> | Absolute change added to every unit price, in the list's currency. | |
--dry-run [value] | true writes nothing and answers the same preview — what the Cockpit dialog shows before it commits. | |
--percent <percent> | Relative change in percent: 5 raises by 5 %, -10 cuts by 10 %. | |
--rounding <rounding> | Ending the computed prices snap to (nearest match). Omit to use the tenant's bulk_adjust_rounding setting. | |
--sku-prefix <sku-prefix> | Restrict the change to entries whose SKU starts with this (a prefix, case-sensitive, no wildcards). Entries identified only by product_id never match a prefix. Omit to change the whole list. |
entries-bulk
Bash
revenexx prices entries-bulk \
--list-id '' \
--entries one two three
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--entries [entries...] | At most 5000 rows per call — send a large book in chunks. | |
--mode <mode> | Default 'upsert': a row naming a rung the list already has (same product/sku AND quantity_min) updates it. 'append' always inserts — a re-run then duplicates the ladder, which is what makes an ambiguous tier table. |
entries-create
Bash
revenexx prices entries-create \
--list-id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--metadata <metadata> | Free-form bag: whatever JSON object you write round-trips exactly, and this app never reads it. Its keys are yours. | |
--price-type <price-type> | Default 'standard'; 'on_request' is the explicit no-price marker — it STOPS resolution for this item on this list and answers "price on request" even where a cheaper list exists. | |
--product-id <product-id> | The product this rung prices. An entry needs product_id or sku — the row CHECK enforces it. | |
--quantity-min <quantity-min> | Tier threshold (Staffelpreis): this price applies from this quantity upwards (default 1). The rungs of one item are the entries sharing its identity; the highest threshold at or below the requested quantity wins. | |
--sku <sku> | The article number this rung prices (alternative to product_id). Matched exactly on resolve — never normalised or case-folded. | |
--unit <unit> | Unit of measure the price is per — free text, neither validated nor converted here. A resolve call’s \ | |
--unit-price <unit-price> | Price for ONE unit of \ | |
--valid-from <valid-from> | Start of this entry’s own validity (ISO 8601) — how a promo price is expressed: a second rung, live only for its window. null = open-ended. | |
--valid-until <valid-until> | End of this entry’s own validity; null = open-ended. Outside it the rung is skipped and the ladder resolves as if it were not there. |
entries-delete
Bash
revenexx prices entries-delete \
--list-id '' \
--id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--id <id> | The price entry, by id. An entry that belongs to a different list answers 404. |
entries-get
Bash
revenexx prices entries-get \
--list-id '' \
--id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--id <id> | The price entry, by id. An entry that belongs to a different list answers 404. |
entries-ladder
Bash
revenexx prices entries-ladder \
--list-id '' \
--base-price 9.99
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--base-price <base-price> | Price for ONE unit at the FIRST tier, in the list’s currency and on the list’s tax basis — a decimal amount in major units (19.90), never minor units/cents. | |
--discount-percent <discount-percent> | Discount applied per tier, COMPOUNDED down the ladder rather than off the base price: 5 gives 19.90 / 18.91 / 17.96. Default 0. | |
--product-id <product-id> | The item the ladder prices. | |
--quantities [quantities...] | Tier thresholds, ascending — an array of numbers or a comma-separated string ('1, 10, 50'). Duplicates are collapsed and the set is sorted. Default 1, 10, 50, at most 50 tiers. | |
--replace [value] | Default true: the item's existing entries in this list are removed first, so the ladder IS the ladder. false appends. | |
--rounding <rounding> | Ending the computed prices snap to (nearest match). Omit to use the tenant's bulk_adjust_rounding setting. | |
--sku <sku> | The item the ladder prices (alternative to product_id). | |
--unit <unit> | Unit of measure carried onto every generated tier. Free text, neither validated nor converted. |
entries-list
Bash
revenexx prices entries-list \
--list-id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--id <id> | Filter to one entry by id, within this list. | |
--product-id <product-id> | Filter to one product — the whole tier ladder that prices it, in this list. | |
--sku <sku> | Filter by exact SKU. Not a prefix and not case-insensitive — the bulk adjust route is where \ | |
--price-type <price-type> | Filter by entry type. \ | |
--quantity-min <quantity-min> | Filter to one exact tier threshold — \ | |
--unit-price <unit-price> | Filter to entries at one exact amount, in the list’s currency and on its tax basis. Equality, not a range — \ | |
--unit <unit> | Filter by exact unit of measure. | |
--valid-from <valid-from> | Exact equality on the start of the entry’s own validity — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--valid-until <valid-until> | Exact equality on the end of the entry’s own validity — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--created-at <created-at> | Exact equality on the creation instant — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--updated-at <updated-at> | Exact equality on the last change — a bulk adjust only writes the rows whose price actually moved — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--limit <limit> | Page size (default 50, max 200). | |
--offset <offset> | Row offset for pagination (default 0). | |
--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). |
entries-replace
Bash
revenexx prices entries-replace \
--list-id '' \
--entries one two three
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--entries [entries...] | The complete new entry set (set semantics). |
entries-update
Bash
revenexx prices entries-update \
--list-id '' \
--id ''
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--id <id> | The price entry, by id. An entry that belongs to a different list answers 404. | |
--metadata <metadata> | Free-form bag: whatever JSON object you write round-trips exactly, and this app never reads it. Its keys are yours. | |
--price-type <price-type> | Default 'standard'; 'on_request' is the explicit no-price marker — it STOPS resolution for this item on this list and answers "price on request" even where a cheaper list exists. | |
--product-id <product-id> | The product this rung prices. An entry needs product_id or sku — the row CHECK enforces it. | |
--quantity-min <quantity-min> | Tier threshold (Staffelpreis): this price applies from this quantity upwards (default 1). The rungs of one item are the entries sharing its identity; the highest threshold at or below the requested quantity wins. | |
--sku <sku> | The article number this rung prices (alternative to product_id). Matched exactly on resolve — never normalised or case-folded. | |
--unit <unit> | Unit of measure the price is per — free text, neither validated nor converted here. A resolve call’s \ | |
--unit-price <unit-price> | Price for ONE unit of \ | |
--valid-from <valid-from> | Start of this entry’s own validity (ISO 8601) — how a promo price is expressed: a second rung, live only for its window. null = open-ended. | |
--valid-until <valid-until> | End of this entry’s own validity; null = open-ended. Outside it the rung is skipped and the ladder resolves as if it were not there. |
lists-create
Bash
revenexx prices lists-create \
--code dealer-de \
--name Dealer prices
| Flag | Required | Description |
|---|---|---|
--code <code> | Unique list code per tenant — the handle every import and integration addresses this list by. A code already in use answers 409. | |
--name <name> | Operator-facing name, shown wherever a human picks a list. | |
--channel-id <channel-id> | Scope: only this sales channel. Beats the open lists, loses to contact and organization. | |
--contact-id <contact-id> | Scope: only this contact. The most specific scope there is — it beats organization, channel and every open list, whatever their priority. | |
--currency <currency> | ISO 4217 code (default EUR) — the currency of EVERY amount in this list, since entries carry none of their own. Resolution only considers lists matching the currency of the call; nothing is ever converted. | |
--description <description> | Free text for whoever maintains the list — why it exists and who it is for. Never shown to a buyer. | |
--is-default [value] | The fallback list. Within its group it sorts LAST, so it wins only where nothing more specific priced the item. Use prices.lists.make-default to move the flag rather than setting it here — two defaults leave a tie to row order. | |
--labels <labels> | Localised names, keyed by language tag — {"de": "Händlerpreise", "en": "Dealer prices"}. Omit to show \ | |
--metadata <metadata> | Free-form bag: whatever JSON object you write round-trips exactly, and this app never reads it. Its keys are yours — ERP provenance is the usual content. | |
--organization-id <organization-id> | Scope: only buyers of this organization. Beats channel-scoped and open lists. | |
--priority <priority> | Tie-break WITHIN a specificity group (higher wins, default 0). It never beats scope: an organization list at 0 still wins over an open list at 100. | |
--requires-auth [value] | Gate: when true the list resolves only for an authenticated buyer (contact or organization context); anonymous resolve calls get on_request. Default false (open to everyone). | |
--status <status> | Default 'active' — only active lists resolve. 'inactive' retires a list without deleting its prices. | |
--tax-basis <tax-basis> | Whether the amounts in this list are net (tax excluded) or gross (tax included) — the one fact a price cannot be without. Omit (null) to inherit the tenant's tax_inclusive_default setting; the resolve answer names which of the two decided under tax_basis_source. | |
--tax-included [value] | LEGACY mirror of tax_basis. false is the column default and is NOT read as a statement of intent; true is read as gross, and only where tax_basis is null. Prefer tax_basis. | |
--valid-from <valid-from> | Start of the validity window of the WHOLE list (ISO 8601); null = open-ended. Outside it the list is not a candidate at all. | |
--valid-until <valid-until> | End of the validity window of the whole list; null = open-ended. Lets a season expire on its own instead of being deactivated by hand. |
lists-defaults
Bash
revenexx prices lists-defaults
lists-delete
Bash
revenexx prices lists-delete \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The price list, by id. |
lists-get
Bash
revenexx prices lists-get \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The price list, by id. |
lists-list
Bash
revenexx prices lists-list
| Flag | Required | Description |
|---|---|---|
--id <id> | Filter to one list by id. The same row \ | |
--code <code> | Filter by the exact list code — the unique per-tenant handle every integration joins on. | |
--name <name> | Filter by the exact operator-facing name. Exact match, not a search: prefer \ | |
--description <description> | Filter by the exact description text. Exact match, not a search. | |
--currency <currency> | Filter to one ISO 4217 currency. Resolution only ever considers lists in the currency of the call, so this is how to see the set a given quote can draw on. | |
--status <status> | Filter by status. Only \ | |
--priority <priority> | Filter to one exact priority value — the tie-break within a specificity group. | |
--is-default [value] | Filter to the default list — the one \ | |
--tax-basis <tax-basis> | Filter by declared basis. \ | |
--tax-included [value] | Filter by the legacy gross mirror. \ | |
--requires-auth [value] | Filter to the lists that resolve only for an authenticated buyer — what an anonymous storefront will never see. | |
--contact-id <contact-id> | Filter to the lists scoped to one contact — the most specific buyer scope there is. | |
--organization-id <organization-id> | Filter to the lists scoped to one organization. | |
--channel-id <channel-id> | Filter to the lists scoped to one sales channel. | |
--valid-from <valid-from> | Exact equality on the start of the list’s validity window — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--valid-until <valid-until> | Exact equality on the end of the list’s validity window — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--created-at <created-at> | Exact equality on the creation instant — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--updated-at <updated-at> | Exact equality on the last change — matched to the stored microsecond, not a range. This app publishes no from/until query; narrow a period client-side, or by \ | |
--limit <limit> | Page size (default 50, max 200). | |
--offset <offset> | Row offset for pagination (default 0). | |
--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). |
lists-make-default
Bash
revenexx prices lists-make-default \
--list-id '' \
--data '{ "key": "value" }'
| Flag | Required | Description |
|---|---|---|
--list-id <list-id> | The price list the entries belong to. An id no list in this tenant has answers 404 rather than an empty page. | |
--data <data> | Request body |
lists-update
Bash
revenexx prices lists-update \
--id ''
| Flag | Required | Description |
|---|---|---|
--id <id> | The price list, by id. | |
--channel-id <channel-id> | Scope: only this sales channel. Beats the open lists, loses to contact and organization. | |
--code <code> | Unique list code per tenant — the handle every import and integration addresses this list by. A code already in use answers 409. | |
--contact-id <contact-id> | Scope: only this contact. The most specific scope there is — it beats organization, channel and every open list, whatever their priority. | |
--currency <currency> | ISO 4217 code (default EUR) — the currency of EVERY amount in this list, since entries carry none of their own. Resolution only considers lists matching the currency of the call; nothing is ever converted. | |
--description <description> | Free text for whoever maintains the list — why it exists and who it is for. Never shown to a buyer. | |
--is-default [value] | The fallback list. Within its group it sorts LAST, so it wins only where nothing more specific priced the item. Use prices.lists.make-default to move the flag rather than setting it here — two defaults leave a tie to row order. | |
--labels <labels> | Localised names, keyed by language tag — {"de": "Händlerpreise", "en": "Dealer prices"}. Omit to show \ | |
--metadata <metadata> | Free-form bag: whatever JSON object you write round-trips exactly, and this app never reads it. Its keys are yours — ERP provenance is the usual content. | |
--name <name> | Operator-facing name, shown wherever a human picks a list. | |
--organization-id <organization-id> | Scope: only buyers of this organization. Beats channel-scoped and open lists. | |
--priority <priority> | Tie-break WITHIN a specificity group (higher wins, default 0). It never beats scope: an organization list at 0 still wins over an open list at 100. | |
--requires-auth [value] | Gate: when true the list resolves only for an authenticated buyer (contact or organization context); anonymous resolve calls get on_request. Default false (open to everyone). | |
--status <status> | Default 'active' — only active lists resolve. 'inactive' retires a list without deleting its prices. | |
--tax-basis <tax-basis> | Whether the amounts in this list are net (tax excluded) or gross (tax included) — the one fact a price cannot be without. Omit (null) to inherit the tenant's tax_inclusive_default setting; the resolve answer names which of the two decided under tax_basis_source. | |
--tax-included [value] | LEGACY mirror of tax_basis. false is the column default and is NOT read as a statement of intent; true is read as gross, and only where tax_basis is null. Prefer tax_basis. | |
--valid-from <valid-from> | Start of the validity window of the WHOLE list (ISO 8601); null = open-ended. Outside it the list is not a candidate at all. | |
--valid-until <valid-until> | End of the validity window of the whole list; null = open-ended. Lets a season expire on its own instead of being deactivated by hand. |
resolve
Bash
revenexx prices resolve \
--items one two three
| Flag | Required | Description |
|---|---|---|
--items [items...] | Items to price, at most 200 per call — a whole cart or a whole product listing in one round trip. The answer holds one entry per item, in this order. | |
--at <at> | The instant every validity window — list and entry — is evaluated at (ISO 8601). Default now. This is how a promo price is previewed before it starts, and it is echoed as \ | |
--channel-id <channel-id> | Buyer context: the sales channel. Third scope — beats the open lists, loses to contact and organization. | |
--contact-id <contact-id> | Buyer context: the contact this quote is for. The most specific scope — a list naming this contact beats every other list, whatever their priority. Sending it (or organization_id) is also what makes the buyer AUTHENTICATED for \ | |
--currency <currency> | ISO 4217 code the quote is wanted in. ONLY lists in this currency are candidates and nothing is ever converted, so a wrong value here is not a rounding difference — it is no price at all. Omit to take the buyer market’s currency, then the tenant’s default_currency; \ | |
--market-id <market-id> | Buyer context: the market, as a uuid pin for older callers. Prefer the \ | |
--organization-id <organization-id> | Buyer context: the organization the buyer belongs to. Second most specific scope; also counts as authenticated. |
vocabularies-get
Bash
revenexx prices vocabularies-get \
--name list-statuses
| Flag | Required | Description |
|---|---|---|
--name <name> | The vocabulary name — the part after the dot in the qualified id. |
vocabularies-list
Bash
revenexx prices vocabularies-list
| Flag | Required | Description |
|---|---|---|
--filter <column=value> | Filter rows by column equality (repeatable). |