<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;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`get`&quot; - &quot;`update`&quot;
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account for which to get/update account shipping settings.
        &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;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                    &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                    &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                    &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                    &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                  },
                ],
                &quot;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;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;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                        },
                      ],
                    },
                  ],
                },
                &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                    {
                      &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                      &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                      &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                    },
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                    {
                      &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                        {
                          &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                            { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                              &quot;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;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;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;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;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;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;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.
                          },
                        ],
                        &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                      &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;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.
                          },
                        ],
                        &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;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;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;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;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;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;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;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.
                        },
                      ],
                      &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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.
                        },
                      ],
                      &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                  &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
            },
          ],
        },
      },
    ],
  }

  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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsCustomBatchResponse&quot;.
    &quot;entries&quot;: [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch shipping settings response.
        &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if, and only if, the request failed.
          &quot;errors&quot;: [ # A list of errors.
            { # An error returned by the API.
              &quot;reason&quot;: &quot;A String&quot;, # The error code.
              &quot;message&quot;: &quot;A String&quot;, # A description of the error.
              &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            },
          ],
          &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
          &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;batchId&quot;: 42, # The ID of the request entry to which this entry responds.
        &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;services&quot;: [ # The target account&#x27;s list of services. Optional.
            {
              &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                  {
                    &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                    &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                    &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                    &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                    &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                  },
                ],
                &quot;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;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;rows&quot;: [
                    {
                      &quot;values&quot;: [
                        {
                          &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                          &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                        },
                      ],
                    },
                  ],
                },
                &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                  &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                    &quot;A String&quot;,
                  ],
                },
                &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
              &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
              &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                    {
                      &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                      },
                      &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                      &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                      &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                    },
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                  &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                    {
                      &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                        {
                          &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                            { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                              &quot;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;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;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;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;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;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;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.
                          },
                        ],
                        &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                      &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;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.
                          },
                        ],
                        &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;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;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;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;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;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;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;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.
                        },
                      ],
                      &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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.
                        },
                      ],
                      &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
                {
                  &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                  &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
            },
          ],
        },
      },
    ],
  }</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;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
              &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
              &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
              &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
              &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
            },
          ],
          &quot;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;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;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                  },
                ],
              },
            ],
          },
          &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
              {
                &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
                &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
              {
                &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                  {
                    &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                      { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                        &quot;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;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;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;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;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;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;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.
                    },
                  ],
                  &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                &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;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.
                    },
                  ],
                  &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;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;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;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;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;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;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;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.
                  },
                ],
                &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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.
                  },
                ],
                &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
            &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
      },
    ],
  }</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;name&quot;: &quot;A String&quot;, # The name of the carrier (e.g., `&quot;UPS&quot;`). Always present.
        &quot;services&quot;: [ # A list of supported services (e.g., `&quot;ground&quot;`) for that carrier. Contains at least one service.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;kind&quot;: &quot;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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsGetSupportedHolidaysResponse&quot;.
    &quot;holidays&quot;: [ # A list of holidays applicable for delivery guarantees. May be empty.
      {
        &quot;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;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;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;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;id&quot;: &quot;A String&quot;, # Unique identifier for the holiday to be used when configuring holiday cutoffs. Always present.
      },
    ],
  }</pre>
</div>

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

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

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(merchantId, 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;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of shipping settings.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#shippingsettingsListResponse&quot;.
    &quot;resources&quot;: [
      { # The merchant account&#x27;s shipping settings. All methods except getsupportedcarriers and getsupportedholidays require the admin role.
        &quot;services&quot;: [ # The target account&#x27;s list of services. Optional.
          {
            &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
                {
                  &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
                  &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
                  &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
                  &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
                  &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
                },
              ],
              &quot;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;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;rows&quot;: [
                  {
                    &quot;values&quot;: [
                      {
                        &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                        &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                      },
                    ],
                  },
                ],
              },
              &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
                &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
                &quot;businessDays&quot;: [ # Regular business days. May not be empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
            &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
            &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
                  {
                    &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                    },
                    &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                    &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                    &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
                  },
                ],
                &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
                &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
                  {
                    &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                      {
                        &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                          { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                            &quot;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;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;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;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;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;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;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.
                        },
                      ],
                      &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                    &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;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.
                        },
                      ],
                      &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
                  &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                    {
                      &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                        { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                          &quot;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;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;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;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;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;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;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.
                      },
                    ],
                    &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                  &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;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.
                      },
                    ],
                    &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
              {
                &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
                &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
          },
        ],
      },
    ],
  }</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;services&quot;: [ # The target account&#x27;s list of services. Optional.
    {
      &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
          {
            &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
            &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
            &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
            &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
            &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
          },
        ],
        &quot;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;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;rows&quot;: [
            {
              &quot;values&quot;: [
                {
                  &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                  &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                },
              ],
            },
          ],
        },
        &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
          &quot;businessDays&quot;: [ # Regular business days. May not be empty.
            &quot;A String&quot;,
          ],
        },
        &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
          &quot;businessDays&quot;: [ # Regular business days. May not be empty.
            &quot;A String&quot;,
          ],
        },
        &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
      &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
      &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
            {
              &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
              &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
              &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
              &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
          &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
            {
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;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;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;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;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;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;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;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.
                  },
                ],
                &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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.
                  },
                ],
                &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
            &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
              {
                &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                  { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                    &quot;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;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;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;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;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;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;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.
                },
              ],
              &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
            &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;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.
                },
              ],
              &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
        {
          &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
          &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
    },
  ],
}

  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;services&quot;: [ # The target account&#x27;s list of services. Optional.
      {
        &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;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;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;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;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;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;holidayCutoffs&quot;: [ # Holiday cutoff definitions. If configured, they specify order cutoff times for holiday-specific shipping.
            {
              &quot;deadlineTimezone&quot;: &quot;A String&quot;, # Timezone identifier for the deadline hour. A list of identifiers can be found in the AdWords API documentation. E.g. &quot;Europe/Zurich&quot;. Required.
              &quot;holidayId&quot;: &quot;A String&quot;, # Unique identifier for the holiday. Required.
              &quot;deadlineHour&quot;: 42, # Hour of the day on the deadline date until which the order has to be placed to qualify for the delivery guarantee. Possible values are: 0 (midnight), 1, ..., 12 (noon), 13, ..., 23. Required.
              &quot;visibleFromDate&quot;: &quot;A String&quot;, # Date on which the deadline will become visible to consumers in ISO 8601 format. E.g. &quot;2016-10-31&quot; for 31st October 2016. Required.
              &quot;deadlineDate&quot;: &quot;A String&quot;, # Date of the order deadline, in ISO 8601 format. E.g. &quot;2016-11-29&quot; for 29th November 2016. Required.
            },
          ],
          &quot;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;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;rows&quot;: [
              {
                &quot;values&quot;: [
                  {
                    &quot;minTransitTimeInDays&quot;: 42, # Transit time range (min-max) in business days. 0 means same day delivery, 1 means next day delivery.
                    &quot;maxTransitTimeInDays&quot;: 42, # Must be greater than or equal to `minTransitTimeInDays`.
                  },
                ],
              },
            ],
          },
          &quot;handlingBusinessDayConfig&quot;: { # The business days during which orders can be handled. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;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;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;transitBusinessDayConfig&quot;: { # The business days during which orders can be in-transit. If not provided, Monday to Friday business days will be assumed.
            &quot;businessDays&quot;: [ # Regular business days. May not be empty.
              &quot;A String&quot;,
            ],
          },
          &quot;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;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;deliveryCountry&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which the service applies. 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;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;name&quot;: &quot;A String&quot;, # Free-form name of the service. Must be unique within target account. Required.
        &quot;active&quot;: True or False, # A boolean exposing the active status of the shipping service. Required.
        &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;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;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;carrierRates&quot;: [ # A list of carrier rates that can be referred to by `mainTable` or `singleValue`.
              {
                &quot;flatAdjustment&quot;: { # Additive shipping rate modifier. Can be negative. For example `{ &quot;value&quot;: &quot;1&quot;, &quot;currency&quot; : &quot;USD&quot; }` adds $1 to the rate, `{ &quot;value&quot;: &quot;-3&quot;, &quot;currency&quot; : &quot;USD&quot; }` removes $3 from the rate. Optional.
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
                &quot;percentageAdjustment&quot;: &quot;A String&quot;, # Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example `&quot;5.4&quot;` increases the rate by 5.4%, `&quot;-3&quot;` decreases the rate by 3%. Optional.
                &quot;carrierName&quot;: &quot;A String&quot;, # Carrier service, such as `&quot;UPS&quot;` or `&quot;Fedex&quot;`. The list of supported carriers can be retrieved via the `getSupportedCarriers` method. Required.
                &quot;name&quot;: &quot;A String&quot;, # Name of the carrier rate. Must be unique per rate group. Required.
                &quot;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;originPostalCode&quot;: &quot;A String&quot;, # Shipping origin for this carrier rate. Required.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Name of the rate group. Optional. If set has to be unique within shipping service.
            &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;subtables&quot;: [ # A list of subtables referred to by `mainTable`. Can only be set if `mainTable` is set.
              {
                &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                  {
                    &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                      { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                        &quot;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;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;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;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;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;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;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.
                    },
                  ],
                  &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
                &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;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.
                    },
                  ],
                  &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;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;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;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;mainTable&quot;: { # A table defining the rate group, when `singleValue` is not expressive enough. Can only be set if `singleValue` is not set.
              &quot;rows&quot;: [ # The list of rows that constitute the table. Must have the same length as `rowHeaders`. Required.
                {
                  &quot;cells&quot;: [ # The list of cells that constitute the row. Must have the same length as `columnHeaders` for two-dimensional tables, a length of 1 for one-dimensional tables. Required.
                    { # The single value of a rate group or the value of a rate group table&#x27;s cell. Exactly one of `noShipping`, `flatRate`, `pricePercentage`, `carrierRateName`, `subtableName` must be set.
                      &quot;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;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;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;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;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;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;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.
                  },
                ],
                &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the table. Required for subtables, ignored for the main table.
              &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;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.
                  },
                ],
                &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;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;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;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;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;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;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;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;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;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;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;postalCodeRanges&quot;: [ # A range of postal codes. Required.
          {
            &quot;postalCodeRangeEnd&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive upper bound of the range defining the area. It must have the same length as `postalCodeRangeBegin`: if `postalCodeRangeBegin` is a postal code then `postalCodeRangeEnd` must be a postal code too; if `postalCodeRangeBegin` is a pattern then `postalCodeRangeEnd` must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching `postalCodeRangeBegin`.
            &quot;postalCodeRangeBegin&quot;: &quot;A String&quot;, # A postal code or a pattern of the form `prefix*` denoting the inclusive lower bound of the range defining the area. Examples values: `&quot;94108&quot;`, `&quot;9410*&quot;`, `&quot;9*&quot;`. Required.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name of the postal code group, referred to in headers. Required.
      },
    ],
  }</pre>
</div>

</body></html>