<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, orderBy=None, acknowledged=None, statuses=None, maxResults=None, placedDateStart=None, pageToken=None, placedDateEnd=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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersAcknowledgeResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to cancel. Either lineItemId or productId is required.
    &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;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;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;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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCancelLineItemResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;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;paymentMethod&quot;: { # The details of the payment method.
        &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
        &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;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;predefinedBillingAddress&quot;: &quot;A String&quot;, # The billing address. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
      },
      &quot;promotions&quot;: [ # Deprecated. Ignored if provided.
        {
          &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
          &quot;benefits&quot;: [
            {
              &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
          &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
          &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          &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;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;
      &quot;enableOrderinvoices&quot;: True or False, # Whether the orderinvoices service should support this order.
      &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#testOrder`&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;lineItems&quot;: [ # Required. Line items that are ordered. At least one line item must be provided.
        {
          &quot;quantityOrdered&quot;: 42, # Required. Number of items ordered.
          &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;returnInfo&quot;: { # Required. Details of the return policy for the line item.
            &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
            &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
            &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          },
          &quot;product&quot;: { # Required. Product data from the time of the order placement.
            &quot;channel&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`online`&quot;
            &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;fees&quot;: [ # Fees for the item. Optional.
              {
                &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                &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;offerId&quot;: &quot;A String&quot;, # Required. An identifier of the item.
            &quot;title&quot;: &quot;A String&quot;, # Required. The title of the product.
            &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory // code of the target country of the product.
            &quot;brand&quot;: &quot;A String&quot;, # Required. Brand of the item.
            &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item. Optional.
            &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item. Optional.
            &quot;variantAttributes&quot;: [ # Variant attributes for the item. Optional.
              {
                &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
                &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Required. Condition or state of the item. Acceptable values are: - &quot;`new`&quot;
            &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product. Optional.
            &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;imageLink&quot;: &quot;A String&quot;, # Required. URL of an image of the item.
          },
          &quot;shippingDetails&quot;: { # Required. Details of the requested shipping for the line item.
            &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
            &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
              &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;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;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences.
          &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;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;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
        &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      },
      &quot;notificationMode&quot;: &quot;A String&quot;, # Restricted. Do not use.
      &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.
      },
    },
  }

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

Returns:
  An object of the form:

    {
    &quot;orderId&quot;: &quot;A String&quot;, # The ID of the newly created test order.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCreateTestOrderResponse&quot;.
  }</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;returnId&quot;: &quot;A String&quot;, # The ID of the newly created test order return.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersCreateTestReturnResponse&quot;.
  }</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;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
        &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;setLineItemMetadata&quot;: { # Required for `setLineItemMetadata` method.
          &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;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;rejectReturnLineItem&quot;: { # Required for `rejectReturnLineItem` method.
          &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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &quot;quantity&quot;: 42, # The quantity to return and refund.
          &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
        },
        &quot;updateLineItemShippingDetails&quot;: { # Required for `updateLineItemShippingDate` method.
          &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;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;returnRefundLineItem&quot;: { # Required for `returnRefundLineItem` method.
          &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;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;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;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;quantity&quot;: 42, # The quantity to return and refund.
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        },
        &quot;shipLineItems&quot;: { # Required for `shipLineItems` method.
          &quot;shipmentGroupId&quot;: &quot;A String&quot;, # ID of the shipment group. Required for orders that use the orderinvoices service.
          &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;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;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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
            },
          ],
          &quot;shipmentId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The ID of the shipment.
          &quot;lineItems&quot;: [ # Line items to ship.
            {
              &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;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;quantity&quot;: 42, # The quantity that is shipped.
            },
          ],
          &quot;trackingId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The tracking ID for the shipment.
        },
        &quot;merchantOrderId&quot;: &quot;A String&quot;, # The merchant order ID. Required for `updateMerchantOrderId` and `getByMerchantOrderId` methods.
        &quot;cancelLineItem&quot;: { # Required for `cancelLineItem` method.
          &quot;quantity&quot;: 42, # The quantity to cancel.
          &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;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;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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        },
        &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &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;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;returnLineItem&quot;: { # Required for `returnLineItem` method.
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &quot;quantity&quot;: 42, # The quantity to return.
          &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId 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;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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &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;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;quantity&quot;: 42, # The quantity to return and refund.
        },
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;updateShipment&quot;: { # Required for `updateShipment` method.
          &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;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;shipmentId&quot;: &quot;A String&quot;, # The ID of the shipment.
          &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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment. Not updated if missing.
        },
        &quot;cancel&quot;: { # Required for `cancel` method.
          &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &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;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;
      },
    ],
  }

  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#ordersCustomBatchResponse&quot;.
    &quot;entries&quot;: [ # The result of the execution of the batch requests.
      {
        &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;merchantId&quot;: &quot;A String&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;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
          &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
            &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
            &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;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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
              &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
              &quot;streetAddress&quot;: [ # Street-level part of the address.
                &quot;A String&quot;,
              ],
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            },
            &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
              {
                &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
                &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
              },
            ],
          },
          &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
          &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
            &quot;address&quot;: { # The delivery address
              &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
              &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
              &quot;streetAddress&quot;: [ # Street-level part of the address.
                &quot;A String&quot;,
              ],
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            },
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
          },
          &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;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
          &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;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;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card 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;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
            &quot;billingAddress&quot;: { # The billing address.
              &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
              &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
              &quot;streetAddress&quot;: [ # Street-level part of the address.
                &quot;A String&quot;,
              ],
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            },
            &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
          },
          &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
          &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;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;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
              &quot;benefits&quot;: [
                {
                  &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
              &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
              &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
              &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;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&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;shipments&quot;: [ # Shipments of the order.
            {
              &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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
              &quot;lineItems&quot;: [ # The line items that are shipped.
                {
                  &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;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;quantity&quot;: 42, # The quantity that is shipped.
                },
              ],
              &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;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;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
            },
          ],
          &quot;refunds&quot;: [ # Refunds for the order.
            {
              &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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
              &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;lineItems&quot;: [ # Line items that are ordered.
            {
              &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
              &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
              &quot;returns&quot;: [ # Returns of the line item.
                {
                  &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
                  &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
                  &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;quantity&quot;: 42, # Quantity that is returned.
                },
              ],
              &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;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;returnInfo&quot;: { # Details of the return policy for the line item.
                &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
                &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
                &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
              },
              &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;id&quot;: &quot;A String&quot;, # The REST ID of the product.
                &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;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
                &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
                &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;title&quot;: &quot;A String&quot;, # The title of the product.
                &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
                &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;fees&quot;: [ # Associated fees at order creation time.
                  {
                    &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                    &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;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
                &quot;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
                &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
                &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
                &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;value&quot;: &quot;A String&quot;, # The value for the dimension.
                    &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
                  },
                ],
                &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
                &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
              },
              &quot;quantityOrdered&quot;: 42, # Number of items ordered.
              &quot;quantityCanceled&quot;: 42, # Number of items canceled.
              &quot;cancellations&quot;: [ # Cancellations of the line item.
                {
                  &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;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;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;quantityShipped&quot;: 42, # Number of items shipped.
              &quot;quantityDelivered&quot;: 42, # Number of items delivered.
              &quot;quantityReturned&quot;: 42, # Number of items returned.
              &quot;quantityPending&quot;: 42, # Number of items pending.
              &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
                &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
                &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
                  &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;customer&quot;: { # The details of the customer who placed the order.
            &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;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;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;email&quot;: &quot;A String&quot;, # Deprecated.
            &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
            &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
          },
          &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#order`&quot;
        },
        &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          &quot;errors&quot;: [ # A list of errors.
            { # An error returned by the API.
              &quot;reason&quot;: &quot;A String&quot;, # The error code.
              &quot;message&quot;: &quot;A String&quot;, # A description of the error.
              &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            },
          ],
          &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
          &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#ordersCustomBatchResponseEntry`&quot;
        &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
        &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;
      },
    ],
  }</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;merchantId&quot;: &quot;A String&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;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
    &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
      &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
      &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;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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
      &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
        {
          &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
          &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
        },
      ],
    },
    &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
    &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
      &quot;address&quot;: { # The delivery address
        &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
    },
    &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;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
    &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;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;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card 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;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
      &quot;billingAddress&quot;: { # The billing address.
        &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
        &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
        &quot;streetAddress&quot;: [ # Street-level part of the address.
          &quot;A String&quot;,
        ],
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
      &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
    },
    &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
    &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;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;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
        &quot;benefits&quot;: [
          {
            &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
        &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
        &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
        &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;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&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;shipments&quot;: [ # Shipments of the order.
      {
        &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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
        &quot;lineItems&quot;: [ # The line items that are shipped.
          {
            &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;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;quantity&quot;: 42, # The quantity that is shipped.
          },
        ],
        &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;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;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
      },
    ],
    &quot;refunds&quot;: [ # Refunds for the order.
      {
        &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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
        &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;lineItems&quot;: [ # Line items that are ordered.
      {
        &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
        &quot;returns&quot;: [ # Returns of the line item.
          {
            &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
            &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
            &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;quantity&quot;: 42, # Quantity that is returned.
          },
        ],
        &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;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;returnInfo&quot;: { # Details of the return policy for the line item.
          &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
          &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
          &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
        },
        &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;id&quot;: &quot;A String&quot;, # The REST ID of the product.
          &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;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
          &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
          &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;title&quot;: &quot;A String&quot;, # The title of the product.
          &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
          &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;fees&quot;: [ # Associated fees at order creation time.
            {
              &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
              &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;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
          &quot;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
          &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
          &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
          &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;value&quot;: &quot;A String&quot;, # The value for the dimension.
              &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
            },
          ],
          &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
          &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
        },
        &quot;quantityOrdered&quot;: 42, # Number of items ordered.
        &quot;quantityCanceled&quot;: 42, # Number of items canceled.
        &quot;cancellations&quot;: [ # Cancellations of the line item.
          {
            &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;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;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;quantityShipped&quot;: 42, # Number of items shipped.
        &quot;quantityDelivered&quot;: 42, # Number of items delivered.
        &quot;quantityReturned&quot;: 42, # Number of items returned.
        &quot;quantityPending&quot;: 42, # Number of items pending.
        &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
          &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
          &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
            &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;customer&quot;: { # The details of the customer who placed the order.
      &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;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;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;email&quot;: &quot;A String&quot;, # Deprecated.
      &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
      &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
    },
    &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#order`&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;merchantId&quot;: &quot;A String&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;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
      &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
        &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
        &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;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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
        &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
          {
            &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
            &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
          },
        ],
      },
      &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
      &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
        &quot;address&quot;: { # The delivery address
          &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
      },
      &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;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
      &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;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;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card 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;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
        &quot;billingAddress&quot;: { # The billing address.
          &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
          &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
          &quot;streetAddress&quot;: [ # Street-level part of the address.
            &quot;A String&quot;,
          ],
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
        &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
      },
      &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
      &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;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;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
          &quot;benefits&quot;: [
            {
              &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
          &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
          &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          &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;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&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;shipments&quot;: [ # Shipments of the order.
        {
          &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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
          &quot;lineItems&quot;: [ # The line items that are shipped.
            {
              &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;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;quantity&quot;: 42, # The quantity that is shipped.
            },
          ],
          &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;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;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
        },
      ],
      &quot;refunds&quot;: [ # Refunds for the order.
        {
          &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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
          &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;lineItems&quot;: [ # Line items that are ordered.
        {
          &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
          &quot;returns&quot;: [ # Returns of the line item.
            {
              &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
              &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
              &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;quantity&quot;: 42, # Quantity that is returned.
            },
          ],
          &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;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;returnInfo&quot;: { # Details of the return policy for the line item.
            &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
            &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
            &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          },
          &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;id&quot;: &quot;A String&quot;, # The REST ID of the product.
            &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;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
            &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
            &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;title&quot;: &quot;A String&quot;, # The title of the product.
            &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
            &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;fees&quot;: [ # Associated fees at order creation time.
              {
                &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                &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;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
            &quot;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
            &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
            &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
            &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;value&quot;: &quot;A String&quot;, # The value for the dimension.
                &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              },
            ],
            &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
            &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
          },
          &quot;quantityOrdered&quot;: 42, # Number of items ordered.
          &quot;quantityCanceled&quot;: 42, # Number of items canceled.
          &quot;cancellations&quot;: [ # Cancellations of the line item.
            {
              &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;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;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;quantityShipped&quot;: 42, # Number of items shipped.
          &quot;quantityDelivered&quot;: 42, # Number of items delivered.
          &quot;quantityReturned&quot;: 42, # Number of items returned.
          &quot;quantityPending&quot;: 42, # Number of items pending.
          &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
            &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
            &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
              &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;customer&quot;: { # The details of the customer who placed the order.
        &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;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;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;email&quot;: &quot;A String&quot;, # Deprecated.
        &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
        &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      },
      &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#order`&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;template&quot;: { # The requested test order template.
      &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;paymentMethod&quot;: { # The details of the payment method.
        &quot;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card number.
        &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;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;predefinedBillingAddress&quot;: &quot;A String&quot;, # The billing address. Acceptable values are: - &quot;`dwight`&quot; - &quot;`jim`&quot; - &quot;`pam`&quot;
      },
      &quot;promotions&quot;: [ # Deprecated. Ignored if provided.
        {
          &quot;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
          &quot;benefits&quot;: [
            {
              &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
          &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
          &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          &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;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;
      &quot;enableOrderinvoices&quot;: True or False, # Whether the orderinvoices service should support this order.
      &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#testOrder`&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;lineItems&quot;: [ # Required. Line items that are ordered. At least one line item must be provided.
        {
          &quot;quantityOrdered&quot;: 42, # Required. Number of items ordered.
          &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;returnInfo&quot;: { # Required. Details of the return policy for the line item.
            &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
            &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
            &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
          },
          &quot;product&quot;: { # Required. Product data from the time of the order placement.
            &quot;channel&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`online`&quot;
            &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;fees&quot;: [ # Fees for the item. Optional.
              {
                &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                &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;offerId&quot;: &quot;A String&quot;, # Required. An identifier of the item.
            &quot;title&quot;: &quot;A String&quot;, # Required. The title of the product.
            &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory // code of the target country of the product.
            &quot;brand&quot;: &quot;A String&quot;, # Required. Brand of the item.
            &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item. Optional.
            &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item. Optional.
            &quot;variantAttributes&quot;: [ # Variant attributes for the item. Optional.
              {
                &quot;value&quot;: &quot;A String&quot;, # The value for the dimension.
                &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
              },
            ],
            &quot;condition&quot;: &quot;A String&quot;, # Required. Condition or state of the item. Acceptable values are: - &quot;`new`&quot;
            &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product. Optional.
            &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;imageLink&quot;: &quot;A String&quot;, # Required. URL of an image of the item.
          },
          &quot;shippingDetails&quot;: { # Required. Details of the requested shipping for the line item.
            &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
            &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
              &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;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;marketingRightsInfo&quot;: { # Customer&#x27;s marketing preferences.
          &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;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;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
        &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
      },
      &quot;notificationMode&quot;: &quot;A String&quot;, # Restricted. Do not use.
      &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersGetTestOrderTemplateResponse&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;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;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;quantity&quot;: 42, # The quantity to return and refund.
    &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &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;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.
    },
  }

  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, orderBy=None, acknowledged=None, statuses=None, maxResults=None, placedDateStart=None, pageToken=None, placedDateEnd=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)
  orderBy: string, Order results by placement date in descending or ascending order. Acceptable values are: - placedDateAsc - placedDateDesc 
  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. 
  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 - 
  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.
  placedDateStart: string, Obtains orders placed after this date (inclusively), in ISO 8601 format.
  pageToken: string, The token returned by the previous request.
  placedDateEnd: string, Obtains orders placed before this date (exclusively), in ISO 8601 format.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of orders.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#ordersListResponse&quot;.
    &quot;resources&quot;: [
      { # Order. Production access (all methods) requires the order manager role. Sandbox access does not.
        &quot;merchantId&quot;: &quot;A String&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;placedDate&quot;: &quot;A String&quot;, # The date when the order was placed, in ISO 8601 format.
        &quot;pickupDetails&quot;: { # Pickup details for shipments of type `pickup`.
          &quot;locationId&quot;: &quot;A String&quot;, # ID of the pickup location.
          &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;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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          },
          &quot;collectors&quot;: [ # Collectors authorized to pick up shipment from the pickup location.
            {
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number of the person picking up the shipment.
              &quot;name&quot;: &quot;A String&quot;, # Name of the person picking up the shipment.
            },
          ],
        },
        &quot;acknowledged&quot;: True or False, # Whether the order was acknowledged.
        &quot;deliveryDetails&quot;: { # Delivery details for shipments of type `delivery`.
          &quot;address&quot;: { # The delivery address
            &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          },
          &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person receiving the delivery.
        },
        &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;merchantOrderId&quot;: &quot;A String&quot;, # Merchant-provided ID of the order.
        &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;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;lastFourDigits&quot;: &quot;A String&quot;, # The last four digits of the card 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;expirationYear&quot;: 42, # The card expiration year (4-digit, e.g. 2015).
          &quot;phoneNumber&quot;: &quot;A String&quot;, # The billing phone number.
          &quot;billingAddress&quot;: { # The billing address.
            &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;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;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal Code or ZIP (e.g. &quot;94043&quot;).
            &quot;isPostOfficeBox&quot;: True or False, # Whether the address is a post office box.
            &quot;streetAddress&quot;: [ # Street-level part of the address.
              &quot;A String&quot;,
            ],
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          },
          &quot;expirationMonth&quot;: 42, # The card expiration month (January = 1, February = 2 etc.).
        },
        &quot;id&quot;: &quot;A String&quot;, # The REST ID of the order. Globally unique.
        &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;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;id&quot;: &quot;A String&quot;, # The unique ID of the promotion.
            &quot;benefits&quot;: [
              {
                &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;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;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;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;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;redemptionChannel&quot;: &quot;A String&quot;, # Indicates that the promotion is valid online. Acceptable values are: - &quot;`online`&quot;
            &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;longTitle&quot;: &quot;A String&quot;, # The full title of the promotion.
            &quot;genericRedemptionCode&quot;: &quot;A String&quot;, # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
            &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;channelType&quot;: &quot;A String&quot;, # Deprecated. Acceptable values are: - &quot;`googleExpress`&quot; - &quot;`purchasesOnGoogle`&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;shipments&quot;: [ # Shipments of the order.
          {
            &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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
            &quot;lineItems&quot;: [ # The line items that are shipped.
              {
                &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;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;quantity&quot;: 42, # The quantity that is shipped.
              },
            ],
            &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;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;creationDate&quot;: &quot;A String&quot;, # Date on which the shipment has been created, in ISO 8601 format.
          },
        ],
        &quot;refunds&quot;: [ # Refunds for the order.
          {
            &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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
            &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;lineItems&quot;: [ # Line items that are ordered.
          {
            &quot;quantityReadyForPickup&quot;: 42, # Number of items ready for pickup.
            &quot;id&quot;: &quot;A String&quot;, # The ID of the line item.
            &quot;returns&quot;: [ # Returns of the line item.
              {
                &quot;creationDate&quot;: &quot;A String&quot;, # Date on which the item has been created, in ISO 8601 format.
                &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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
                &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;quantity&quot;: 42, # Quantity that is returned.
              },
            ],
            &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;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;returnInfo&quot;: { # Details of the return policy for the line item.
              &quot;policyUrl&quot;: &quot;A String&quot;, # Required. URL of the item return policy.
              &quot;isReturnable&quot;: True or False, # Required. Whether the item is returnable.
              &quot;daysToReturn&quot;: 42, # Required. How many days later the item can be returned.
            },
            &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;id&quot;: &quot;A String&quot;, # The REST ID of the product.
              &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;contentLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language code for the item.
              &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
              &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;title&quot;: &quot;A String&quot;, # The title of the product.
              &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
              &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;fees&quot;: [ # Associated fees at order creation time.
                {
                  &quot;name&quot;: &quot;A String&quot;, # Name of the fee.
                  &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;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
              &quot;shownImage&quot;: &quot;A String&quot;, # URL to the cached image shown to the user when order was placed.
              &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
              &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
              &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;value&quot;: &quot;A String&quot;, # The value for the dimension.
                  &quot;dimension&quot;: &quot;A String&quot;, # The dimension of the variant.
                },
              ],
              &quot;offerId&quot;: &quot;A String&quot;, # An identifier of the item.
              &quot;targetCountry&quot;: &quot;A String&quot;, # The CLDR territory // code of the target country of the product.
            },
            &quot;quantityOrdered&quot;: 42, # Number of items ordered.
            &quot;quantityCanceled&quot;: 42, # Number of items canceled.
            &quot;cancellations&quot;: [ # Cancellations of the line item.
              {
                &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;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;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;quantityShipped&quot;: 42, # Number of items shipped.
            &quot;quantityDelivered&quot;: 42, # Number of items delivered.
            &quot;quantityReturned&quot;: 42, # Number of items returned.
            &quot;quantityPending&quot;: 42, # Number of items pending.
            &quot;shippingDetails&quot;: { # Details of the requested shipping for the line item.
              &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;shipByDate&quot;: &quot;A String&quot;, # Required. The ship by date, in ISO 8601 format.
              &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;minDaysInTransit&quot;: 42, # Required. Minimum transit time.
                &quot;methodName&quot;: &quot;A String&quot;, # Required. The name 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;customer&quot;: { # The details of the customer who placed the order.
          &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;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;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;email&quot;: &quot;A String&quot;, # Deprecated.
          &quot;fullName&quot;: &quot;A String&quot;, # Full name of the customer.
          &quot;explicitMarketingPreference&quot;: True or False, # Deprecated. Please use marketingRightsInfo instead.
        },
        &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#order`&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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &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;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;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;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &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;
  }

  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#ordersRefundResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;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;quantity&quot;: 42, # The quantity to return and refund.
    &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId is required.
    &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &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.
  }

  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#ordersRejectReturnLineItemResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &quot;lineItemId&quot;: &quot;A String&quot;, # The ID of the line item to return. Either lineItemId or productId 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;quantity&quot;: 42, # The quantity to return.
    &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.
  }

  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#ordersReturnLineItemResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;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;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;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;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;quantity&quot;: 42, # The quantity to return and refund.
    &quot;reasonText&quot;: &quot;A String&quot;, # The explanation of the reason.
    &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.
  }

  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;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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &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.
      },
    ],
  }

  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;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;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;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;trackingId&quot;: &quot;A String&quot;, # The tracking ID for the shipment.
      },
    ],
    &quot;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &quot;lineItems&quot;: [ # Line items to ship.
      {
        &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;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;quantity&quot;: 42, # The quantity that is shipped.
      },
    ],
    &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;trackingId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The tracking ID for the shipment.
    &quot;shipmentId&quot;: &quot;A String&quot;, # Deprecated. Please use shipmentInfo instead. The ID of the shipment.
    &quot;shipmentGroupId&quot;: &quot;A String&quot;, # ID of the shipment group. Required for orders that use the orderinvoices service.
  }

  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;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;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;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;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#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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &quot;merchantOrderId&quot;: &quot;A String&quot;, # The merchant order id to be assigned to the order. Must be unique per merchant.
  }

  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#ordersUpdateMerchantOrderIdResponse&quot;.
    &quot;executionStatus&quot;: &quot;A String&quot;, # The status of the execution. Acceptable values are: - &quot;`duplicate`&quot; - &quot;`executed`&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;operationId&quot;: &quot;A String&quot;, # The ID of the operation. Unique across all operations for a given order.
    &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;shipmentId&quot;: &quot;A String&quot;, # The ID of the shipment.
    &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;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>