<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_1.html">Content API for Shopping</a> . <a href="content_v2_1.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)</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)</a></code></p>
<p class="firstline">Retrieves the shipping settings of the account.</p>
<p class="toc_element">
  <code><a href="#getsupportedcarriers">getsupportedcarriers(merchantId)</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)</a></code></p>
<p class="firstline">Retrieves supported holidays for an account.</p>
<p class="toc_element">
  <code><a href="#getsupportedpickupservices">getsupportedpickupservices(merchantId)</a></code></p>
<p class="firstline">Retrieves supported pickup services for an account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, maxResults=None, pageToken=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)</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)</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;accountId&quot;: &quot;A String&quot;, # The ID of the account for which to get/update account shipping settings.
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
        &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry.
            #
            # Acceptable values are:
            # - &quot;`get`&quot;
            # - &quot;`update`&quot;
        &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;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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
            {
              &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
              &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                  &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                        },
                      ],
                    },
                  ],
                  &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                      &quot;A String&quot;,
                    ],
                    &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
                &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
              },
              &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                                #
                                # Acceptable values are:
                                # - &quot;`kg`&quot;
                                # - &quot;`lb`&quot;
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          },
                        ],
                      },
                      &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                      &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                                #
                                # Acceptable values are:
                                # - &quot;`kg`&quot;
                                # - &quot;`lb`&quot;
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          },
                        ],
                      },
                      &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
                  #
                  # Acceptable values are:
                  # - &quot;`delivery`&quot;
                  # - &quot;`pickup`&quot;
            },
          ],
        },
      },
    ],
  }


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;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;code&quot;: 42, # The HTTP status of the first error in `errors`.
          &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;kind&quot;: &quot;content#shippingsettingsCustomBatchResponseEntry&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#shippingsettingsCustomBatchResponseEntry`&quot;
        &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;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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
            {
              &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
              &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                  &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                        },
                      ],
                    },
                  ],
                  &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                      &quot;A String&quot;,
                    ],
                    &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
                &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
              },
              &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                                #
                                # Acceptable values are:
                                # - &quot;`kg`&quot;
                                # - &quot;`lb`&quot;
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          },
                        ],
                      },
                      &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                      &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                          &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                                #
                                # Acceptable values are:
                                # - &quot;`kg`&quot;
                                # - &quot;`lb`&quot;
                            &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                          },
                        ],
                      },
                      &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
                  #
                  # Acceptable values are:
                  # - &quot;`delivery`&quot;
                  # - &quot;`pickup`&quot;
            },
          ],
        },
      },
    ],
    &quot;kind&quot;: &quot;content#shippingsettingsCustomBatchResponse&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)</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)

Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
    &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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
      {
        &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
        &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
            &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                  },
                ],
              },
            ],
            &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                &quot;A String&quot;,
              ],
              &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
          &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
        },
        &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                          #
                          # Acceptable values are:
                          # - &quot;`kg`&quot;
                          # - &quot;`lb`&quot;
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    },
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                          #
                          # Acceptable values are:
                          # - &quot;`kg`&quot;
                          # - &quot;`lb`&quot;
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    },
                  ],
                },
                &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
            #
            # Acceptable values are:
            # - &quot;`delivery`&quot;
            # - &quot;`pickup`&quot;
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getsupportedcarriers">getsupportedcarriers(merchantId)</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)

Returns:
  An object of the form:

    {
    &quot;carriers&quot;: [ # A list of supported carriers. 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;name&quot;: &quot;A String&quot;, # The name of the carrier (e.g., `&quot;UPS&quot;`). Always present.
        &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;kind&quot;: &quot;content#shippingsettingsGetSupportedCarriersResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedCarriersResponse&quot;.
  }</pre>
</div>

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

Args:
  merchantId: string, The ID of the account for which to retrieve the supported holidays. (required)

Returns:
  An object of the form:

    {
    &quot;holidays&quot;: [ # A list of holidays applicable for delivery guarantees. May be empty.
      {
        &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;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;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;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;id&quot;: &quot;A String&quot;, # Unique identifier for the holiday to be used when configuring holiday cutoffs. 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;kind&quot;: &quot;content#shippingsettingsGetSupportedHolidaysResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedHolidaysResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getsupportedpickupservices">getsupportedpickupservices(merchantId)</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)

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(merchantId, maxResults=None, pageToken=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)
  maxResults: integer, The maximum number of shipping settings to return in the response, used for paging.
  pageToken: string, The token returned by the previous request.

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#shippingsettingsListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsListResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of shipping settings.
    &quot;resources&quot;: [
      { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
        &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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
          {
            &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
            &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
            &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
              {
                &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
          {
            &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
            &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
                &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                {
                  &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
                  {
                    &quot;values&quot;: [
                      {
                        &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                        &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                      },
                    ],
                  },
                ],
                &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                    &quot;A String&quot;,
                  ],
                  &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
            &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
              &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
            },
            &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                            #
                            # Acceptable values are:
                            # - &quot;`kg`&quot;
                            # - &quot;`lb`&quot;
                        &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      },
                    ],
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                  &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                            #
                            # Acceptable values are:
                            # - &quot;`kg`&quot;
                            # - &quot;`lb`&quot;
                        &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                      },
                    ],
                  },
                  &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                              #
                              # Acceptable values are:
                              # - &quot;`kg`&quot;
                              # - &quot;`lb`&quot;
                          &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                        },
                      ],
                    },
                    &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
                #
                # Acceptable values are:
                # - &quot;`delivery`&quot;
                # - &quot;`pickup`&quot;
          },
        ],
      },
    ],
  }</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)</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;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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
    {
      &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
      &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
      &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
        {
          &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
    {
      &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
      &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
          &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
          {
            &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
            {
              &quot;values&quot;: [
                {
                  &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                  &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                },
              ],
            },
          ],
          &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
              &quot;A String&quot;,
            ],
            &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
      &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
        &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
      },
      &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                      #
                      # Acceptable values are:
                      # - &quot;`kg`&quot;
                      # - &quot;`lb`&quot;
                  &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                },
              ],
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
            &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                      #
                      # Acceptable values are:
                      # - &quot;`kg`&quot;
                      # - &quot;`lb`&quot;
                  &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                },
              ],
            },
            &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
          &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
          #
          # Acceptable values are:
          # - &quot;`delivery`&quot;
          # - &quot;`pickup`&quot;
    },
  ],
}


Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
    &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;postalCodeGroups&quot;: [ # A list of postal code groups that can be referred to in `services`. Optional.
      {
        &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country the postal code group applies to. Required.
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
        &quot;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &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;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;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &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;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;cutoffTime&quot;: { # Business days cutoff time definition. If not configured the cutoff time will be defaulted to 8AM PST.
            &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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &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;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;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;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. 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;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;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;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;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;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;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;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                  },
                ],
              },
            ],
            &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;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;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;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;storeCodes&quot;: [ # A list of unique store codes or empty for the catch all.
                &quot;A String&quot;,
              ],
              &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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &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;carrierName&quot;: &quot;A String&quot;, # The name of the pickup carrier (e.g., `&quot;UPS&quot;`). Required.
          &quot;serviceName&quot;: &quot;A String&quot;, # The name of the pickup service (e.g., `&quot;Access point&quot;`). Required.
        },
        &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;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;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;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;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;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;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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                        #
                        # Acceptable values are:
                        # - &quot;`kg`&quot;
                        # - &quot;`lb`&quot;
                    &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                  },
                ],
              },
              &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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &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;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;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;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;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;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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is 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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                          #
                          # Acceptable values are:
                          # - &quot;`kg`&quot;
                          # - &quot;`lb`&quot;
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    },
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                &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;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;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; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &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;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; $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; 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;unit&quot;: &quot;A String&quot;, # Required. The weight unit.
                          #
                          # Acceptable values are:
                          # - &quot;`kg`&quot;
                          # - &quot;`lb`&quot;
                      &quot;value&quot;: &quot;A String&quot;, # Required. The weight represented as a number.
                    },
                  ],
                },
                &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;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;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;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;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;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;shipmentType&quot;: &quot;A String&quot;, # Type of locations this service ships orders to.
            #
            # Acceptable values are:
            # - &quot;`delivery`&quot;
            # - &quot;`pickup`&quot;
      },
    ],
  }</pre>
</div>

</body></html>