<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.orders.html">orders</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#acknowledge">acknowledge(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Marks an order as acknowledged.</p>
<p class="toc_element">
  <code><a href="#advancetestorder">advancetestorder(merchantId, orderId, x__xgafv=None)</a></code></p>
<p class="firstline">Sandbox only. Moves a test order from state "`inProgress`" to state "`pendingShipment`".</p>
<p class="toc_element">
  <code><a href="#cancel">cancel(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels all line items in an order, making a full refund.</p>
<p class="toc_element">
  <code><a href="#cancellineitem">cancellineitem(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a line item, making a full refund.</p>
<p class="toc_element">
  <code><a href="#canceltestorderbycustomer">canceltestorderbycustomer(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sandbox only. Cancels a test order for customer-initiated cancellation.</p>
<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="#createtestorder">createtestorder(merchantId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sandbox only. Creates a test order.</p>
<p class="toc_element">
  <code><a href="#createtestreturn">createtestreturn(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sandbox only. Creates a test return.</p>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves or modifies multiple orders in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, orderId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves an order from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves an order using merchant order ID.</p>
<p class="toc_element">
  <code><a href="#gettestordertemplate">gettestordertemplate(merchantId, templateName, country=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.</p>
<p class="toc_element">
  <code><a href="#instorerefundlineitem">instorerefundlineitem(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deprecated. Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store). Note: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, acknowledged=None, maxResults=None, orderBy=None, pageToken=None, placedDateEnd=None, placedDateStart=None, statuses=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the orders 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="#refund">refund(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deprecated, please use returnRefundLineItem instead.</p>
<p class="toc_element">
  <code><a href="#rejectreturnlineitem">rejectreturnlineitem(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rejects return on an line item.</p>
<p class="toc_element">
  <code><a href="#returnlineitem">returnlineitem(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a line item.</p>
<p class="toc_element">
  <code><a href="#returnrefundlineitem">returnrefundlineitem(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns and refunds a line item. Note that this method can only be called on fully shipped orders. Please also note that the Orderreturns API is the preferred way to handle returns after you receive a return from a customer. You can use Orderreturns.list or Orderreturns.get to search for the return, and then use Orderreturns.processreturn to issue the refund. If the return cannot be found, then we recommend using this API to issue a refund.</p>
<p class="toc_element">
  <code><a href="#setlineitemmetadata">setlineitemmetadata(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets (or overrides if it already exists) merchant provided annotations in the form of key-value pairs. A common use case would be to supply us with additional structured information about a line item that cannot be provided via other methods. Submitted key-value pairs can be retrieved as part of the orders resource.</p>
<p class="toc_element">
  <code><a href="#shiplineitems">shiplineitems(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Marks line item(s) as shipped.</p>
<p class="toc_element">
  <code><a href="#updatelineitemshippingdetails">updatelineitemshippingdetails(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates ship by and delivery by dates for a line item.</p>
<p class="toc_element">
  <code><a href="#updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the merchant order ID for a given order.</p>
<p class="toc_element">
  <code><a href="#updateshipment">updateshipment(merchantId, orderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="acknowledge">acknowledge(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Marks an order as acknowledged.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersAcknowledgeResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="advancetestorder">advancetestorder(merchantId, orderId, x__xgafv=None)</code>
  <pre>Sandbox only. Moves a test order from state &quot;`inProgress`&quot; to state &quot;`pendingShipment`&quot;.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the test order to modify. (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#ordersAdvanceTestOrderResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="cancel">cancel(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Cancels all line items in an order, making a full refund.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order to cancel. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Acceptable values are: - &quot;`customerInitiatedCancel`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCancelResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="cancellineitem">cancellineitem(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Cancels a line item, making a full refund.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;amount&quot;: { # Deprecated. Please use amountPretax and amountTax instead.
    &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;amountPretax&quot;: { # Amount to refund for the cancelation. Optional. If not set, Google will calculate the default based on the price and tax of the items involved. The amount must not be larger than the net amount left on the order.
    &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;amountTax&quot;: { # Tax amount that corresponds to cancellation amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided.
    &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to cancel. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to cancel. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;quantity&quot;: 42, # The quantity to cancel.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Acceptable values are: - &quot;`customerInitiatedCancel`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCancelLineItemResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="canceltestorderbycustomer">canceltestorderbycustomer(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Sandbox only. Cancels a test order for customer-initiated cancellation.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the test order to cancel. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Acceptable values are: - &quot;`changedMind`&quot; - &quot;`orderedWrongItem`&quot; - &quot;`other`&quot;
}

  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#ordersCancelTestOrderByCustomerResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="createtestorder">createtestorder(merchantId, body=None, x__xgafv=None)</code>
  <pre>Sandbox only. Creates a test order.

Args:
  merchantId: string, The ID of the account that should manage the order. This cannot be a multi-client account. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country of the test order to create. Affects the currency and addresses of orders created via `template_name`, or the addresses of orders created via `test_order`. Acceptable values are: - &quot;`US`&quot; - &quot;`FR`&quot; Defaults to `US`.
  &quot;templateName&quot;: &quot;A String&quot;, # The test order template to use. Specify as an alternative to `testOrder` as a shortcut for retrieving a template and then creating an order using that template. Acceptable values are: - &quot;`template1`&quot; - &quot;`template1a`&quot; - &quot;`template1b`&quot; - &quot;`template2`&quot; - &quot;`template3`&quot;
  &quot;testOrder&quot;: { # The test order to create.
    &quot;customer&quot;: { # Required. The details of the customer who placed the order.
      &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the customer. Acceptable values are: - &quot;`pog.dwight.schrute@gmail.com`&quot; - &quot;`pog.jim.halpert@gmail.com`&quot; - &quot;`penpog.pam.beesly@gmail.comding`&quot;
      &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
      &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences.
        &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last know user use selection regards marketing preferences. In certain cases selection might not be known, so this field would be empty. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
        &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
      },
    },
    &quot;enableOrderinvoices&quot;: True or False, # Whether the orderinvoices service should support this order.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#testOrder`&quot;
    &quot;lineItems&quot;: [ # Required. Line items that are ordered. At least one line item must be provided.
      {
        &quot;product&quot;: { # Required. Product data from the time of the order placement.
          &quot;brand&quot;: &quot;A String&quot;, # Required. Brand of the item.
          &quot;channel&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`online`&quot;
          &quot;condition&quot;: &quot;A String&quot;, # Required. Condition or state of the item. Acceptable values are: - &quot;`new`&quot;
          &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item. Acceptable values are: - &quot;`en`&quot; - &quot;`fr`&quot;
          &quot;fees&quot;: [ # Fees for the item. Optional.
            {
              &quot;amount&quot;: { # Amount of the fee.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
            },
          ],
          &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item. Optional.
          &quot;imageLink&quot;: &quot;A String&quot;, # Required. URL of an image of the item.
          &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product. Optional.
          &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item. Optional.
          &quot;offerId&quot;: &quot;A String&quot;, # Required. An identifier of the item.
          &quot;price&quot;: { # Required. The price for the product. Tax is automatically calculated for orders where marketplace facilitator tax laws are applicable. Otherwise, tax settings from Merchant Center are applied.
            &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;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory // code of the target country of the product.
          &quot;title&quot;: &quot;A String&quot;, # Required. The title of the product.
          &quot;variantAttributes&quot;: [ # Variant attributes for the item. Optional.
            {
              &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
            },
          ],
        },
        &quot;quantityOrdered&quot;: 42, # Required. Number of items ordered.
        &quot;returnInfo&quot;: { # Required. Details of the return policy for the line item.
          &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
          &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
        },
        &quot;shippingDetails&quot;: { # Required. Details of the requested shipping for the line item.
          &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
          &quot;method&quot;: { # Required. Details of the shipping method.
            &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
            &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
            &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
            &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
          },
          &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
          &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
        },
        &quot;unitTax&quot;: { # Deprecated. Ignored if provided.
          &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;notificationMode&quot;: &quot;A String&quot;, # Restricted. Do not use.
    &quot;paymentMethod&quot;: { # The details of the payment method.
      &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
      &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
      &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
      &quot;predefinedBillingAddress&quot;: &quot;A String&quot;, # The billing address. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
      &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Note that real orders might have different values than the four values accepted by `createTestOrder`. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`MASTERCARD`&quot; - &quot;`VISA`&quot;
    },
    &quot;predefinedDeliveryAddress&quot;: &quot;A String&quot;, # Required. Identifier of one of the predefined delivery addresses for the delivery. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
    &quot;predefinedPickupDetails&quot;: &quot;A String&quot;, # Identifier of one of the predefined pickup details. Required for orders containing line items with shipping type `pickup`. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
    &quot;promotions&quot;: [ # Deprecated. Ignored if provided.
      {
        &quot;benefits&quot;: [
          {
            &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
              &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
              &quot;A String&quot;,
            ],
            &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
            &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
              &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
          },
        ],
        &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
        &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
        &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
        &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
        &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
      },
    ],
    &quot;shippingCost&quot;: { # Required. The price of shipping for all items. Shipping tax is automatically calculated for orders where marketplace facilitator tax laws are applicable. Otherwise, tax settings from Merchant Center are applied. Note that shipping is not taxed in certain states.
      &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;shippingCostTax&quot;: { # Deprecated. Ignored if provided.
      &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;shippingOption&quot;: &quot;A String&quot;, # Required. The requested shipping option. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
  },
}

  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#ordersCreateTestOrderResponse&quot;.
  &quot;orderId&quot;: &quot;A String&quot;, # The ID of the newly created test order.
}</pre>
</div>

<div class="method">
    <code class="details" id="createtestreturn">createtestreturn(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Sandbox only. Creates a test return.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;items&quot;: [ # Returned items.
    {
      &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return.
      &quot;quantity&quot;: 42, # Quantity that is returned.
    },
  ],
}

  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#ordersCreateTestReturnResponse&quot;.
  &quot;returnId&quot;: &quot;A String&quot;, # The ID of the newly created test order return.
}</pre>
</div>

<div class="method">
    <code class="details" id="custombatch">custombatch(body=None, x__xgafv=None)</code>
  <pre>Retrieves or modifies multiple orders 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.
    {
      &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
      &quot;cancel&quot;: { # Required for `cancel` method.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Acceptable values are: - &quot;`customerInitiatedCancel`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;cancelLineItem&quot;: { # Required for `cancelLineItem` method.
        &quot;amount&quot;: { # Deprecated. Please use amountPretax and amountTax instead.
          &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;amountPretax&quot;: { # Amount to refund for the cancelation. Optional. If not set, Google will calculate the default based on the price and tax of the items involved. The amount must not be larger than the net amount left on the order.
          &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;amountTax&quot;: { # Tax amount that corresponds to cancellation amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided.
          &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to cancel. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to cancel. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;quantity&quot;: 42, # The quantity to cancel.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Acceptable values are: - &quot;`customerInitiatedCancel`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;inStoreRefundLineItem&quot;: { # Required for `inStoreReturnLineItem` method.
        &quot;amountPretax&quot;: { # The amount that is refunded. Required.
          &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;amountTax&quot;: { # Tax amount that correspond to refund amount in amountPretax. Required.
          &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;quantity&quot;: 42, # The quantity to return and refund.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
      &quot;merchantOrderId&quot;: &quot;A String&quot;, # The merchant order ID. Required for `updateMerchantOrderId` and `getByMerchantOrderId` methods.
      &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`acknowledge`&quot; - &quot;`cancel`&quot; - &quot;`cancelLineItem`&quot; - &quot;`get`&quot; - &quot;`getByMerchantOrderId`&quot; - &quot;`inStoreRefundLineItem`&quot; - &quot;`refund`&quot; - &quot;`rejectReturnLineItem`&quot; - &quot;`returnLineItem`&quot; - &quot;`returnRefundLineItem`&quot; - &quot;`setLineItemMetadata`&quot; - &quot;`shipLineItems`&quot; - &quot;`updateLineItemShippingDetails`&quot; - &quot;`updateMerchantOrderId`&quot; - &quot;`updateShipment`&quot;
      &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order. Required for all methods beside `get` and `getByMerchantOrderId`.
      &quot;orderId&quot;: &quot;A String&quot;, # The ID of the order. Required for all methods beside `getByMerchantOrderId`.
      &quot;refund&quot;: { # Required for `refund` method.
        &quot;amount&quot;: { # Deprecated. Please use amountPretax and amountTax instead.
          &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;amountPretax&quot;: { # The amount that is refunded. Either amount or amountPretax should be filled.
          &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;amountTax&quot;: { # Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, amountPretax must be set. Calculated automatically if not provided.
          &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;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`feeAdjustment`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`taxAdjustment`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`wrongProductShipped`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;rejectReturnLineItem&quot;: { # Required for `rejectReturnLineItem` method.
        &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;quantity&quot;: 42, # The quantity to return and refund.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`damagedOrUsed`&quot; - &quot;`missingComponent`&quot; - &quot;`notEligible`&quot; - &quot;`other`&quot; - &quot;`outOfReturnWindow`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;returnLineItem&quot;: { # Required for `returnLineItem` method.
        &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;quantity&quot;: 42, # The quantity to return.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;returnRefundLineItem&quot;: { # Required for `returnRefundLineItem` method.
        &quot;amountPretax&quot;: { # The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method).
          &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;amountTax&quot;: { # Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided.
          &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;quantity&quot;: 42, # The quantity to return and refund.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
      &quot;setLineItemMetadata&quot;: { # Required for `setLineItemMetadata` method.
        &quot;annotations&quot;: [
          {
            &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
            &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
          },
        ],
        &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to set metadata. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to set metadata. This is the REST ID used in the products service. Either lineItemId or productId is required.
      },
      &quot;shipLineItems&quot;: { # Required for `shipLineItems` method.
        &quot;carrier&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The carrier handling the shipment. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
        &quot;lineItems&quot;: [ # Line items to ship.
          {
            &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
            &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
            &quot;quantity&quot;: 42, # The quantity that is shipped.
          },
        ],
        &quot;shipmentGroupId&quot;: &quot;A String&quot;, # ID of the shipment group. Required for orders that use the orderinvoices service.
        &quot;shipmentId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The ID of the shipment.
        &quot;shipmentInfos&quot;: [ # Shipment information. This field is repeated because a single line item can be shipped in several packages (and have several tracking IDs).
          {
            &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
            &quot;shipmentId&quot;: &quot;A String&quot;, # Required. The ID of the shipment. This is assigned by the merchant and is unique to each shipment.
            &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
          },
        ],
        &quot;trackingId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The tracking ID for the shipment.
      },
      &quot;updateLineItemShippingDetails&quot;: { # Required for `updateLineItemShippingDate` method.
        &quot;deliverByDate&quot;: &quot;A String&quot;, # Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated. Provided date should be within 1 year timeframe and can not be a date in the past.
        &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to set metadata. Either lineItemId or productId is required.
        &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to set metadata. This is the REST ID used in the products service. Either lineItemId or productId is required.
        &quot;shipByDate&quot;: &quot;A String&quot;, # Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated. Provided date should be within 1 year timeframe and can not be a date in the past.
      },
      &quot;updateShipment&quot;: { # Required for `updateShipment` method.
        &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. Not updated if missing. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
        &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Optional and can be provided only if `status` is `delivered`.
        &quot;shipmentId&quot;: &quot;A String&quot;, # The ID of the shipment.
        &quot;status&quot;: &quot;A String&quot;, # New status for the shipment. Not updated if missing. Acceptable values are: - &quot;`delivered`&quot; - &quot;`undeliverable`&quot; - &quot;`readyForPickup`&quot;
        &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment. Not updated if missing.
      },
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;entries&quot;: [ # The result of the execution of the batch requests.
    {
      &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
      &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
        &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
        &quot;errors&quot;: [ # A list of errors.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
      },
      &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Only defined if 1. the request was successful; and 2. the method is not `get`, `getByMerchantOrderId`, or one of the test methods. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#ordersCustomBatchResponseEntry`&quot;
      &quot;order&quot;: { # Order. Production access (all methods) requires the order manager role. Sandbox access does not. # The retrieved order. Only defined if the method is `get` and if the request was successful.
        &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
        &quot;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&quot;
        &quot;customer&quot;: { # The details of the customer who placed the order.
          &quot;email&quot;: &quot;A String&quot;, # Deprecated.
          &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
          &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
          &quot;invoiceReceivingEmail&quot;: &quot;A String&quot;, # Email address for the merchant to send value-added tax or invoice documentation of the order. Only the last document sent is made available to the customer. For more information, see About automated VAT invoicing for Buy on Google.
          &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences. Contains the marketing opt-in information that is current at the time that the merchant call. User preference selections can change from one order to the next so preferences must be checked with every order.
            &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last known customer selection regarding marketing preferences. In certain cases this selection might not be known, so this field would be empty. If a customer selected `granted` in their most recent order, they can be subscribed to marketing emails. Customers who have chosen `denied` must not be subscribed, or must be unsubscribed if already opted-in. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
            &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
            &quot;marketingEmailAddress&quot;: &quot;A String&quot;, # Email address that can be used for marketing purposes. The field may be empty even if `explicitMarketingPreference` is &#x27;granted&#x27;. This happens when retrieving an old order from the customer who deleted their account.
          },
        },
        &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
          &quot;address&quot;: { # The delivery address
            &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
              &quot;A String&quot;,
            ],
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
            &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
          },
          &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
        },
        &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#order`&quot;
        &quot;lineItems&quot;: [ # Line items that are ordered.
          {
            &quot;annotations&quot;: [ # Annotations that are attached to the line item.
              {
                &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
                &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
              },
            ],
            &quot;cancellations&quot;: [ # Cancellations of the line item.
              {
                &quot;actor&quot;: &quot;A String&quot;, # The actor that created the cancellation. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
                &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the cancellation has been created, in ISO 8601 format.
                &quot;quantity&quot;: 42, # The quantity that was canceled.
                &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Orders that are canceled with a noInventory reason will lead to the removal of the product from Buy on Google until you make an update to that product. This will not affect your Shopping ads. Acceptable values are: - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerInitiatedCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceError`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
                &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
              },
            ],
            &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
            &quot;price&quot;: { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
              &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;product&quot;: { # Product data as seen by customer from the time of the order placement. Note that certain attributes values (e.g. title or gtin) might be reformatted and no longer match values submitted via product feed.
              &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
              &quot;channel&quot;: &quot;A String&quot;, # The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
              &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
              &quot;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
              &quot;fees&quot;: [ # Associated fees at order creation time.
                {
                  &quot;amount&quot;: { # Amount of the fee.
                    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                },
              ],
              &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
              &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product.
              &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
              &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
              &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
              &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
              &quot;price&quot;: { # Price of the item.
                &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;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
              &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
              &quot;title&quot;: &quot;A String&quot;, # The title of the product.
              &quot;variantAttributes&quot;: [ # Variant attributes for the item. These are dimensions of the product, such as color, gender, material, pattern, and size. You can find a comprehensive list of variant attributes here.
                {
                  &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
                  &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
                },
              ],
            },
            &quot;quantityCanceled&quot;: 42, # Number of items canceled.
            &quot;quantityDelivered&quot;: 42, # Number of items delivered.
            &quot;quantityOrdered&quot;: 42, # Number of items ordered.
            &quot;quantityPending&quot;: 42, # Number of items pending.
            &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
            &quot;quantityReturned&quot;: 42, # Number of items returned.
            &quot;quantityShipped&quot;: 42, # Number of items shipped.
            &quot;returnInfo&quot;: { # Details of the return policy for the line item.
              &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
              &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
              &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
            },
            &quot;returns&quot;: [ # Returns of the line item.
              {
                &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
                &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
                &quot;quantity&quot;: 42, # Quantity that is returned.
                &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
                &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
              },
            ],
            &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
              &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
              &quot;method&quot;: { # Required. Details of the shipping method.
                &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
                &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
                &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
                &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
              },
              &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
              &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
            },
            &quot;tax&quot;: { # Total tax amount for the line item. For example, if two items are purchased, and each have a cost tax of $2, the total tax amount will be $4.
              &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;merchantId&quot;: &quot;A String&quot;,
        &quot;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
        &quot;netAmount&quot;: { # The net amount for the order. For example, if an order was originally for a grand total of $100 and a refund was issued for $20, the net amount will be $80.
          &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;paymentMethod&quot;: { # The details of the payment method.
          &quot;billingAddress&quot;: { # The billing address.
            &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
              &quot;A String&quot;,
            ],
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
            &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
          },
          &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
          &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
          &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
          &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`JCB`&quot; - &quot;`MASTERCARD`&quot; - &quot;`UNIONPAY`&quot; - &quot;`VISA`&quot; - &quot;``&quot;
        },
        &quot;paymentStatus&quot;: &quot;A String&quot;, # The status of the payment. Acceptable values are: - &quot;`paymentCaptured`&quot; - &quot;`paymentRejected`&quot; - &quot;`paymentSecured`&quot; - &quot;`pendingAuthorization`&quot;
        &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
          &quot;address&quot;: { # Address of the pickup location where the shipment should be sent. Note that `recipientName` in the address is the name of the business at the pickup location.
            &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
              &quot;A String&quot;,
            ],
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
            &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
          },
          &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
            {
              &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
            },
          ],
          &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
        },
        &quot;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
        &quot;promotions&quot;: [ # The details of the merchant provided promotions applied to the order. To determine which promotions apply to which products, check the `Promotions[].Benefits[].OfferIds` field against the `LineItems[].Product.OfferId` field for each promotion. If a promotion is applied to more than 1 `offerId`, divide the discount value by the number of affected offers to determine how much discount to apply to each `offerId`. Examples: 1. To calculate the line item level discount for a single specific item: For each promotion, subtract the `Promotions[].Benefits[].Discount.value` amount from the `LineItems[].Price.value`. 2. To calculate the line item level discount for multiple quantity of a specific item: For each promotion, divide the `Promotions[].Benefits[].Discount.value` by the quantity of products and substract it from `LineItems[].Product.Price.value` for each quantity item. Only 1 promotion can be applied to an offerId in a given order. To refund an item which had a promotion applied to it, make sure to refund the amount after first subtracting the promotion discount from the item price. More details about the program are here.
          {
            &quot;benefits&quot;: [
              {
                &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
                  &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                  &quot;A String&quot;,
                ],
                &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
                &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
                  &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
              },
            ],
            &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
            &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
            &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
            &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
            &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
            &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
          },
        ],
        &quot;refunds&quot;: [ # Refunds for the order.
          {
            &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
            &quot;amount&quot;: { # The amount that is refunded.
              &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;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
            &quot;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`feeAdjustment`&quot; - &quot;`invalidCoupon`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceAdjustment`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`promoReallocation`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxAdjustment`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
            &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          },
        ],
        &quot;shipments&quot;: [ # Shipments of the order.
          {
            &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. For supported carriers, Google includes the carrier name and tracking URL in emails to customers. For select supported carriers, Google also automatically updates the shipment status based on the provided shipment ID. *Note:* You can also use unsupported carriers, but emails to customers will not include the carrier name or tracking URL, and there will be no automatic order status updates. Supported carriers for US are: - &quot;`ups`&quot; (United Parcel Service) *automatic status updates* - &quot;`usps`&quot; (United States Postal Service) *automatic status updates* - &quot;`fedex`&quot; (FedEx) *automatic status updates * - &quot;`dhl`&quot; (DHL eCommerce) *automatic status updates* (US only) - &quot;`ontrac`&quot; (OnTrac) *automatic status updates * - &quot;`dhl express`&quot; (DHL Express) - &quot;`deliv`&quot; (Deliv) - &quot;`dynamex`&quot; (TForce) - &quot;`lasership`&quot; (LaserShip) - &quot;`mpx`&quot; (Military Parcel Xpress) - &quot;`uds`&quot; (United Delivery Service) - &quot;`efw`&quot; (Estes Forwarding Worldwide) - &quot;`jd logistics`&quot; (JD Logistics) - &quot;`yunexpress`&quot; (YunExpress) - &quot;`china post`&quot; (China Post) - &quot;`china ems`&quot; (China Post Express Mail Service) - &quot;`singapore post`&quot; (Singapore Post) - &quot;`pos malaysia`&quot; (Pos Malaysia) - &quot;`postnl`&quot; (PostNL) - &quot;`ptt`&quot; (PTT Turkish Post) - &quot;`eub`&quot; (ePacket) - &quot;`chukou1`&quot; (Chukou1 Logistics) - &quot;`bestex`&quot; (Best Express) - &quot;`canada post`&quot; (Canada Post) - &quot;`purolator`&quot; (Purolator) - &quot;`canpar`&quot; (Canpar) - &quot;`india post`&quot; (India Post) - &quot;`blue dart`&quot; (Blue Dart) - &quot;`delhivery`&quot; (Delhivery) - &quot;`dtdc`&quot; (DTDC) - &quot;`tpc india`&quot; (TPC India) Supported carriers for FR are: - &quot;`la poste`&quot; (La Poste) *automatic status updates * - &quot;`colissimo`&quot; (Colissimo by La Poste) *automatic status updates* - &quot;`ups`&quot; (United Parcel Service) *automatic status updates * - &quot;`chronopost`&quot; (Chronopost by La Poste) - &quot;`gls`&quot; (General Logistics Systems France) - &quot;`dpd`&quot; (DPD Group by GeoPost) - &quot;`bpost`&quot; (Belgian Post Group) - &quot;`colis prive`&quot; (Colis Privé) - &quot;`boxtal`&quot; (Boxtal) - &quot;`geodis`&quot; (GEODIS) - &quot;`tnt`&quot; (TNT) - &quot;`db schenker`&quot; (DB Schenker) - &quot;`aramex`&quot; (Aramex)
            &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
            &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Present only if `status` is `delivered`
            &quot;id&quot;: &quot;A String&quot;, # The ID of the shipment.
            &quot;lineItems&quot;: [ # The line items that are shipped.
              {
                &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
                &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
                &quot;quantity&quot;: 42, # The quantity that is shipped.
              },
            ],
            &quot;scheduledDeliveryDetails&quot;: { # Delivery details of the shipment if scheduling is needed.
              &quot;carrierPhoneNumber&quot;: &quot;A String&quot;, # The phone number of the carrier fulfilling the delivery. The phone number is formatted as the international notation in ITU-T Recommendation E.123 (e.g., &quot;+41 44 668 1800&quot;).
              &quot;scheduledDate&quot;: &quot;A String&quot;, # The date a shipment is scheduled for delivery, in ISO 8601 format.
            },
            &quot;status&quot;: &quot;A String&quot;, # The status of the shipment. Acceptable values are: - &quot;`delivered`&quot; - &quot;`readyForPickup`&quot; - &quot;`shipped`&quot; - &quot;`undeliverable`&quot;
            &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
          },
        ],
        &quot;shippingCost&quot;: { # The total cost of shipping for all items.
          &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;shippingCostTax&quot;: { # The tax for the total shipping cost.
          &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;shippingOption&quot;: &quot;A String&quot;, # Deprecated. Shipping details are provided with line items instead. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
        &quot;status&quot;: &quot;A String&quot;, # The status of the order. Acceptable values are: - &quot;`canceled`&quot; - &quot;`delivered`&quot; - &quot;`inProgress`&quot; - &quot;`partiallyDelivered`&quot; - &quot;`partiallyReturned`&quot; - &quot;`partiallyShipped`&quot; - &quot;`pendingShipment`&quot; - &quot;`returned`&quot; - &quot;`shipped`&quot;
        &quot;taxCollector&quot;: &quot;A String&quot;, # The party responsible for collecting and remitting taxes. Acceptable values are: - &quot;`marketplaceFacilitator`&quot; - &quot;`merchant`&quot;
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCustomBatchResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, orderId, x__xgafv=None)</code>
  <pre>Retrieves an order from your Merchant Center account.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Order. Production access (all methods) requires the order manager role. Sandbox access does not.
  &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
  &quot;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&quot;
  &quot;customer&quot;: { # The details of the customer who placed the order.
    &quot;email&quot;: &quot;A String&quot;, # Deprecated.
    &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
    &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
    &quot;invoiceReceivingEmail&quot;: &quot;A String&quot;, # Email address for the merchant to send value-added tax or invoice documentation of the order. Only the last document sent is made available to the customer. For more information, see About automated VAT invoicing for Buy on Google.
    &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences. Contains the marketing opt-in information that is current at the time that the merchant call. User preference selections can change from one order to the next so preferences must be checked with every order.
      &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last known customer selection regarding marketing preferences. In certain cases this selection might not be known, so this field would be empty. If a customer selected `granted` in their most recent order, they can be subscribed to marketing emails. Customers who have chosen `denied` must not be subscribed, or must be unsubscribed if already opted-in. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
      &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
      &quot;marketingEmailAddress&quot;: &quot;A String&quot;, # Email address that can be used for marketing purposes. The field may be empty even if `explicitMarketingPreference` is &#x27;granted&#x27;. This happens when retrieving an old order from the customer who deleted their account.
    },
  },
  &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
    &quot;address&quot;: { # The delivery address
      &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
      &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
        &quot;A String&quot;,
      ],
      &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
      &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
      &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
      &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
      &quot;streetAddress&quot;: [ # Street-level part of the address.
        &quot;A String&quot;,
      ],
    },
    &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
  },
  &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#order`&quot;
  &quot;lineItems&quot;: [ # Line items that are ordered.
    {
      &quot;annotations&quot;: [ # Annotations that are attached to the line item.
        {
          &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
          &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
        },
      ],
      &quot;cancellations&quot;: [ # Cancellations of the line item.
        {
          &quot;actor&quot;: &quot;A String&quot;, # The actor that created the cancellation. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
          &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the cancellation has been created, in ISO 8601 format.
          &quot;quantity&quot;: 42, # The quantity that was canceled.
          &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Orders that are canceled with a noInventory reason will lead to the removal of the product from Buy on Google until you make an update to that product. This will not affect your Shopping ads. Acceptable values are: - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerInitiatedCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceError`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        },
      ],
      &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
      &quot;price&quot;: { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
        &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;product&quot;: { # Product data as seen by customer from the time of the order placement. Note that certain attributes values (e.g. title or gtin) might be reformatted and no longer match values submitted via product feed.
        &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
        &quot;channel&quot;: &quot;A String&quot;, # The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
        &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
        &quot;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
        &quot;fees&quot;: [ # Associated fees at order creation time.
          {
            &quot;amount&quot;: { # Amount of the fee.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
          },
        ],
        &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
        &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product.
        &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
        &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
        &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
        &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
        &quot;price&quot;: { # Price of the item.
          &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;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
        &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
        &quot;title&quot;: &quot;A String&quot;, # The title of the product.
        &quot;variantAttributes&quot;: [ # Variant attributes for the item. These are dimensions of the product, such as color, gender, material, pattern, and size. You can find a comprehensive list of variant attributes here.
          {
            &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
            &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
          },
        ],
      },
      &quot;quantityCanceled&quot;: 42, # Number of items canceled.
      &quot;quantityDelivered&quot;: 42, # Number of items delivered.
      &quot;quantityOrdered&quot;: 42, # Number of items ordered.
      &quot;quantityPending&quot;: 42, # Number of items pending.
      &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
      &quot;quantityReturned&quot;: 42, # Number of items returned.
      &quot;quantityShipped&quot;: 42, # Number of items shipped.
      &quot;returnInfo&quot;: { # Details of the return policy for the line item.
        &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
        &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
        &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
      },
      &quot;returns&quot;: [ # Returns of the line item.
        {
          &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
          &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
          &quot;quantity&quot;: 42, # Quantity that is returned.
          &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        },
      ],
      &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
        &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
        &quot;method&quot;: { # Required. Details of the shipping method.
          &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
          &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
          &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
          &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
        },
        &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
        &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
      },
      &quot;tax&quot;: { # Total tax amount for the line item. For example, if two items are purchased, and each have a cost tax of $2, the total tax amount will be $4.
        &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;merchantId&quot;: &quot;A String&quot;,
  &quot;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
  &quot;netAmount&quot;: { # The net amount for the order. For example, if an order was originally for a grand total of $100 and a refund was issued for $20, the net amount will be $80.
    &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;paymentMethod&quot;: { # The details of the payment method.
    &quot;billingAddress&quot;: { # The billing address.
      &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
      &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
        &quot;A String&quot;,
      ],
      &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
      &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
      &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
      &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
      &quot;streetAddress&quot;: [ # Street-level part of the address.
        &quot;A String&quot;,
      ],
    },
    &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
    &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
    &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
    &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`JCB`&quot; - &quot;`MASTERCARD`&quot; - &quot;`UNIONPAY`&quot; - &quot;`VISA`&quot; - &quot;``&quot;
  },
  &quot;paymentStatus&quot;: &quot;A String&quot;, # The status of the payment. Acceptable values are: - &quot;`paymentCaptured`&quot; - &quot;`paymentRejected`&quot; - &quot;`paymentSecured`&quot; - &quot;`pendingAuthorization`&quot;
  &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
    &quot;address&quot;: { # Address of the pickup location where the shipment should be sent. Note that `recipientName` in the address is the name of the business at the pickup location.
      &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
      &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
        &quot;A String&quot;,
      ],
      &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
      &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
      &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
      &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
      &quot;streetAddress&quot;: [ # Street-level part of the address.
        &quot;A String&quot;,
      ],
    },
    &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
      {
        &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
      },
    ],
    &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
  },
  &quot;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
  &quot;promotions&quot;: [ # The details of the merchant provided promotions applied to the order. To determine which promotions apply to which products, check the `Promotions[].Benefits[].OfferIds` field against the `LineItems[].Product.OfferId` field for each promotion. If a promotion is applied to more than 1 `offerId`, divide the discount value by the number of affected offers to determine how much discount to apply to each `offerId`. Examples: 1. To calculate the line item level discount for a single specific item: For each promotion, subtract the `Promotions[].Benefits[].Discount.value` amount from the `LineItems[].Price.value`. 2. To calculate the line item level discount for multiple quantity of a specific item: For each promotion, divide the `Promotions[].Benefits[].Discount.value` by the quantity of products and substract it from `LineItems[].Product.Price.value` for each quantity item. Only 1 promotion can be applied to an offerId in a given order. To refund an item which had a promotion applied to it, make sure to refund the amount after first subtracting the promotion discount from the item price. More details about the program are here.
    {
      &quot;benefits&quot;: [
        {
          &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
            &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
            &quot;A String&quot;,
          ],
          &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
          &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
            &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
        },
      ],
      &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
      &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
      &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
      &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
      &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
      &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
    },
  ],
  &quot;refunds&quot;: [ # Refunds for the order.
    {
      &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
      &quot;amount&quot;: { # The amount that is refunded.
        &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;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
      &quot;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`feeAdjustment`&quot; - &quot;`invalidCoupon`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceAdjustment`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`promoReallocation`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxAdjustment`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
      &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    },
  ],
  &quot;shipments&quot;: [ # Shipments of the order.
    {
      &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. For supported carriers, Google includes the carrier name and tracking URL in emails to customers. For select supported carriers, Google also automatically updates the shipment status based on the provided shipment ID. *Note:* You can also use unsupported carriers, but emails to customers will not include the carrier name or tracking URL, and there will be no automatic order status updates. Supported carriers for US are: - &quot;`ups`&quot; (United Parcel Service) *automatic status updates* - &quot;`usps`&quot; (United States Postal Service) *automatic status updates* - &quot;`fedex`&quot; (FedEx) *automatic status updates * - &quot;`dhl`&quot; (DHL eCommerce) *automatic status updates* (US only) - &quot;`ontrac`&quot; (OnTrac) *automatic status updates * - &quot;`dhl express`&quot; (DHL Express) - &quot;`deliv`&quot; (Deliv) - &quot;`dynamex`&quot; (TForce) - &quot;`lasership`&quot; (LaserShip) - &quot;`mpx`&quot; (Military Parcel Xpress) - &quot;`uds`&quot; (United Delivery Service) - &quot;`efw`&quot; (Estes Forwarding Worldwide) - &quot;`jd logistics`&quot; (JD Logistics) - &quot;`yunexpress`&quot; (YunExpress) - &quot;`china post`&quot; (China Post) - &quot;`china ems`&quot; (China Post Express Mail Service) - &quot;`singapore post`&quot; (Singapore Post) - &quot;`pos malaysia`&quot; (Pos Malaysia) - &quot;`postnl`&quot; (PostNL) - &quot;`ptt`&quot; (PTT Turkish Post) - &quot;`eub`&quot; (ePacket) - &quot;`chukou1`&quot; (Chukou1 Logistics) - &quot;`bestex`&quot; (Best Express) - &quot;`canada post`&quot; (Canada Post) - &quot;`purolator`&quot; (Purolator) - &quot;`canpar`&quot; (Canpar) - &quot;`india post`&quot; (India Post) - &quot;`blue dart`&quot; (Blue Dart) - &quot;`delhivery`&quot; (Delhivery) - &quot;`dtdc`&quot; (DTDC) - &quot;`tpc india`&quot; (TPC India) Supported carriers for FR are: - &quot;`la poste`&quot; (La Poste) *automatic status updates * - &quot;`colissimo`&quot; (Colissimo by La Poste) *automatic status updates* - &quot;`ups`&quot; (United Parcel Service) *automatic status updates * - &quot;`chronopost`&quot; (Chronopost by La Poste) - &quot;`gls`&quot; (General Logistics Systems France) - &quot;`dpd`&quot; (DPD Group by GeoPost) - &quot;`bpost`&quot; (Belgian Post Group) - &quot;`colis prive`&quot; (Colis Privé) - &quot;`boxtal`&quot; (Boxtal) - &quot;`geodis`&quot; (GEODIS) - &quot;`tnt`&quot; (TNT) - &quot;`db schenker`&quot; (DB Schenker) - &quot;`aramex`&quot; (Aramex)
      &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
      &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Present only if `status` is `delivered`
      &quot;id&quot;: &quot;A String&quot;, # The ID of the shipment.
      &quot;lineItems&quot;: [ # The line items that are shipped.
        {
          &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
          &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
          &quot;quantity&quot;: 42, # The quantity that is shipped.
        },
      ],
      &quot;scheduledDeliveryDetails&quot;: { # Delivery details of the shipment if scheduling is needed.
        &quot;carrierPhoneNumber&quot;: &quot;A String&quot;, # The phone number of the carrier fulfilling the delivery. The phone number is formatted as the international notation in ITU-T Recommendation E.123 (e.g., &quot;+41 44 668 1800&quot;).
        &quot;scheduledDate&quot;: &quot;A String&quot;, # The date a shipment is scheduled for delivery, in ISO 8601 format.
      },
      &quot;status&quot;: &quot;A String&quot;, # The status of the shipment. Acceptable values are: - &quot;`delivered`&quot; - &quot;`readyForPickup`&quot; - &quot;`shipped`&quot; - &quot;`undeliverable`&quot;
      &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
    },
  ],
  &quot;shippingCost&quot;: { # The total cost of shipping for all items.
    &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;shippingCostTax&quot;: { # The tax for the total shipping cost.
    &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;shippingOption&quot;: &quot;A String&quot;, # Deprecated. Shipping details are provided with line items instead. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
  &quot;status&quot;: &quot;A String&quot;, # The status of the order. Acceptable values are: - &quot;`canceled`&quot; - &quot;`delivered`&quot; - &quot;`inProgress`&quot; - &quot;`partiallyDelivered`&quot; - &quot;`partiallyReturned`&quot; - &quot;`partiallyShipped`&quot; - &quot;`pendingShipment`&quot; - &quot;`returned`&quot; - &quot;`shipped`&quot;
  &quot;taxCollector&quot;: &quot;A String&quot;, # The party responsible for collecting and remitting taxes. Acceptable values are: - &quot;`marketplaceFacilitator`&quot; - &quot;`merchant`&quot;
}</pre>
</div>

<div class="method">
    <code class="details" id="getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId, x__xgafv=None)</code>
  <pre>Retrieves an order using merchant order ID.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  merchantOrderId: string, The merchant order ID to be looked for. (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#ordersGetByMerchantOrderIdResponse&quot;.
  &quot;order&quot;: { # Order. Production access (all methods) requires the order manager role. Sandbox access does not. # The requested order.
    &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
    &quot;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&quot;
    &quot;customer&quot;: { # The details of the customer who placed the order.
      &quot;email&quot;: &quot;A String&quot;, # Deprecated.
      &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
      &quot;invoiceReceivingEmail&quot;: &quot;A String&quot;, # Email address for the merchant to send value-added tax or invoice documentation of the order. Only the last document sent is made available to the customer. For more information, see About automated VAT invoicing for Buy on Google.
      &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences. Contains the marketing opt-in information that is current at the time that the merchant call. User preference selections can change from one order to the next so preferences must be checked with every order.
        &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last known customer selection regarding marketing preferences. In certain cases this selection might not be known, so this field would be empty. If a customer selected `granted` in their most recent order, they can be subscribed to marketing emails. Customers who have chosen `denied` must not be subscribed, or must be unsubscribed if already opted-in. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
        &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
        &quot;marketingEmailAddress&quot;: &quot;A String&quot;, # Email address that can be used for marketing purposes. The field may be empty even if `explicitMarketingPreference` is &#x27;granted&#x27;. This happens when retrieving an old order from the customer who deleted their account.
      },
    },
    &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
      &quot;address&quot;: { # The delivery address
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
          &quot;A String&quot;,
        ],
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
    },
    &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#order`&quot;
    &quot;lineItems&quot;: [ # Line items that are ordered.
      {
        &quot;annotations&quot;: [ # Annotations that are attached to the line item.
          {
            &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
            &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
          },
        ],
        &quot;cancellations&quot;: [ # Cancellations of the line item.
          {
            &quot;actor&quot;: &quot;A String&quot;, # The actor that created the cancellation. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
            &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the cancellation has been created, in ISO 8601 format.
            &quot;quantity&quot;: 42, # The quantity that was canceled.
            &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Orders that are canceled with a noInventory reason will lead to the removal of the product from Buy on Google until you make an update to that product. This will not affect your Shopping ads. Acceptable values are: - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerInitiatedCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceError`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
            &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
        &quot;price&quot;: { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
          &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;product&quot;: { # Product data as seen by customer from the time of the order placement. Note that certain attributes values (e.g. title or gtin) might be reformatted and no longer match values submitted via product feed.
          &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
          &quot;channel&quot;: &quot;A String&quot;, # The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
          &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
          &quot;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
          &quot;fees&quot;: [ # Associated fees at order creation time.
            {
              &quot;amount&quot;: { # Amount of the fee.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
            },
          ],
          &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
          &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product.
          &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
          &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
          &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
          &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
          &quot;price&quot;: { # Price of the item.
            &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;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
          &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
          &quot;title&quot;: &quot;A String&quot;, # The title of the product.
          &quot;variantAttributes&quot;: [ # Variant attributes for the item. These are dimensions of the product, such as color, gender, material, pattern, and size. You can find a comprehensive list of variant attributes here.
            {
              &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
            },
          ],
        },
        &quot;quantityCanceled&quot;: 42, # Number of items canceled.
        &quot;quantityDelivered&quot;: 42, # Number of items delivered.
        &quot;quantityOrdered&quot;: 42, # Number of items ordered.
        &quot;quantityPending&quot;: 42, # Number of items pending.
        &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
        &quot;quantityReturned&quot;: 42, # Number of items returned.
        &quot;quantityShipped&quot;: 42, # Number of items shipped.
        &quot;returnInfo&quot;: { # Details of the return policy for the line item.
          &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
          &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
        },
        &quot;returns&quot;: [ # Returns of the line item.
          {
            &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
            &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
            &quot;quantity&quot;: 42, # Quantity that is returned.
            &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
            &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          },
        ],
        &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
          &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
          &quot;method&quot;: { # Required. Details of the shipping method.
            &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
            &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
            &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
            &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
          },
          &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
          &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
        },
        &quot;tax&quot;: { # Total tax amount for the line item. For example, if two items are purchased, and each have a cost tax of $2, the total tax amount will be $4.
          &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;merchantId&quot;: &quot;A String&quot;,
    &quot;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
    &quot;netAmount&quot;: { # The net amount for the order. For example, if an order was originally for a grand total of $100 and a refund was issued for $20, the net amount will be $80.
      &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;paymentMethod&quot;: { # The details of the payment method.
      &quot;billingAddress&quot;: { # The billing address.
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
          &quot;A String&quot;,
        ],
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
      },
      &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
      &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
      &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
      &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`JCB`&quot; - &quot;`MASTERCARD`&quot; - &quot;`UNIONPAY`&quot; - &quot;`VISA`&quot; - &quot;``&quot;
    },
    &quot;paymentStatus&quot;: &quot;A String&quot;, # The status of the payment. Acceptable values are: - &quot;`paymentCaptured`&quot; - &quot;`paymentRejected`&quot; - &quot;`paymentSecured`&quot; - &quot;`pendingAuthorization`&quot;
    &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
      &quot;address&quot;: { # Address of the pickup location where the shipment should be sent. Note that `recipientName` in the address is the name of the business at the pickup location.
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
          &quot;A String&quot;,
        ],
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
      },
      &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
        {
          &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
        },
      ],
      &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
    },
    &quot;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
    &quot;promotions&quot;: [ # The details of the merchant provided promotions applied to the order. To determine which promotions apply to which products, check the `Promotions[].Benefits[].OfferIds` field against the `LineItems[].Product.OfferId` field for each promotion. If a promotion is applied to more than 1 `offerId`, divide the discount value by the number of affected offers to determine how much discount to apply to each `offerId`. Examples: 1. To calculate the line item level discount for a single specific item: For each promotion, subtract the `Promotions[].Benefits[].Discount.value` amount from the `LineItems[].Price.value`. 2. To calculate the line item level discount for multiple quantity of a specific item: For each promotion, divide the `Promotions[].Benefits[].Discount.value` by the quantity of products and substract it from `LineItems[].Product.Price.value` for each quantity item. Only 1 promotion can be applied to an offerId in a given order. To refund an item which had a promotion applied to it, make sure to refund the amount after first subtracting the promotion discount from the item price. More details about the program are here.
      {
        &quot;benefits&quot;: [
          {
            &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
              &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
              &quot;A String&quot;,
            ],
            &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
            &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
              &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
          },
        ],
        &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
        &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
        &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
        &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
        &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
      },
    ],
    &quot;refunds&quot;: [ # Refunds for the order.
      {
        &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
        &quot;amount&quot;: { # The amount that is refunded.
          &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;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`feeAdjustment`&quot; - &quot;`invalidCoupon`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceAdjustment`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`promoReallocation`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxAdjustment`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
        &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
      },
    ],
    &quot;shipments&quot;: [ # Shipments of the order.
      {
        &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. For supported carriers, Google includes the carrier name and tracking URL in emails to customers. For select supported carriers, Google also automatically updates the shipment status based on the provided shipment ID. *Note:* You can also use unsupported carriers, but emails to customers will not include the carrier name or tracking URL, and there will be no automatic order status updates. Supported carriers for US are: - &quot;`ups`&quot; (United Parcel Service) *automatic status updates* - &quot;`usps`&quot; (United States Postal Service) *automatic status updates* - &quot;`fedex`&quot; (FedEx) *automatic status updates * - &quot;`dhl`&quot; (DHL eCommerce) *automatic status updates* (US only) - &quot;`ontrac`&quot; (OnTrac) *automatic status updates * - &quot;`dhl express`&quot; (DHL Express) - &quot;`deliv`&quot; (Deliv) - &quot;`dynamex`&quot; (TForce) - &quot;`lasership`&quot; (LaserShip) - &quot;`mpx`&quot; (Military Parcel Xpress) - &quot;`uds`&quot; (United Delivery Service) - &quot;`efw`&quot; (Estes Forwarding Worldwide) - &quot;`jd logistics`&quot; (JD Logistics) - &quot;`yunexpress`&quot; (YunExpress) - &quot;`china post`&quot; (China Post) - &quot;`china ems`&quot; (China Post Express Mail Service) - &quot;`singapore post`&quot; (Singapore Post) - &quot;`pos malaysia`&quot; (Pos Malaysia) - &quot;`postnl`&quot; (PostNL) - &quot;`ptt`&quot; (PTT Turkish Post) - &quot;`eub`&quot; (ePacket) - &quot;`chukou1`&quot; (Chukou1 Logistics) - &quot;`bestex`&quot; (Best Express) - &quot;`canada post`&quot; (Canada Post) - &quot;`purolator`&quot; (Purolator) - &quot;`canpar`&quot; (Canpar) - &quot;`india post`&quot; (India Post) - &quot;`blue dart`&quot; (Blue Dart) - &quot;`delhivery`&quot; (Delhivery) - &quot;`dtdc`&quot; (DTDC) - &quot;`tpc india`&quot; (TPC India) Supported carriers for FR are: - &quot;`la poste`&quot; (La Poste) *automatic status updates * - &quot;`colissimo`&quot; (Colissimo by La Poste) *automatic status updates* - &quot;`ups`&quot; (United Parcel Service) *automatic status updates * - &quot;`chronopost`&quot; (Chronopost by La Poste) - &quot;`gls`&quot; (General Logistics Systems France) - &quot;`dpd`&quot; (DPD Group by GeoPost) - &quot;`bpost`&quot; (Belgian Post Group) - &quot;`colis prive`&quot; (Colis Privé) - &quot;`boxtal`&quot; (Boxtal) - &quot;`geodis`&quot; (GEODIS) - &quot;`tnt`&quot; (TNT) - &quot;`db schenker`&quot; (DB Schenker) - &quot;`aramex`&quot; (Aramex)
        &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
        &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Present only if `status` is `delivered`
        &quot;id&quot;: &quot;A String&quot;, # The ID of the shipment.
        &quot;lineItems&quot;: [ # The line items that are shipped.
          {
            &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
            &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
            &quot;quantity&quot;: 42, # The quantity that is shipped.
          },
        ],
        &quot;scheduledDeliveryDetails&quot;: { # Delivery details of the shipment if scheduling is needed.
          &quot;carrierPhoneNumber&quot;: &quot;A String&quot;, # The phone number of the carrier fulfilling the delivery. The phone number is formatted as the international notation in ITU-T Recommendation E.123 (e.g., &quot;+41 44 668 1800&quot;).
          &quot;scheduledDate&quot;: &quot;A String&quot;, # The date a shipment is scheduled for delivery, in ISO 8601 format.
        },
        &quot;status&quot;: &quot;A String&quot;, # The status of the shipment. Acceptable values are: - &quot;`delivered`&quot; - &quot;`readyForPickup`&quot; - &quot;`shipped`&quot; - &quot;`undeliverable`&quot;
        &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
      },
    ],
    &quot;shippingCost&quot;: { # The total cost of shipping for all items.
      &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;shippingCostTax&quot;: { # The tax for the total shipping cost.
      &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;shippingOption&quot;: &quot;A String&quot;, # Deprecated. Shipping details are provided with line items instead. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
    &quot;status&quot;: &quot;A String&quot;, # The status of the order. Acceptable values are: - &quot;`canceled`&quot; - &quot;`delivered`&quot; - &quot;`inProgress`&quot; - &quot;`partiallyDelivered`&quot; - &quot;`partiallyReturned`&quot; - &quot;`partiallyShipped`&quot; - &quot;`pendingShipment`&quot; - &quot;`returned`&quot; - &quot;`shipped`&quot;
    &quot;taxCollector&quot;: &quot;A String&quot;, # The party responsible for collecting and remitting taxes. Acceptable values are: - &quot;`marketplaceFacilitator`&quot; - &quot;`merchant`&quot;
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="gettestordertemplate">gettestordertemplate(merchantId, templateName, country=None, x__xgafv=None)</code>
  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.

Args:
  merchantId: string, The ID of the account that should manage the order. This cannot be a multi-client account. (required)
  templateName: string, The name of the template to retrieve. (required)
    Allowed values
      TEMPLATE1 - 
      TEMPLATE2 - 
      TEMPLATE1A - 
      TEMPLATE1B - 
      TEMPLATE3 - 
  country: string, The country of the template to retrieve. Defaults to `US`.
  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#ordersGetTestOrderTemplateResponse&quot;.
  &quot;template&quot;: { # The requested test order template.
    &quot;customer&quot;: { # Required. The details of the customer who placed the order.
      &quot;email&quot;: &quot;A String&quot;, # Required. Email address of the customer. Acceptable values are: - &quot;`pog.dwight.schrute@gmail.com`&quot; - &quot;`pog.jim.halpert@gmail.com`&quot; - &quot;`penpog.pam.beesly@gmail.comding`&quot;
      &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
      &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences.
        &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last know user use selection regards marketing preferences. In certain cases selection might not be known, so this field would be empty. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
        &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
      },
    },
    &quot;enableOrderinvoices&quot;: True or False, # Whether the orderinvoices service should support this order.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#testOrder`&quot;
    &quot;lineItems&quot;: [ # Required. Line items that are ordered. At least one line item must be provided.
      {
        &quot;product&quot;: { # Required. Product data from the time of the order placement.
          &quot;brand&quot;: &quot;A String&quot;, # Required. Brand of the item.
          &quot;channel&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`online`&quot;
          &quot;condition&quot;: &quot;A String&quot;, # Required. Condition or state of the item. Acceptable values are: - &quot;`new`&quot;
          &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item. Acceptable values are: - &quot;`en`&quot; - &quot;`fr`&quot;
          &quot;fees&quot;: [ # Fees for the item. Optional.
            {
              &quot;amount&quot;: { # Amount of the fee.
                &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
              },
              &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
            },
          ],
          &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item. Optional.
          &quot;imageLink&quot;: &quot;A String&quot;, # Required. URL of an image of the item.
          &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product. Optional.
          &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item. Optional.
          &quot;offerId&quot;: &quot;A String&quot;, # Required. An identifier of the item.
          &quot;price&quot;: { # Required. The price for the product. Tax is automatically calculated for orders where marketplace facilitator tax laws are applicable. Otherwise, tax settings from Merchant Center are applied.
            &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;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory // code of the target country of the product.
          &quot;title&quot;: &quot;A String&quot;, # Required. The title of the product.
          &quot;variantAttributes&quot;: [ # Variant attributes for the item. Optional.
            {
              &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
            },
          ],
        },
        &quot;quantityOrdered&quot;: 42, # Required. Number of items ordered.
        &quot;returnInfo&quot;: { # Required. Details of the return policy for the line item.
          &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
          &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
        },
        &quot;shippingDetails&quot;: { # Required. Details of the requested shipping for the line item.
          &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
          &quot;method&quot;: { # Required. Details of the shipping method.
            &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
            &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
            &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
            &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
          },
          &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
          &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
        },
        &quot;unitTax&quot;: { # Deprecated. Ignored if provided.
          &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;notificationMode&quot;: &quot;A String&quot;, # Restricted. Do not use.
    &quot;paymentMethod&quot;: { # The details of the payment method.
      &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
      &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
      &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
      &quot;predefinedBillingAddress&quot;: &quot;A String&quot;, # The billing address. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
      &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Note that real orders might have different values than the four values accepted by `createTestOrder`. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`MASTERCARD`&quot; - &quot;`VISA`&quot;
    },
    &quot;predefinedDeliveryAddress&quot;: &quot;A String&quot;, # Required. Identifier of one of the predefined delivery addresses for the delivery. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
    &quot;predefinedPickupDetails&quot;: &quot;A String&quot;, # Identifier of one of the predefined pickup details. Required for orders containing line items with shipping type `pickup`. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
    &quot;promotions&quot;: [ # Deprecated. Ignored if provided.
      {
        &quot;benefits&quot;: [
          {
            &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
              &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
              &quot;A String&quot;,
            ],
            &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
            &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
              &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
          },
        ],
        &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
        &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
        &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
        &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
        &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
      },
    ],
    &quot;shippingCost&quot;: { # Required. The price of shipping for all items. Shipping tax is automatically calculated for orders where marketplace facilitator tax laws are applicable. Otherwise, tax settings from Merchant Center are applied. Note that shipping is not taxed in certain states.
      &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;shippingCostTax&quot;: { # Deprecated. Ignored if provided.
      &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;shippingOption&quot;: &quot;A String&quot;, # Required. The requested shipping option. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="instorerefundlineitem">instorerefundlineitem(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Deprecated. Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store). Note: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;amountPretax&quot;: { # The amount that is refunded. Required.
    &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;amountTax&quot;: { # Tax amount that correspond to refund amount in amountPretax. Required.
    &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;quantity&quot;: 42, # The quantity to return and refund.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersInStoreRefundLineItemResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, acknowledged=None, maxResults=None, orderBy=None, pageToken=None, placedDateEnd=None, placedDateStart=None, statuses=None, x__xgafv=None)</code>
  <pre>Lists the orders in your Merchant Center account.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  acknowledged: boolean, Obtains orders that match the acknowledgement status. When set to true, obtains orders that have been acknowledged. When false, obtains orders that have not been acknowledged. We recommend using this filter set to `false`, in conjunction with the `acknowledge` call, such that only un-acknowledged orders are returned. 
  maxResults: integer, The maximum number of orders to return in the response, used for paging. The default value is 25 orders per page, and the maximum allowed value is 250 orders per page.
  orderBy: string, Order results by placement date in descending or ascending order. Acceptable values are: - placedDateAsc - placedDateDesc 
  pageToken: string, The token returned by the previous request.
  placedDateEnd: string, Obtains orders placed before this date (exclusively), in ISO 8601 format.
  placedDateStart: string, Obtains orders placed after this date (inclusively), in ISO 8601 format.
  statuses: string, Obtains orders that match any of the specified statuses. Please note that `active` is a shortcut for `pendingShipment` and `partiallyShipped`, and `completed` is a shortcut for `shipped`, `partiallyDelivered`, `delivered`, `partiallyReturned`, `returned`, and `canceled`. (repeated)
    Allowed values
      ACTIVE - 
      COMPLETED - 
      CANCELED - 
      IN_PROGRESS - 
      PENDING_SHIPMENT - 
      PARTIALLY_SHIPPED - 
      SHIPPED - 
      PARTIALLY_DELIVERED - 
      DELIVERED - 
      PARTIALLY_RETURNED - 
      RETURNED - 
  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#ordersListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of orders.
  &quot;resources&quot;: [
    { # Order. Production access (all methods) requires the order manager role. Sandbox access does not.
      &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
      &quot;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&quot;
      &quot;customer&quot;: { # The details of the customer who placed the order.
        &quot;email&quot;: &quot;A String&quot;, # Deprecated.
        &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
        &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
        &quot;invoiceReceivingEmail&quot;: &quot;A String&quot;, # Email address for the merchant to send value-added tax or invoice documentation of the order. Only the last document sent is made available to the customer. For more information, see About automated VAT invoicing for Buy on Google.
        &quot;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences. Contains the marketing opt-in information that is current at the time that the merchant call. User preference selections can change from one order to the next so preferences must be checked with every order.
          &quot;explicitMarketingPreference&quot;: &quot;A String&quot;, # Last known customer selection regarding marketing preferences. In certain cases this selection might not be known, so this field would be empty. If a customer selected `granted` in their most recent order, they can be subscribed to marketing emails. Customers who have chosen `denied` must not be subscribed, or must be unsubscribed if already opted-in. Acceptable values are: - &quot;`denied`&quot; - &quot;`granted`&quot;
          &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # Timestamp when last time marketing preference was updated. Could be empty, if user wasn&#x27;t offered a selection yet.
          &quot;marketingEmailAddress&quot;: &quot;A String&quot;, # Email address that can be used for marketing purposes. The field may be empty even if `explicitMarketingPreference` is &#x27;granted&#x27;. This happens when retrieving an old order from the customer who deleted their account.
        },
      },
      &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
        &quot;address&quot;: { # The delivery address
          &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
            &quot;A String&quot;,
          ],
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
          &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
        },
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
      },
      &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#order`&quot;
      &quot;lineItems&quot;: [ # Line items that are ordered.
        {
          &quot;annotations&quot;: [ # Annotations that are attached to the line item.
            {
              &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
              &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
            },
          ],
          &quot;cancellations&quot;: [ # Cancellations of the line item.
            {
              &quot;actor&quot;: &quot;A String&quot;, # The actor that created the cancellation. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
              &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the cancellation has been created, in ISO 8601 format.
              &quot;quantity&quot;: 42, # The quantity that was canceled.
              &quot;reason&quot;: &quot;A String&quot;, # The reason for the cancellation. Orders that are canceled with a noInventory reason will lead to the removal of the product from Buy on Google until you make an update to that product. This will not affect your Shopping ads. Acceptable values are: - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerInitiatedCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceError`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot;
              &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
            },
          ],
          &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
          &quot;price&quot;: { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
            &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;product&quot;: { # Product data as seen by customer from the time of the order placement. Note that certain attributes values (e.g. title or gtin) might be reformatted and no longer match values submitted via product feed.
            &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
            &quot;channel&quot;: &quot;A String&quot;, # The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
            &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
            &quot;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
            &quot;fees&quot;: [ # Associated fees at order creation time.
              {
                &quot;amount&quot;: { # Amount of the fee.
                  &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
                  &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
              },
            ],
            &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
            &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product.
            &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
            &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
            &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
            &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
            &quot;price&quot;: { # Price of the item.
              &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;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
            &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
            &quot;title&quot;: &quot;A String&quot;, # The title of the product.
            &quot;variantAttributes&quot;: [ # Variant attributes for the item. These are dimensions of the product, such as color, gender, material, pattern, and size. You can find a comprehensive list of variant attributes here.
              {
                &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
                &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
              },
            ],
          },
          &quot;quantityCanceled&quot;: 42, # Number of items canceled.
          &quot;quantityDelivered&quot;: 42, # Number of items delivered.
          &quot;quantityOrdered&quot;: 42, # Number of items ordered.
          &quot;quantityPending&quot;: 42, # Number of items pending.
          &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
          &quot;quantityReturned&quot;: 42, # Number of items returned.
          &quot;quantityShipped&quot;: 42, # Number of items shipped.
          &quot;returnInfo&quot;: { # Details of the return policy for the line item.
            &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
            &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
            &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
          },
          &quot;returns&quot;: [ # Returns of the line item.
            {
              &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
              &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
              &quot;quantity&quot;: 42, # Quantity that is returned.
              &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
              &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
            },
          ],
          &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
            &quot;deliverByDate&quot;: &quot;A String&quot;, # Required. The delivery by date, in ISO 8601 format.
            &quot;method&quot;: { # Required. Details of the shipping method.
              &quot;carrier&quot;: &quot;A String&quot;, # The carrier for the shipping. Optional. See `shipments[].carrier` for a list of acceptable values.
              &quot;maxDaysInTransit&quot;: 42, # Required. Maximum transit time.
              &quot;methodName&quot;: &quot;A String&quot;, # Required. The name of the shipping method.
              &quot;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
            },
            &quot;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
            &quot;type&quot;: &quot;A String&quot;, # Type of shipment. Indicates whether `deliveryDetails` or `pickupDetails` is applicable for this shipment. Acceptable values are: - &quot;`delivery`&quot; - &quot;`pickup`&quot;
          },
          &quot;tax&quot;: { # Total tax amount for the line item. For example, if two items are purchased, and each have a cost tax of $2, the total tax amount will be $4.
            &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;merchantId&quot;: &quot;A String&quot;,
      &quot;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
      &quot;netAmount&quot;: { # The net amount for the order. For example, if an order was originally for a grand total of $100 and a refund was issued for $20, the net amount will be $80.
        &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;paymentMethod&quot;: { # The details of the payment method.
        &quot;billingAddress&quot;: { # The billing address.
          &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
            &quot;A String&quot;,
          ],
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
          &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
        },
        &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
        &quot;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
        &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
        &quot;type&quot;: &quot;A String&quot;, # The type of instrument. Acceptable values are: - &quot;`AMEX`&quot; - &quot;`DISCOVER`&quot; - &quot;`JCB`&quot; - &quot;`MASTERCARD`&quot; - &quot;`UNIONPAY`&quot; - &quot;`VISA`&quot; - &quot;``&quot;
      },
      &quot;paymentStatus&quot;: &quot;A String&quot;, # The status of the payment. Acceptable values are: - &quot;`paymentCaptured`&quot; - &quot;`paymentRejected`&quot; - &quot;`paymentSecured`&quot; - &quot;`pendingAuthorization`&quot;
      &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
        &quot;address&quot;: { # Address of the pickup location where the shipment should be sent. Note that `recipientName` in the address is the name of the business at the pickup location.
          &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;fullAddress&quot;: [ # Strings representing the lines of the printed label for mailing the order, for example: John Smith 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States
            &quot;A String&quot;,
          ],
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;recipientName&quot;: &quot;A String&quot;, # Name of the recipient.
          &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
        },
        &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
          {
            &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
            &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
          },
        ],
        &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
      },
      &quot;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
      &quot;promotions&quot;: [ # The details of the merchant provided promotions applied to the order. To determine which promotions apply to which products, check the `Promotions[].Benefits[].OfferIds` field against the `LineItems[].Product.OfferId` field for each promotion. If a promotion is applied to more than 1 `offerId`, divide the discount value by the number of affected offers to determine how much discount to apply to each `offerId`. Examples: 1. To calculate the line item level discount for a single specific item: For each promotion, subtract the `Promotions[].Benefits[].Discount.value` amount from the `LineItems[].Price.value`. 2. To calculate the line item level discount for multiple quantity of a specific item: For each promotion, divide the `Promotions[].Benefits[].Discount.value` by the quantity of products and substract it from `LineItems[].Product.Price.value` for each quantity item. Only 1 promotion can be applied to an offerId in a given order. To refund an item which had a promotion applied to it, make sure to refund the amount after first subtracting the promotion discount from the item price. More details about the program are here.
        {
          &quot;benefits&quot;: [
            {
              &quot;discount&quot;: { # The discount in the order price when the promotion is applied.
                &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;offerIds&quot;: [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                &quot;A String&quot;,
              ],
              &quot;subType&quot;: &quot;A String&quot;, # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types. Acceptable values are: - &quot;`buyMGetMoneyOff`&quot; - &quot;`buyMGetNMoneyOff`&quot; - &quot;`buyMGetNPercentOff`&quot; - &quot;`buyMGetPercentOff`&quot; - &quot;`freeGift`&quot; - &quot;`freeGiftWithItemId`&quot; - &quot;`freeGiftWithValue`&quot; - &quot;`freeOvernightShipping`&quot; - &quot;`freeShipping`&quot; - &quot;`freeTwoDayShipping`&quot; - &quot;`moneyOff`&quot; - &quot;`percentageOff`&quot; - &quot;`rewardPoints`&quot; - &quot;`salePrice`&quot;
              &quot;taxImpact&quot;: { # The impact on tax when the promotion is applied.
                &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;type&quot;: &quot;A String&quot;, # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping). Acceptable values are: - &quot;`product`&quot; - &quot;`shipping`&quot;
            },
          ],
          &quot;effectiveDates&quot;: &quot;A String&quot;, # The date and time frame when the promotion is active and ready for validation review. Note that the promotion live time may be delayed for a few hours due to the validation review. Start date and end date are separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an expression of the time zone for the sale. The end date is in the same format.
          &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
          &quot;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
          &quot;productApplicability&quot;: &quot;A String&quot;, # Whether the promotion is applicable to all products or only specific products. Acceptable values are: - &quot;`allProducts`&quot; - &quot;`specificProducts`&quot;
          &quot;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
        },
      ],
      &quot;refunds&quot;: [ # Refunds for the order.
        {
          &quot;actor&quot;: &quot;A String&quot;, # The actor that created the refund. Acceptable values are: - &quot;`customer`&quot; - &quot;`googleBot`&quot; - &quot;`googleCustomerService`&quot; - &quot;`googlePayments`&quot; - &quot;`googleSabre`&quot; - &quot;`merchant`&quot;
          &quot;amount&quot;: { # The amount that is refunded.
            &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;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
          &quot;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`autoPostInternal`&quot; - &quot;`autoPostInvalidBillingAddress`&quot; - &quot;`autoPostNoInventory`&quot; - &quot;`autoPostPriceError`&quot; - &quot;`autoPostUndeliverableShippingAddress`&quot; - &quot;`couponAbuse`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`customerSupportRequested`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`failToPushOrderGoogleError`&quot; - &quot;`failToPushOrderMerchantError`&quot; - &quot;`failToPushOrderMerchantFulfillmentError`&quot; - &quot;`failToPushOrderToMerchant`&quot; - &quot;`failToPushOrderToMerchantOutOfStock`&quot; - &quot;`feeAdjustment`&quot; - &quot;`invalidCoupon`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`merchantDidNotShipOnTime`&quot; - &quot;`noInventory`&quot; - &quot;`orderTimeout`&quot; - &quot;`other`&quot; - &quot;`paymentAbuse`&quot; - &quot;`paymentDeclined`&quot; - &quot;`priceAdjustment`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`promoReallocation`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`returnRefundAbuse`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`shippingPriceError`&quot; - &quot;`taxAdjustment`&quot; - &quot;`taxError`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        },
      ],
      &quot;shipments&quot;: [ # Shipments of the order.
        {
          &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. For supported carriers, Google includes the carrier name and tracking URL in emails to customers. For select supported carriers, Google also automatically updates the shipment status based on the provided shipment ID. *Note:* You can also use unsupported carriers, but emails to customers will not include the carrier name or tracking URL, and there will be no automatic order status updates. Supported carriers for US are: - &quot;`ups`&quot; (United Parcel Service) *automatic status updates* - &quot;`usps`&quot; (United States Postal Service) *automatic status updates* - &quot;`fedex`&quot; (FedEx) *automatic status updates * - &quot;`dhl`&quot; (DHL eCommerce) *automatic status updates* (US only) - &quot;`ontrac`&quot; (OnTrac) *automatic status updates * - &quot;`dhl express`&quot; (DHL Express) - &quot;`deliv`&quot; (Deliv) - &quot;`dynamex`&quot; (TForce) - &quot;`lasership`&quot; (LaserShip) - &quot;`mpx`&quot; (Military Parcel Xpress) - &quot;`uds`&quot; (United Delivery Service) - &quot;`efw`&quot; (Estes Forwarding Worldwide) - &quot;`jd logistics`&quot; (JD Logistics) - &quot;`yunexpress`&quot; (YunExpress) - &quot;`china post`&quot; (China Post) - &quot;`china ems`&quot; (China Post Express Mail Service) - &quot;`singapore post`&quot; (Singapore Post) - &quot;`pos malaysia`&quot; (Pos Malaysia) - &quot;`postnl`&quot; (PostNL) - &quot;`ptt`&quot; (PTT Turkish Post) - &quot;`eub`&quot; (ePacket) - &quot;`chukou1`&quot; (Chukou1 Logistics) - &quot;`bestex`&quot; (Best Express) - &quot;`canada post`&quot; (Canada Post) - &quot;`purolator`&quot; (Purolator) - &quot;`canpar`&quot; (Canpar) - &quot;`india post`&quot; (India Post) - &quot;`blue dart`&quot; (Blue Dart) - &quot;`delhivery`&quot; (Delhivery) - &quot;`dtdc`&quot; (DTDC) - &quot;`tpc india`&quot; (TPC India) Supported carriers for FR are: - &quot;`la poste`&quot; (La Poste) *automatic status updates * - &quot;`colissimo`&quot; (Colissimo by La Poste) *automatic status updates* - &quot;`ups`&quot; (United Parcel Service) *automatic status updates * - &quot;`chronopost`&quot; (Chronopost by La Poste) - &quot;`gls`&quot; (General Logistics Systems France) - &quot;`dpd`&quot; (DPD Group by GeoPost) - &quot;`bpost`&quot; (Belgian Post Group) - &quot;`colis prive`&quot; (Colis Privé) - &quot;`boxtal`&quot; (Boxtal) - &quot;`geodis`&quot; (GEODIS) - &quot;`tnt`&quot; (TNT) - &quot;`db schenker`&quot; (DB Schenker) - &quot;`aramex`&quot; (Aramex)
          &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
          &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Present only if `status` is `delivered`
          &quot;id&quot;: &quot;A String&quot;, # The ID of the shipment.
          &quot;lineItems&quot;: [ # The line items that are shipped.
            {
              &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
              &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
              &quot;quantity&quot;: 42, # The quantity that is shipped.
            },
          ],
          &quot;scheduledDeliveryDetails&quot;: { # Delivery details of the shipment if scheduling is needed.
            &quot;carrierPhoneNumber&quot;: &quot;A String&quot;, # The phone number of the carrier fulfilling the delivery. The phone number is formatted as the international notation in ITU-T Recommendation E.123 (e.g., &quot;+41 44 668 1800&quot;).
            &quot;scheduledDate&quot;: &quot;A String&quot;, # The date a shipment is scheduled for delivery, in ISO 8601 format.
          },
          &quot;status&quot;: &quot;A String&quot;, # The status of the shipment. Acceptable values are: - &quot;`delivered`&quot; - &quot;`readyForPickup`&quot; - &quot;`shipped`&quot; - &quot;`undeliverable`&quot;
          &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
        },
      ],
      &quot;shippingCost&quot;: { # The total cost of shipping for all items.
        &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;shippingCostTax&quot;: { # The tax for the total shipping cost.
        &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;shippingOption&quot;: &quot;A String&quot;, # Deprecated. Shipping details are provided with line items instead. Acceptable values are: - &quot;`economy`&quot; - &quot;`expedited`&quot; - &quot;`oneDay`&quot; - &quot;`sameDay`&quot; - &quot;`standard`&quot; - &quot;`twoDay`&quot;
      &quot;status&quot;: &quot;A String&quot;, # The status of the order. Acceptable values are: - &quot;`canceled`&quot; - &quot;`delivered`&quot; - &quot;`inProgress`&quot; - &quot;`partiallyDelivered`&quot; - &quot;`partiallyReturned`&quot; - &quot;`partiallyShipped`&quot; - &quot;`pendingShipment`&quot; - &quot;`returned`&quot; - &quot;`shipped`&quot;
      &quot;taxCollector&quot;: &quot;A String&quot;, # The party responsible for collecting and remitting taxes. Acceptable values are: - &quot;`marketplaceFacilitator`&quot; - &quot;`merchant`&quot;
    },
  ],
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="refund">refund(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Deprecated, please use returnRefundLineItem instead.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order to refund. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;amount&quot;: { # Deprecated. Please use amountPretax and amountTax instead.
    &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;amountPretax&quot;: { # The amount that is refunded. Either amount or amountPretax should be filled.
    &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;amountTax&quot;: { # Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, amountPretax must be set. Calculated automatically if not provided.
    &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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the refund. Acceptable values are: - &quot;`adjustment`&quot; - &quot;`courtesyAdjustment`&quot; - &quot;`customerCanceled`&quot; - &quot;`customerDiscretionaryReturn`&quot; - &quot;`deliveredLateByCarrier`&quot; - &quot;`feeAdjustment`&quot; - &quot;`lateShipmentCredit`&quot; - &quot;`noInventory`&quot; - &quot;`other`&quot; - &quot;`priceError`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`shippingCostAdjustment`&quot; - &quot;`taxAdjustment`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`wrongProductShipped`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersRefundResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="rejectreturnlineitem">rejectreturnlineitem(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Rejects return on an line item.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;quantity&quot;: 42, # The quantity to return and refund.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`damagedOrUsed`&quot; - &quot;`missingComponent`&quot; - &quot;`notEligible`&quot; - &quot;`other`&quot; - &quot;`outOfReturnWindow`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersRejectReturnLineItemResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="returnlineitem">returnlineitem(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Returns a line item.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;quantity&quot;: 42, # The quantity to return.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersReturnLineItemResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="returnrefundlineitem">returnrefundlineitem(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Returns and refunds a line item. Note that this method can only be called on fully shipped orders. Please also note that the Orderreturns API is the preferred way to handle returns after you receive a return from a customer. You can use Orderreturns.list or Orderreturns.get to search for the return, and then use Orderreturns.processreturn to issue the refund. If the return cannot be found, then we recommend using this API to issue a refund.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;amountPretax&quot;: { # The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method).
    &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;amountTax&quot;: { # Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided.
    &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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;quantity&quot;: 42, # The quantity to return and refund. Quantity is required.
  &quot;reason&quot;: &quot;A String&quot;, # The reason for the return. Acceptable values are: - &quot;`customerDiscretionaryReturn`&quot; - &quot;`customerInitiatedMerchantCancel`&quot; - &quot;`deliveredTooLate`&quot; - &quot;`expiredItem`&quot; - &quot;`invalidCoupon`&quot; - &quot;`malformedShippingAddress`&quot; - &quot;`other`&quot; - &quot;`productArrivedDamaged`&quot; - &quot;`productNotAsDescribed`&quot; - &quot;`qualityNotAsExpected`&quot; - &quot;`undeliverableShippingAddress`&quot; - &quot;`unsupportedPoBoxAddress`&quot; - &quot;`wrongProductShipped`&quot;
  &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersReturnRefundLineItemResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="setlineitemmetadata">setlineitemmetadata(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Sets (or overrides if it already exists) merchant provided annotations in the form of key-value pairs. A common use case would be to supply us with additional structured information about a line item that cannot be provided via other methods. Submitted key-value pairs can be retrieved as part of the orders resource.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;annotations&quot;: [
    {
      &quot;key&quot;: &quot;A String&quot;, # Key for additional merchant provided (as key-value pairs) annotation about the line item.
      &quot;value&quot;: &quot;A String&quot;, # Value for additional merchant provided (as key-value pairs) annotation about the line item.
    },
  ],
  &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to set metadata. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to set metadata. This is the REST ID used in the products service. Either lineItemId or productId is required.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersSetLineItemMetadataResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="shiplineitems">shiplineitems(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Marks line item(s) as shipped.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;carrier&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The carrier handling the shipment. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
  &quot;lineItems&quot;: [ # Line items to ship.
    {
      &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item that is shipped. This value is assigned by Google when an order is created. Either lineItemId or productId is required.
      &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to ship. This is the REST ID used in the products service. Either lineItemId or productId is required.
      &quot;quantity&quot;: 42, # The quantity that is shipped.
    },
  ],
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;shipmentGroupId&quot;: &quot;A String&quot;, # ID of the shipment group. Required for orders that use the orderinvoices service.
  &quot;shipmentId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The ID of the shipment.
  &quot;shipmentInfos&quot;: [ # Shipment information. This field is repeated because a single line item can be shipped in several packages (and have several tracking IDs).
    {
      &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
      &quot;shipmentId&quot;: &quot;A String&quot;, # Required. The ID of the shipment. This is assigned by the merchant and is unique to each shipment.
      &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
    },
  ],
  &quot;trackingId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The tracking ID for the shipment.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersShipLineItemsResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="updatelineitemshippingdetails">updatelineitemshippingdetails(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Updates ship by and delivery by dates for a line item.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;deliverByDate&quot;: &quot;A String&quot;, # Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated. Provided date should be within 1 year timeframe and can not be a date in the past.
  &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to set metadata. Either lineItemId or productId is required.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to set metadata. This is the REST ID used in the products service. Either lineItemId or productId is required.
  &quot;shipByDate&quot;: &quot;A String&quot;, # Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated. Provided date should be within 1 year timeframe and can not be a date in the past.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersUpdateLineItemShippingDetailsResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Updates the merchant order ID for a given order.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;merchantOrderId&quot;: &quot;A String&quot;, # The merchant order id to be assigned to the order. Must be unique per merchant.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersUpdateMerchantOrderIdResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateshipment">updateshipment(merchantId, orderId, body=None, x__xgafv=None)</code>
  <pre>Updates a shipment&#x27;s status, carrier, and/or tracking ID.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;carrier&quot;: &quot;A String&quot;, # The carrier handling the shipment. Not updated if missing. See `shipments[].carrier` in the Orders resource representation for a list of acceptable values.
  &quot;deliveryDate&quot;: &quot;A String&quot;, # Date on which the shipment has been delivered, in ISO 8601 format. Optional and can be provided only if `status` is `delivered`.
  &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
  &quot;shipmentId&quot;: &quot;A String&quot;, # The ID of the shipment.
  &quot;status&quot;: &quot;A String&quot;, # New status for the shipment. Not updated if missing. Acceptable values are: - &quot;`delivered`&quot; - &quot;`undeliverable`&quot; - &quot;`readyForPickup`&quot;
  &quot;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment. Not updated if missing.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&quot;
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersUpdateShipmentResponse&quot;.
}</pre>
</div>

</body></html>