# epx shipping

> Read and change shipping zones, methods and groups, and calculate shipping fees.

## epx shipping

Reads and changes a site's shipping configuration, calculates its shipping fees and finds the
sites that ship to a postal code. Every command but find-sites requires `--site`; for an
unknown site, the lists show nothing and the quotes fail.

Its reads need no OAuth scope.
Its writes require the shipping.shipping_manage scope.

**Command:** `epx shipping [flags]`, `epx shipping [command]`

**Flags:** only the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

**Subcommands**

- [`epx shipping customers`](#epx-shipping-customers)\
  Read and change which shipping group each customer belongs to.
- [`epx shipping find-sites`](#epx-shipping-find-sites)\
  List the sites that ship to a postal code.
- [`epx shipping groups`](#epx-shipping-groups)\
  Read and change shipping groups.
- [`epx shipping quote`](#epx-shipping-quote)\
  Calculate the shipping fee of each method to a destination.
- [`epx shipping quote-minimum`](#epx-shipping-quote-minimum)\
  Calculate the lowest shipping fee to a destination.
- [`epx shipping quote-slot`](#epx-shipping-quote-slot)\
  Calculate the shipping fee of a delivery time slot.
- [`epx shipping zones`](#epx-shipping-zones)\
  Read and change shipping zones and their methods.

## epx shipping customers

Read and change which shipping group each customer belongs to.

Reads and changes which shipping group each customer of a site belongs to.

Its reads need no OAuth scope.
Its writes require the shipping.shipping_manage scope.

**Command:** `epx shipping customers [flags]`, `epx shipping customers [command]`

**Flags:** only the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

**Subcommands**

- [`epx shipping customers create`](#epx-shipping-customers-create)\
  Assign a customer to a shipping group.
- [`epx shipping customers delete`](#epx-shipping-customers-delete)\
  Remove a customer from its shipping group.
- [`epx shipping customers get`](#epx-shipping-customers-get)\
  Show one customer's shipping group.
- [`epx shipping customers list`](#epx-shipping-customers-list)\
  List the shipping groups of customers of a site.
- [`epx shipping customers update`](#epx-shipping-customers-update)\
  Change the shipping group of a customer.

## epx shipping customers create

Assign a customer to a shipping group.

Assigns a customer to a shipping group of the site `--site` names: the JSON in `--file` names
the customer id and the group's, as in `{"customerId": "C001", "groupId": "vip"}`. A customer
that belongs to a group already is a conflict (exit 5): change its group with update.
Emporix checks neither the customer nor the group: unknown ids are assigned too.

Changes data: on a terminal, epx asks before it sends POST. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping customers create [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping customers delete

Remove a customer from its shipping group.

Removes the customer CUSTOMER (the customer id) from its shipping group on the site `--site`
names. Emporix answers a CUSTOMER without a shipping group, or an unknown one, as one that
it removed (204 No Content).

Deletes data, which cannot be undone.
On a terminal, epx sends DELETE only once you type CUSTOMER at its prompt.
`--yes` sends without asking (required without a terminal);
`--dry-run` prints the request instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping customers delete CUSTOMER [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping customers get

Show one customer's shipping group.

Reads which shipping group each customer of a site belongs to. CUSTOMER is the customer
id. Emporix answers a customer without a shipping group with an empty response, so get
reports it as not found.

No OAuth scope is needed.

**Command:** `epx shipping customers get CUSTOMER [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among CUSTOMER, GROUP.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping customers list

List the shipping groups of customers of a site.

Reads which shipping group each customer of a site belongs to. CUSTOMER is the customer
id. Emporix answers a customer without a shipping group with an empty response, so get
reports it as not found.

No OAuth scope is needed.

**Command:** `epx shipping customers list [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among CUSTOMER, GROUP.
- `--limit <n>`\
  Print at most n items; paged reads stop early where they safely can (0: every item).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--stream`\
  Print items as JSON Lines as soon as they are checked, page by page on paged lists, reading up to 10000 pages where a list without it stops after 1000: a check failing on a later page exits 1 after the pages before it (excludes `-o`, `--columns` and `--no-headers`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping customers update

Change the shipping group of a customer.

Assigns the customer CUSTOMER (the customer id) to the shipping group that the JSON in `--file`
names, as create takes it, in place of the group it belongs to on the site `--site` names; a
customerId in the JSON is ignored. Emporix answers a customer without a shipping group with
409 Conflict (exit 5):
the customer has no shipping group on the site: assign it one with [`epx shipping customers create`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers-create).

Changes data: on a terminal, epx asks before it sends PUT. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping customers update CUSTOMER [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping find-sites

List the sites that ship to a postal code.

Lists the sites with a shipping zone that ships to a postal code: ZONES lists the zones that
Emporix returns with each site, and METHODS their shipping methods (`-o json` adds the
zones' destinations and fees). Emporix matched no site without `--country` on the tenant
tested.

Changes nothing: Emporix serves this read as POST with a JSON body, which the
flags make or `--body` gives whole.

No OAuth scope is needed.

**Command:** `epx shipping find-sites [flags]`

**Flags**

- `--body <FILE>`\
  Send the JSON request body in FILE as given (- reads standard input) instead of the one the other flags make.
- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among SITE, ZONES, METHODS.
- `--country <COUNTRY>`\
  The COUNTRY to ship to, a country code such as DE.
- `--limit <n>`\
  Print at most n items; paged reads stop early where they safely can (0: every item).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--postal-code <POSTAL_CODE>`\
  The POSTAL_CODE to ship to (required without `--body`).
- `--stream`\
  Print items as JSON Lines as soon as they are checked, page by page on paged lists, reading up to 10000 pages where a list without it stops after 1000: a check failing on a later page exits 1 after the pages before it (excludes `-o`, `--columns` and `--no-headers`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping groups

Read and change shipping groups.

Reads and changes the shipping groups of a site, which limit shipping fees to the customers
assigned to them ([`epx shipping customers`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers)).

Its reads need no OAuth scope.
Its writes require the shipping.shipping_manage scope.

**Command:** `epx shipping groups [flags]`, `epx shipping groups [command]`

**Flags:** only the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

**Subcommands**

- [`epx shipping groups create`](#epx-shipping-groups-create)\
  Create a shipping group.
- [`epx shipping groups delete`](#epx-shipping-groups-delete)\
  Delete a shipping group.
- [`epx shipping groups get`](#epx-shipping-groups-get)\
  Show one shipping group.
- [`epx shipping groups list`](#epx-shipping-groups-list)\
  List the shipping groups of a site.
- [`epx shipping groups update`](#epx-shipping-groups-update)\
  Replace a shipping group.

## epx shipping groups create

Create a shipping group.

Creates a shipping group of the site `--site` names from the JSON in `--file`: its id and
description, as in `{"id": "vip", "description": {"en": "Free shipping"}}`. A fee of a
shipping method applies to the customers of a group ([`epx shipping customers create`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers-create)) when
it names the group as its shippingGroupId. Emporix answers with the group's id; a group
with that id exists already: a conflict (exit 5).

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends POST. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping groups create [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping groups delete

Delete a shipping group.

Deletes the shipping group ID of the site `--site` names. Fees of shipping methods that name
it as their shippingGroupId stay and still name it, and customers assigned to it stay assigned
to it ([`epx shipping customers`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers)).
Emporix answers an unknown ID as one that it deleted (204 No Content).

Deletes data, which cannot be undone.
On a terminal, epx sends DELETE only once you type ID at its prompt.
`--yes` sends without asking (required without a terminal);
`--dry-run` prints the request instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping groups delete ID [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping groups get

Show one shipping group.

Reads the shipping groups of a site, which limit shipping fees to the customers assigned
to them ([`epx shipping customers`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers)). Emporix answers an unknown group with 409 Conflict, so
get fails with exit code 1.

No OAuth scope is needed.

**Command:** `epx shipping groups get ID [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, DESCRIPTION.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping groups list

List the shipping groups of a site.

Reads the shipping groups of a site, which limit shipping fees to the customers assigned
to them ([`epx shipping customers`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers)). Emporix answers an unknown group with 409 Conflict, so
get fails with exit code 1.

No OAuth scope is needed.

**Command:** `epx shipping groups list [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, DESCRIPTION.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--limit <n>`\
  Print at most n items; paged reads stop early where they safely can (0: every item).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--stream`\
  Print items as JSON Lines as soon as they are checked, page by page on paged lists, reading up to 10000 pages where a list without it stops after 1000: a check failing on a later page exits 1 after the pages before it (excludes `-o`, `--columns` and `--no-headers`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping groups update

Replace a shipping group.

Replaces the shipping group ID of the site `--site` names with the group in `--file`, as create
takes it. Emporix answers an unknown ID with 409 Conflict (exit 5):
the site has no shipping group with this ID: [`epx shipping groups list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-groups-list) lists them.

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends PUT. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping groups update ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping quote

Calculate the shipping fee of each method to a destination.

Calculates what each shipping method of a site's zones that ship to a destination costs for
a cart total: one row per method, with its zone, its FEE and its shipping TAX CODE. With
`--customer`, the fees of the customer's shipping group apply ([`epx shipping customers`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-customers)).
Emporix answers a destination or cart total that no method serves, or an
unknown site, with 400 Bad Request (exit 1).

Changes nothing: Emporix serves this read as POST with a JSON body, which the
flags make or `--body` gives whole.

No OAuth scope is needed.

**Command:** `epx shipping quote [flags]`

**Flags**

- `--body <FILE>`\
  Send the JSON request body in FILE as given (- reads standard input) instead of the one the other flags make.
- `--cart-total <AMOUNT CURRENCY>`\
  The cart's total as AMOUNT CURRENCY, e.g. `"100 EUR"` (required without `--body`).
- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ZONE, METHOD, NAME, FEE, TAX CODE.
- `--country <COUNTRY>`\
  The destination COUNTRY, a country code such as DE (required without `--body`).
- `--customer <CUSTOMER>`\
  The CUSTOMER id, whose shipping group's fees apply.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--postal-code <POSTAL_CODE>`\
  The destination POSTAL_CODE (required without `--body`).
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping quote-minimum

Calculate the lowest shipping fee to a destination.

Calculates the lowest shipping fee of a site to a destination for a cart total, as a cart
shows it before a delivery window is chosen. TAX CODE is the method's shipping tax code.
Emporix answers a destination or cart total that no method serves, or an
unknown site, with 400 Bad Request (exit 1).

Changes nothing: Emporix serves this read as POST with a JSON body, which the
flags make or `--body` gives whole.

No OAuth scope is needed.

**Command:** `epx shipping quote-minimum [flags]`

**Flags**

- `--body <FILE>`\
  Send the JSON request body in FILE as given (- reads standard input) instead of the one the other flags make.
- `--cart-total <AMOUNT CURRENCY>`\
  The cart's total as AMOUNT CURRENCY, e.g. `"100 EUR"` (required without `--body`).
- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among FEE, TAX CODE.
- `--country <COUNTRY>`\
  The destination COUNTRY, a country code such as DE (required without `--body`).
- `--customer <CUSTOMER>`\
  The CUSTOMER id, whose shipping group's fees apply.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--postal-code <POSTAL_CODE>`\
  The destination POSTAL_CODE (required without `--body`).
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping quote-slot

Calculate the shipping fee of a delivery time slot.

Calculates the shipping fee of a delivery time slot for a cart total: `--delivery-time` and
`--slot` are the IDs that [`epx delivery-times list`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/delivery-times#epx-delivery-times-list) and [`epx delivery-times slots list`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/delivery-times#epx-delivery-times-slots-list) show.
The destination is optional; `--country` and `--postal-code` go together. An unknown delivery
time is not found (exit 4).

Changes nothing: Emporix serves this read as POST with a JSON body, which the
flags make or `--body` gives whole.

No OAuth scope is needed.

**Command:** `epx shipping quote-slot [flags]`

**Flags**

- `--body <FILE>`\
  Send the JSON request body in FILE as given (- reads standard input) instead of the one the other flags make.
- `--cart-total <AMOUNT CURRENCY>`\
  The cart's total as AMOUNT CURRENCY, e.g. `"100 EUR"` (required without `--body`).
- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among FEE, TAX CODE.
- `--country <COUNTRY>`\
  The destination COUNTRY, a country code such as DE.
- `--customer <CUSTOMER>`\
  The CUSTOMER id, whose shipping group's fees apply.
- `--delivery-time <ID>`\
  The delivery time's ID (required without `--body`).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--postal-code <POSTAL_CODE>`\
  The destination POSTAL_CODE.
- `--site <site>`\
  Site code, e.g. main (required).
- `--slot <ID>`\
  The ID of the delivery time's slot (required without `--body`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones

Read and change shipping zones and their methods.

Reads and changes the shipping zones of a site and the shipping methods of a zone.

Its reads need no OAuth scope.
Its writes require the shipping.shipping_manage scope.

**Command:** `epx shipping zones [flags]`, `epx shipping zones [command]`

**Flags:** only the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

**Subcommands**

- [`epx shipping zones create`](#epx-shipping-zones-create)\
  Create a shipping zone.
- [`epx shipping zones delete`](#epx-shipping-zones-delete)\
  Delete a shipping zone.
- [`epx shipping zones get`](#epx-shipping-zones-get)\
  Show one shipping zone.
- [`epx shipping zones list`](#epx-shipping-zones-list)\
  List the shipping zones of a site.
- [`epx shipping zones methods`](#epx-shipping-zones-methods)\
  Read and change the shipping methods of a zone.
- [`epx shipping zones patch`](#epx-shipping-zones-patch)\
  Change members of a shipping zone.
- [`epx shipping zones update`](#epx-shipping-zones-update)\
  Replace a shipping zone.

## epx shipping zones create

Create a shipping zone.

Creates a shipping zone of the site `--site` names from the JSON in `--file`: its id, name,
shipTo (the countries it ships to, each with a postal code, or a prefix followed by \*, where
it ships to some only) and whether it is the site's default zone, as in
`{"id": "nl", "name": {"en": "Netherlands"}, "shipTo": [{"country": "NL"}], "default": true}`.
The first zone of a site becomes its default zone whatever default says.
Emporix answers with the zone's id; a zone with that id exists already: a conflict (exit 5).

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends POST. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones create [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones delete

Delete a shipping zone.

Deletes the shipping zone ID of the site `--site` names with its shipping methods. Delivery
times of the zone stay and still name it: delete them with [`epx delivery-times delete ID`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/delivery-times#epx-delivery-times-delete).
An unknown ID is not found (exit 4).

Deletes data, which cannot be undone.
On a terminal, epx sends DELETE only once you type ID at its prompt.
`--yes` sends without asking (required without a terminal);
`--dry-run` prints the request instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones delete ID [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones get

Show one shipping zone.

Reads the shipping zones of a site. SHIPS TO lists the countries of the zone, each with
its postal codes when they are limited (a trailing \* matches every code that starts that
way).

No OAuth scope is needed.

**Command:** `epx shipping zones get ID [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, NAME, DEFAULT, SHIPS TO.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones list

List the shipping zones of a site.

Reads the shipping zones of a site. SHIPS TO lists the countries of the zone, each with
its postal codes when they are limited (a trailing \* matches every code that starts that
way).

No OAuth scope is needed.

**Command:** `epx shipping zones list [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, NAME, DEFAULT, SHIPS TO.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--limit <n>`\
  Print at most n items; paged reads stop early where they safely can (0: every item).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--stream`\
  Print items as JSON Lines as soon as they are checked, page by page on paged lists, reading up to 10000 pages where a list without it stops after 1000: a check failing on a later page exits 1 after the pages before it (excludes `-o`, `--columns` and `--no-headers`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods

Read and change the shipping methods of a zone.

Reads and changes the shipping methods of a zone of a site.

Its reads need no OAuth scope.
Its writes require the shipping.shipping_manage scope.

**Command:** `epx shipping zones methods [flags]`, `epx shipping zones methods [command]`

**Flags:** only the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

**Subcommands**

- [`epx shipping zones methods create`](#epx-shipping-zones-methods-create)\
  Create a shipping method of a zone.
- [`epx shipping zones methods delete`](#epx-shipping-zones-methods-delete)\
  Delete a shipping method of a zone.
- [`epx shipping zones methods get`](#epx-shipping-zones-methods-get)\
  Show one shipping method of a zone.
- [`epx shipping zones methods list`](#epx-shipping-zones-methods-list)\
  List the shipping methods of a zone.
- [`epx shipping zones methods patch`](#epx-shipping-zones-methods-patch)\
  Change members of a shipping method of a zone.
- [`epx shipping zones methods update`](#epx-shipping-zones-methods-update)\
  Replace a shipping method of a zone.

## epx shipping zones methods create

Create a shipping method of a zone.

Creates a shipping method of a zone from the JSON in `--file`: its id, name, active, fees
(each a cost from a minOrderValue, optionally for the customers of a shippingGroupId),
maxOrderValue and shippingTaxCode, as
[`epx shipping zones methods get SHIPPING_ZONE_ID ID -o json`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-methods-get) prints one. Emporix answers
with the method's id; a method with that id exists already: a conflict (exit 5).
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends POST. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones methods create SHIPPING_ZONE_ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods delete

Delete a shipping method of a zone.

Deletes the shipping method ID of a zone. The time slots of delivery times that name it
stay and still name it.
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.
ID is the ID that [`epx shipping zones methods list SHIPPING_ZONE_ID --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-methods-list) shows; an unknown one is not found.

Deletes data, which cannot be undone.
On a terminal, epx sends DELETE only once you type ID at its prompt.
`--yes` sends without asking (required without a terminal);
`--dry-run` prints the request instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones methods delete SHIPPING_ZONE_ID ID [flags]`

**Flags**

- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods get

Show one shipping method of a zone.

Reads one shipping method of a zone.
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.
ID is the ID that [`epx shipping zones methods list SHIPPING_ZONE_ID --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-methods-list) shows; an unknown one is not found.
FEES lists each fee as its cost from a minimum order value, with the shipping group it is
limited to in parentheses; MAX ORDER is the highest order value the method accepts.

No OAuth scope is needed.

**Command:** `epx shipping zones methods get SHIPPING_ZONE_ID ID [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, NAME, ACTIVE, FEES, MAX ORDER, TAX CODE, GROUP.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods list

List the shipping methods of a zone.

Reads the shipping methods of a zone.
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.
FEES lists each fee as its cost from a minimum order value, with the shipping group it is
limited to in parentheses; MAX ORDER is the highest order value the method accepts.

No OAuth scope is needed.

**Command:** `epx shipping zones methods list SHIPPING_ZONE_ID [flags]`

**Flags**

- `--columns <names>`\
  Print only these columns of table and csv, in this order: comma-separated names (any case) among ID, NAME, ACTIVE, FEES, MAX ORDER, TAX CODE, GROUP.
- `--language <language>`\
  Language of localized table text; a missing translation shows another, labeled (`-o json` prints all). Default: `en`.
- `--limit <n>`\
  Print at most n items; paged reads stop early where they safely can (0: every item).
- `--no-headers`\
  Print table and csv without the header row.
- `-o, --output <format>`\
  Output format: table, json, yaml or csv (csv: the table's rows; json and yaml: the whole response). Default: `table`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--stream`\
  Print items as JSON Lines as soon as they are checked, page by page on paged lists, reading up to 10000 pages where a list without it stops after 1000: a check failing on a later page exits 1 after the pages before it (excludes `-o`, `--columns` and `--no-headers`).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods patch

Change members of a shipping method of a zone.

Changes the members of the shipping method ID of a zone that the JSON in `--file` names, such
as active or fees; the others keep their values.
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.
ID is the ID that [`epx shipping zones methods list SHIPPING_ZONE_ID --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-methods-list) shows; an unknown one is not found.

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends PATCH. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones methods patch SHIPPING_ZONE_ID ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones methods update

Replace a shipping method of a zone.

Replaces the shipping method ID of a zone with the method in `--file`, as create takes it: a
member that it leaves out is removed.
SHIPPING_ZONE_ID is the ID that [`epx shipping zones list --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-list) shows; an unknown one is not found.
ID is the ID that [`epx shipping zones methods list SHIPPING_ZONE_ID --site S`](https://commerce-cloud-integrations.github.io/emporix-cli/commands/shipping#epx-shipping-zones-methods-list) shows; an unknown one is not found.

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends PUT. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones methods update SHIPPING_ZONE_ID ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones patch

Change members of a shipping zone.

Changes the members of the shipping zone ID of the site `--site` names that the JSON in
`--file` names, such as name or shipTo; the others keep their values, and a name merges into
the zone's translations, per language. An unknown ID is not found (exit 4).

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends PATCH. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones patch ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).

## epx shipping zones update

Replace a shipping zone.

Replaces the shipping zone ID of the site `--site` names with the zone in `--file`, as create
takes it: a member that it leaves out is removed, and a name given as a string in one
language (`--content-language` LANGUAGE) replaces every translation of it. Emporix refuses
to make the default zone of a site not default (400 Bad Request, exit 1). An unknown ID is
not found (exit 4).

Localized text in the body, such as a name, is a map of translations, e.g.
`{"en": "Netherlands", "nl": "Nederland"}`, as `-o json` of a read prints it, sent without a
Content-Language header (`--content-language` \*, the default), or with
`--content-language` LANGUAGE a string in that language, sent with that Content-Language,
e.g. `"Netherlands"` with `--content-language` en.

Changes data: on a terminal, epx asks before it sends PUT. `--yes` sends without
asking (required without a terminal, or with `--file` -); `--dry-run` prints the request
instead of sending it.

Requires the shipping.shipping_manage scope.

**Command:** `epx shipping zones update ID [flags]`

**Flags**

- `--content-language <LANGUAGE>`\
  The LANGUAGE of localized text in the body, or \* for maps of translations, sent without Content-Language. Default: `*`.
- `--dry-run`\
  Print the request instead of sending it (excludes `-o`).
- `--file <PATH>`\
  JSON request body in PATH, sent byte for byte (- reads standard input; sending it then needs `--yes`; required).
- `-o, --output <format>`\
  Format of the response: json or yaml. Default: `json`.
- `--site <site>`\
  Site code, e.g. main (required).
- `--yes`\
  Send without asking (required without a terminal, or with `--file` -).

Also takes the [global flags](https://commerce-cloud-integrations.github.io/emporix-cli/commands#global-flags).
