<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

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

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

{
  &quot;entries&quot;: [ # The request entries to be processed in the batch.
    { # A batch entry encoding a single non-batch shippingsettings request.
      &quot;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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
                {
                  &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
                  &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
                  &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
                  &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
                  &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
                  &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
                  &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
                  &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;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. The weight can have a maximum precision of four decimal places.
                        },
                      ],
                    },
                    &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;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. The weight can have a maximum precision of four decimal places.
                        },
                      ],
                    },
                    &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
          { # A fulfillment warehouse, which stores and handles inventory.
            &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
              &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
                &quot;A String&quot;,
              ],
            },
            &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
              &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
              &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
            },
            &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
            &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
              &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
              &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
              &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
              &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
            },
          },
        ],
      },
    },
  ],
}

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

Returns:
  An object of the form:

    {
  &quot;entries&quot;: [ # The result of the execution of the batch requests.
    { # A batch entry encoding a single non-batch shipping settings response.
      &quot;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;A String&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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
                {
                  &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
                  &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
                  &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
                  &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
                  &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
                  &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
                  &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
                  &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;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. The weight can have a maximum precision of four decimal places.
                        },
                      ],
                    },
                    &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                        &quot;A String&quot;,
                      ],
                      &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                        },
                      ],
                      &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                        {
                          &quot;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. The weight can have a maximum precision of four decimal places.
                        },
                      ],
                    },
                    &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
          { # A fulfillment warehouse, which stores and handles inventory.
            &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
              &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
                &quot;A String&quot;,
              ],
            },
            &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
              &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
              &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
            },
            &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
            &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
              &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
              &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
              &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
              &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
            },
          },
        ],
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsCustomBatchResponse&quot;.
}</pre>
</div>

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

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

Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
  &quot;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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
          {
            &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
            &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
            &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
            &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
            &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
            &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
            &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
            &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
          },
        ],
      },
      &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
    { # A fulfillment warehouse, which stores and handles inventory.
      &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
        &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
          &quot;A String&quot;,
        ],
      },
      &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
        &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
        &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
      },
      &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
      &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
    },
  ],
}</pre>
</div>

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

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

Returns:
  An object of the form:

    {
  &quot;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;eddServices&quot;: [ # A list of services supported for EDD (Estimated Delivery Date) calculation. This is the list of valid values for WarehouseBasedDeliveryTime.carrierService.
        &quot;A String&quot;,
      ],
      &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. This is the list of valid values for CarrierRate.carrierService.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;kind&quot;: &quot;A String&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, x__xgafv=None)</code>
  <pre>Retrieves supported holidays for an account.

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

Returns:
  An object of the form:

    {
  &quot;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;A String&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, x__xgafv=None)</code>
  <pre>Retrieves supported pickup services for an account.

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

Returns:
  An object of the form:

    {
  &quot;kind&quot;: &quot;A String&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, x__xgafv=None)</code>
  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account.

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client account. (required)
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
              {
                &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
                &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
                &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
                &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
                &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
                &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
                &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
                &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
              },
            ],
          },
          &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;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. The weight can have a maximum precision of four decimal places.
                    },
                  ],
                },
                &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                    &quot;A String&quot;,
                  ],
                  &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                  ],
                  &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                    {
                      &quot;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. The weight can have a maximum precision of four decimal places.
                    },
                  ],
                },
                &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                      &quot;A String&quot;,
                    ],
                    &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                    ],
                    &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                      {
                        &quot;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. The weight can have a maximum precision of four decimal places.
                      },
                    ],
                  },
                  &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
        { # A fulfillment warehouse, which stores and handles inventory.
          &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
            &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
            &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
            &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
          },
          &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
          &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
            &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
            &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
            &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
            &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
          },
        },
      ],
    },
  ],
}</pre>
</div>

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

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

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

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

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

{ # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
  &quot;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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
          {
            &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
            &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
            &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
            &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
            &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
            &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
            &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
            &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
          },
        ],
      },
      &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
    { # A fulfillment warehouse, which stores and handles inventory.
      &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
        &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
          &quot;A String&quot;,
        ],
      },
      &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
        &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
        &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
      },
      &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
      &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
    },
  ],
}

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

Returns:
  An object of the form:

    { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
  &quot;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, such as &#x27;&quot;monday&quot;&#x27;. 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, such as &#x27;&quot;monday&quot;&#x27;. 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;warehouseBasedDeliveryTimes&quot;: [ # Indicates that the delivery time should be calculated per warehouse (shipping origin location) based on the settings of the selected carrier. When set, no other transit time related field in DeliveryTime should be set.
          {
            &quot;carrier&quot;: &quot;A String&quot;, # Required. Carrier, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `listSupportedCarriers` method.
            &quot;carrierService&quot;: &quot;A String&quot;, # Required. 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 `listSupportedCarriers` method. The name of the service must be in the eddSupportedServices list.
            &quot;originAdministrativeArea&quot;: &quot;A String&quot;, # Shipping origin&#x27;s state.
            &quot;originCity&quot;: &quot;A String&quot;, # Shipping origin&#x27;s city.
            &quot;originCountry&quot;: &quot;A String&quot;, # Shipping origin&#x27;s country represented as a [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
            &quot;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin.
            &quot;originStreetAddress&quot;: &quot;A String&quot;, # Shipping origin&#x27;s street address
            &quot;warehouseName&quot;: &quot;A String&quot;, # The name of the warehouse. Warehouse name need to be matched with name. If warehouseName is set, the below fields will be ignored. The warehouse info will be read from warehouse.
          },
        ],
      },
      &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                &quot;A String&quot;,
              ],
              &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
              ],
              &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                {
                  &quot;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. The weight can have a maximum precision of four decimal places.
                },
              ],
            },
            &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;&lt;= 50 items&quot;, and &quot;&gt; 50 items&quot;. Must be non-empty. Can only be set if all other fields are not set.
                  &quot;A String&quot;,
                ],
                &quot;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;&lt;= $500&quot;, and &quot;&gt; $500&quot;. All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                ],
                &quot;weights&quot;: [ # A list of inclusive order weight upper bounds. The last weight&#x27;s value can be `&quot;infinity&quot;`. For example `[{&quot;value&quot;: &quot;10&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;50&quot;, &quot;unit&quot;: &quot;kg&quot;}, {&quot;value&quot;: &quot;infinity&quot;, &quot;unit&quot;: &quot;kg&quot;}]` represents the headers &quot;&lt;= 10kg&quot;, &quot;&lt;= 50kg&quot;, and &quot;&gt; 50kg&quot;. All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.
                  {
                    &quot;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. The weight can have a maximum precision of four decimal places.
                  },
                ],
              },
              &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;warehouses&quot;: [ # Optional. A list of warehouses which can be referred to in `services`.
    { # A fulfillment warehouse, which stores and handles inventory.
      &quot;businessDayConfig&quot;: { # Business days of the warehouse. If not set, will be Monday to Friday by default.
        &quot;businessDays&quot;: [ # Regular business days, such as &#x27;&quot;monday&quot;&#x27;. May not be empty.
          &quot;A String&quot;,
        ],
      },
      &quot;cutoffTime&quot;: { # Required. The latest time of day that an order can be accepted and begin processing. Later orders will be processed in the next day. The time is based on the warehouse postal code.
        &quot;hour&quot;: 42, # Required. Hour (24-hour clock) of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Hour is based on the timezone of warehouse.
        &quot;minute&quot;: 42, # Required. Minute of the cutoff time until which an order has to be placed to be processed in the same day by the warehouse. Minute is based on the timezone of warehouse.
      },
      &quot;handlingDays&quot;: &quot;A String&quot;, # Required. The number of days it takes for this warehouse to pack up and ship an item. This is on the warehouse level, but can be overridden on the offer level based on the attributes of an item.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the warehouse. Must be unique within account.
      &quot;shippingAddress&quot;: { # Required. Shipping address of the warehouse.
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Required. Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;city&quot;: &quot;A String&quot;, # Required. City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;country&quot;: &quot;A String&quot;, # Required. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml)(e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Required. Postal code or ZIP (e.g. &quot;94043&quot;). Required.
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
    },
  ],
}</pre>
</div>

</body></html>