<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="content_v2.html">Content API for Shopping</a> . <a href="content_v2.shippingsettings.html">shippingsettings</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves and updates the shipping settings of multiple accounts in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the shipping settings of the account.</p>
<p class="toc_element">
  <code><a href="#getsupportedcarriers">getsupportedcarriers(merchantId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves supported carriers and carrier services for an account.</p>
<p class="toc_element">
  <code><a href="#getsupportedholidays">getsupportedholidays(merchantId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves supported holidays for an account.</p>
<p class="toc_element">
  <code><a href="#getsupportedpickupservices">getsupportedpickupservices(merchantId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves supported pickup services for an account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageToken=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the shipping settings of the sub-accounts in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(merchantId, accountId, body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the shipping settings of the account. Any fields that are not provided are deleted from the resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="custombatch">custombatch(body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Retrieves and updates the shipping settings of multiple accounts in a single request.

Args:
  body: object, The request body.
    The object takes the form of:

{
    &quot;entries&quot;: [ # The request entries to be processed in the batch.
      { # A batch entry encoding a single non-batch shippingsettings request.
        &quot;shippingSettings&quot;: { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role. # The account shipping settings to update. Only defined if the method is `update`.
          &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
            {
              &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                  &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
              &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
            },
          ],
          &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
          &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
                &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
                &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
              },
              &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
              &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
              &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
                {
                  &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
                    &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                    &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                    &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                    &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                  },
                  &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
                    &quot;A String&quot;,
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                    {
                      &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                        {
                          &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                            { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                              &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                              },
                              &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                              &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                              &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                              &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                            },
                          ],
                        },
                      ],
                      &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                        &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                          },
                        ],
                        &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                            &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                          },
                        ],
                        &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                        &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                              &quot;A String&quot;,
                            ],
                          },
                        ],
                        &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                        &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                          },
                        ],
                        &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                            &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                          },
                        ],
                        &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                        &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                              &quot;A String&quot;,
                            ],
                          },
                        ],
                        &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    },
                  ],
                  &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                    {
                      &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                      &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                      &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                    },
                  ],
                  &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                            },
                            &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                            &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                            &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                            &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                          },
                        ],
                      },
                    ],
                    &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                  },
                },
              ],
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
                &quot;storeCodeSetWithMovs&quot;: [
                  { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
                    &quot;value&quot;: { # The minimum order value for the given stores.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                      &quot;A String&quot;,
                    ],
                  },
                ],
              },
              &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
              &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
              &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
                &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
                  &quot;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                        },
                      ],
                    },
                  ],
                  &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
                    &quot;A String&quot;,
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
                    &quot;A String&quot;,
                  ],
                },
                &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
                &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
                &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
                &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                    &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                    &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                    &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                    &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                  },
                ],
                &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                  &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
                  &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                  &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
                },
                &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
              },
            },
          ],
        },
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`get`&quot; - &quot;`update`&quot;
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account for which to get/update account shipping settings.
      },
    ],
  }

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;entries&quot;: [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch shipping settings response.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#shippingsettingsCustomBatchResponseEntry`&quot;
        &quot;batchId&quot;: 42, # The ID of the request entry to which this entry responds.
        &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if, and only if, the request failed.
          &quot;errors&quot;: [ # A list of errors.
            { # An error returned by the API.
              &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
              &quot;message&quot;: &quot;A String&quot;, # A description of the error.
              &quot;reason&quot;: &quot;A String&quot;, # The error code.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
          &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
        },
        &quot;shippingSettings&quot;: { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role. # The retrieved or updated account shipping settings.
          &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
            {
              &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                  &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
              &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
            },
          ],
          &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
          &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
                &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
                &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
              },
              &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
              &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
              &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
                {
                  &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
                    &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                    &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                    &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                    &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                  },
                  &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
                    &quot;A String&quot;,
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                    {
                      &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                        {
                          &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                            { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                              &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                              },
                              &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                              &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                              &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                              &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                            },
                          ],
                        },
                      ],
                      &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                        &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                          },
                        ],
                        &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                            &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                          },
                        ],
                        &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                        &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                              &quot;A String&quot;,
                            ],
                          },
                        ],
                        &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                        &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                          },
                        ],
                        &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                            &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                          },
                        ],
                        &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                        &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                          {
                            &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                              &quot;A String&quot;,
                            ],
                          },
                        ],
                        &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    },
                  ],
                  &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                    {
                      &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                      &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                      &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                    },
                  ],
                  &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                            },
                            &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                            &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                            &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                            &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                          },
                        ],
                      },
                    ],
                    &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                  },
                },
              ],
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
                &quot;storeCodeSetWithMovs&quot;: [
                  { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
                    &quot;value&quot;: { # The minimum order value for the given stores.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                      &quot;A String&quot;,
                    ],
                  },
                ],
              },
              &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
              &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
              &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
                &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
                  &quot;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                        },
                      ],
                    },
                  ],
                  &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
                    &quot;A String&quot;,
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
                    &quot;A String&quot;,
                  ],
                },
                &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
                &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
                &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
                &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                    &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                    &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                    &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                    &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                  },
                ],
                &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                  &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
                  &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                  &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
                },
                &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
              },
            },
          ],
        },
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsCustomBatchResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, accountId, x__xgafv=None)</code>
  <pre>Retrieves the shipping settings of the account.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which to get/update shipping settings. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
    &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
      {
        &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
            &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
        &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
      },
    ],
    &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
    &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
          &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
          &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
        },
        &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
        &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
        &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
          {
            &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
              &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
              &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
              &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
              &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
            },
            &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
              &quot;A String&quot;,
            ],
            &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
              {
                &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                  {
                    &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                      { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                        &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                        &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                        &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                        &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                        &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                      },
                    ],
                  },
                ],
                &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                  &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                    },
                  ],
                  &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                        &quot;A String&quot;,
                      ],
                    },
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                },
                &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                  &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                    },
                  ],
                  &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                        &quot;A String&quot;,
                      ],
                    },
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              },
            ],
            &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
              {
                &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
                &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
              },
            ],
            &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                      &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                      &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                      &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                    },
                  ],
                },
              ],
              &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
            },
          },
        ],
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
          &quot;storeCodeSetWithMovs&quot;: [
            { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
              &quot;value&quot;: { # The minimum order value for the given stores.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
        &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
        &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
          &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
            &quot;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                  },
                ],
              },
            ],
            &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
              &quot;A String&quot;,
            ],
            &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
              &quot;A String&quot;,
            ],
          },
          &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
          &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
          &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
          &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
              &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
              &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
              &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
              &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
            },
          ],
          &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
            &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
            &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
            &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
          },
          &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getsupportedcarriers">getsupportedcarriers(merchantId, x__xgafv=None)</code>
  <pre>Retrieves supported carriers and carrier services for an account.

Args:
  merchantId: string, The ID of the account for which to retrieve the supported carriers. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedCarriersResponse&quot;.
    &quot;carriers&quot;: [ # A list of supported carriers. May be empty.
      {
        &quot;services&quot;: [ # A list of supported services (e.g., `&quot;ground&quot;`) for that carrier. Contains at least one service.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name of the carrier (e.g., `&quot;UPS&quot;`). Always present.
        &quot;country&quot;: &quot;A String&quot;, # The CLDR country code of the carrier (e.g., &quot;US&quot;). Always present.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getsupportedholidays">getsupportedholidays(merchantId, x__xgafv=None)</code>
  <pre>Retrieves supported holidays for an account.

Args:
  merchantId: string, The ID of the account for which to retrieve the supported holidays. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedHolidaysResponse&quot;.
    &quot;holidays&quot;: [ # A list of holidays applicable for delivery guarantees. May be empty.
      {
        &quot;deliveryGuaranteeHour&quot;: &quot;A String&quot;, # Hour of the day in the delivery location&#x27;s timezone on the guaranteed delivery date by which the order has to arrive at the customer&#x27;s. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Always present.
        &quot;date&quot;: &quot;A String&quot;, # Date of the holiday, in ISO 8601 format. E.g. &quot;2016-12-25&quot; for Christmas 2016. Always present.
        &quot;type&quot;: &quot;A String&quot;, # The holiday type. Always present. Acceptable values are: - &quot;`Christmas`&quot; - &quot;`Easter`&quot; - &quot;`Father&#x27;s Day`&quot; - &quot;`Halloween`&quot; - &quot;`Independence Day (USA)`&quot; - &quot;`Mother&#x27;s Day`&quot; - &quot;`Thanksgiving`&quot; - &quot;`Valentine&#x27;s Day`&quot;
        &quot;deliveryGuaranteeDate&quot;: &quot;A String&quot;, # Date on which the order has to arrive at the customer&#x27;s, in ISO 8601 format. E.g. &quot;2016-12-24&quot; for 24th December 2016. Always present.
        &quot;countryCode&quot;: &quot;A String&quot;, # The CLDR territory code of the country in which the holiday is available. E.g. &quot;US&quot;, &quot;DE&quot;, &quot;GB&quot;. A holiday cutoff can only be configured in a shipping settings service with matching delivery country. Always present.
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the holiday to be used when configuring holiday cutoffs. Always present.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getsupportedpickupservices">getsupportedpickupservices(merchantId, x__xgafv=None)</code>
  <pre>Retrieves supported pickup services for an account.

Args:
  merchantId: string, The ID of the account for which to retrieve the supported pickup services. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;pickupServices&quot;: [ # A list of supported pickup services. May be empty.
      {
        &quot;country&quot;: &quot;A String&quot;, # The CLDR country code of the carrier (e.g., &quot;US&quot;). Always present.
        &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Always present.
        &quot;carrierName&quot;: &quot;A String&quot;, # The name of the carrier (e.g., `&quot;UPS&quot;`). Always present.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedPickupServicesResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None, x__xgafv=None)</code>
  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account.

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client account. (required)
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of shipping settings to return in the response, used for paging.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of shipping settings.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsListResponse&quot;.
    &quot;resources&quot;: [
      { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
        &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
          {
            &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
              {
                &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
            &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
          },
        ],
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
        &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
          {
            &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
            &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
              &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
              &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
            },
            &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
            &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
            &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
              {
                &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
                  &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                  &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                  &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                  &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                  &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                },
                &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
                  &quot;A String&quot;,
                ],
                &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                  {
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                            },
                            &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                            &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                            &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                            &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                          },
                        ],
                      },
                    ],
                    &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                      &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                        },
                      ],
                      &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                            &quot;A String&quot;,
                          ],
                        },
                      ],
                      &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                  },
                ],
                &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                  {
                    &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                    &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                    &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
                    &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                  },
                ],
                &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                  &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                    {
                      &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                        { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                          &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                          },
                          &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                          &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                          &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                          &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                        },
                      ],
                    },
                  ],
                  &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                    &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                      },
                    ],
                    &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                          &quot;A String&quot;,
                        ],
                      },
                    ],
                    &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                    &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                      },
                    ],
                    &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                          &quot;A String&quot;,
                        ],
                      },
                    ],
                    &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                },
              },
            ],
            &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
            &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
              &quot;storeCodeSetWithMovs&quot;: [
                { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
                  &quot;value&quot;: { # The minimum order value for the given stores.
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                  &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
            &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
            &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
              &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
                &quot;rows&quot;: [
                  {
                    &quot;values&quot;: [
                      {
                        &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                        &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                      },
                    ],
                  },
                ],
                &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
                  &quot;A String&quot;,
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
                  &quot;A String&quot;,
                ],
              },
              &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
              &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
              &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
              &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                {
                  &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                  &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                  &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                  &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                  &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                },
              ],
              &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
                &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
              },
              &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
            },
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="update">update(merchantId, accountId, body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Updates the shipping settings of the account. Any fields that are not provided are deleted from the resource.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which to get/update shipping settings. (required)
  body: object, The request body.
    The object takes the form of:

{ # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
  &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
    {
      &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
        {
          &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
          &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
      &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
    },
  ],
  &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
  &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
    {
      &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
      &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
        &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
        &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
      },
      &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
      &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
      &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
        {
          &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
            &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
            &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
            &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
            &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
          },
          &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
          &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
            {
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                      &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                      &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                      &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                    },
                  ],
                },
              ],
              &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
            },
          ],
          &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
            {
              &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
              &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
              &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
              &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
              &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
            },
          ],
          &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
            &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
              {
                &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                  { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                    &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                    &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                    &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                    &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                  },
                ],
              },
            ],
            &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
              &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                },
              ],
              &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
            },
            &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
              &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                },
              ],
              &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
          },
        },
      ],
      &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
      &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
        &quot;storeCodeSetWithMovs&quot;: [
          { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
            &quot;value&quot;: { # The minimum order value for the given stores.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
              &quot;A String&quot;,
            ],
          },
        ],
      },
      &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
      &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
      &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
        &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
          &quot;businessDays&quot;: [ # Regular business days. May not be empty.
            &quot;A String&quot;,
          ],
        },
        &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
          &quot;rows&quot;: [
            {
              &quot;values&quot;: [
                {
                  &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                  &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                },
              ],
            },
          ],
          &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
            &quot;A String&quot;,
          ],
          &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
            &quot;A String&quot;,
          ],
        },
        &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
        &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
        &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
        &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
          &quot;businessDays&quot;: [ # Regular business days. May not be empty.
            &quot;A String&quot;,
          ],
        },
        &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
          {
            &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
            &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
            &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
            &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
            &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
          },
        ],
        &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
          &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
          &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
          &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
        },
        &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
      },
    },
  ],
}

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
    &quot;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
      {
        &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
            &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
        &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
      },
    ],
    &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these account shipping settings belong. Ignored upon update, always present in get request responses.
    &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &quot;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &quot;minimumOrderValue&quot;: { # Minimum order value for this service. If set, indicates that customers will have to spend at least this amount. All prices within a service must have the same currency. Cannot be set together with minimum_order_value_table.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;pickupService&quot;: { # The carrier-service pair delivering items to collection points. The list of supported pickup services can be retrieved via the `getSupportedPickupServices` method. Required if and only if the service delivery type is `pickup`.
          &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
          &quot;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
        },
        &quot;eligibility&quot;: &quot;A String&quot;, # Eligibility for this service. Acceptable values are: - &quot;`All scenarios`&quot; - &quot;`All scenarios except Shopping Actions`&quot; - &quot;`Shopping Actions`&quot;
        &quot;currency&quot;: &quot;A String&quot;, # The CLDR code of the currency to which this service applies. Must match that of the prices in rate groups.
        &quot;rateGroups&quot;: [ # Shipping rate group definitions. Only the last one is allowed to have an empty `applicableShippingLabels`, which means &quot;everything else&quot;. The other `applicableShippingLabels` must not overlap.
          {
            &quot;singleValue&quot;: { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set. # The value of the rate group (e.g. flat rate $10). Can only be set if `mainTable` and `subtables` are not set.
              &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
              &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
              &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
              &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
            },
            &quot;applicableShippingLabels&quot;: [ # A list of shipping labels defining the products to which this rate group applies to. This is a disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last rate group of a service. Required.
              &quot;A String&quot;,
            ],
            &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &quot;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
              {
                &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                  {
                    &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                      { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                        &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                        &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                        &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                        &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                        &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                      },
                    ],
                  },
                ],
                &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                  &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                    },
                  ],
                  &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                        &quot;A String&quot;,
                      ],
                    },
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                },
                &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                  &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                    },
                  ],
                  &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                        &quot;A String&quot;,
                      ],
                    },
                  ],
                  &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              },
            ],
            &quot;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
              {
                &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                &quot;carrierService&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;ground&quot;` or `&quot;2 days&quot;`. The list of supported services for a carrier can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
                &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
              },
            ],
            &quot;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;flatRate&quot;: { # A flat rate. Can only be set if all other fields are not set.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;carrierRateName&quot;: &quot;A String&quot;, # The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be set if all other fields are not set.
                      &quot;noShipping&quot;: True or False, # If true, then the product can&#x27;t ship. Must be true when set, can only be set if all other fields are not set.
                      &quot;subtableName&quot;: &quot;A String&quot;, # The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if all other fields are not set.
                      &quot;pricePercentage&quot;: &quot;A String&quot;, # A percentage of the price represented as a number in decimal notation (e.g., `&quot;5.4&quot;`). Can only be set if all other fields are not set.
                    },
                  ],
                },
              ],
              &quot;columnHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s columns. Optional: if not set then the table has only one dimension.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;rowHeaders&quot;: { # A non-empty list of row or column headers for a table. Exactly one of `prices`, `weights`, `numItems`, `postalCodeGroupNames`, or `location` must be set. # Headers of the table&#x27;s rows. Required.
                &quot;prices&quot;: [ # A list of inclusive order price upper bounds. The last price&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;500&quot;, &quot;currency&quot;: &quot;USD&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;currency&quot;: &quot;USD&quot;}]` represents the headers &quot;&lt;= $10&quot;, &quot;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    &quot;unit&quot;: &quot;A String&quot;, # Required. The weight unit. Acceptable values are: - &quot;`kg`&quot; - &quot;`lb`&quot;
                  },
                ],
                &quot;numberOfItems&quot;: [ # A list of inclusive number of items upper bounds. The last value can be `&quot;infinity&quot;`. For example `[&quot;10&quot;, &quot;50&quot;, &quot;infinity&quot;]` represents the headers &quot;&lt;= 10 items&quot;, &quot;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;locations&quot;: [ # A list of location ID sets. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;locationIds&quot;: [ # A non-empty list of location IDs. They must all be of the same location type (e.g., state).
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
            },
          },
        ],
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &quot;minimumOrderValueTable&quot;: { # Table of per store minimum order values for the pickup fulfillment type. Cannot be set together with minimum_order_value.
          &quot;storeCodeSetWithMovs&quot;: [
            { # A list of store code sets sharing the same minimum order value. At least two sets are required and the last one must be empty, which signifies &#x27;MOV for all other stores&#x27;. Each store code can only appear once across all the sets. All prices within a service must have the same currency.
              &quot;value&quot;: { # The minimum order value for the given stores.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
        &quot;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. Required.
        &quot;deliveryTime&quot;: { # Time spent in various aspects from order to the delivery of the product. Required.
          &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;transitTimeTable&quot;: { # Transit time table, number of business days spent in transit based on row and column dimensions. Either `{min,max}TransitTimeInDays` or `transitTimeTable` can be set, but not both.
            &quot;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                  },
                ],
              },
            ],
            &quot;transitTimeLabels&quot;: [ # A list of transit time labels. The last value can be `&quot;all other labels&quot;`. Example: `[&quot;food&quot;, &quot;electronics&quot;, &quot;all other labels&quot;]`.
              &quot;A String&quot;,
            ],
            &quot;postalCodeGroupNames&quot;: [ # A list of postal group names. The last value can be `&quot;all other locations&quot;`. Example: `[&quot;zone 1&quot;, &quot;zone 2&quot;, &quot;all other locations&quot;]`. The referred postal code groups must match the delivery country of the service.
              &quot;A String&quot;,
            ],
          },
          &quot;maxTransitTimeInDays&quot;: 42, # Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Must be greater than or equal to `minTransitTimeInDays`.
          &quot;maxHandlingTimeInDays&quot;: 42, # Maximum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped. Must be greater than or equal to `minHandlingTimeInDays`.
          &quot;minTransitTimeInDays&quot;: 42, # Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next day delivery. Either `{min,max}TransitTimeInDays` or `transitTimeTable` must be set, but not both.
          &quot;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
              &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
              &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
              &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
              &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
            },
          ],
          &quot;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
            &quot;minute&quot;: 42, # Minute of the cutoff time until which an order has to be placed to be processed in the same day. Required.
            &quot;timezone&quot;: &quot;A String&quot;, # Timezone identifier for the cutoff time. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
            &quot;hour&quot;: 42, # Hour of the cutoff time until which an order has to be placed to be processed in the same day. Required.
          },
          &quot;minHandlingTimeInDays&quot;: 42, # Minimum number of business days spent before an order is shipped. 0 means same day shipped, 1 means next day shipped.
        },
      },
    ],
  }</pre>
</div>

</body></html>