<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_v2sandbox.html">Content API for Shopping</a> . <a href="content_v2sandbox.orders.html">orders</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#acknowledge">acknowledge(merchantId, orderId, body)</a></code></p>
<p class="firstline">Marks an order as acknowledged. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#advancetestorder">advancetestorder(merchantId, orderId)</a></code></p>
<p class="firstline">Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#cancel">cancel(merchantId, orderId, body)</a></code></p>
<p class="firstline">Cancels all line items in an order, making a full refund. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#cancellineitem">cancellineitem(merchantId, orderId, body)</a></code></p>
<p class="firstline">Cancels a line item, making a full refund. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#createtestorder">createtestorder(merchantId, body)</a></code></p>
<p class="firstline">Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body)</a></code></p>
<p class="firstline">Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, orderId)</a></code></p>
<p class="firstline">Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</a></code></p>
<p class="firstline">Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#gettestordertemplate">gettestordertemplate(merchantId, templateName)</a></code></p>
<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</a></code></p>
<p class="firstline">Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.</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)</a></code></p>
<p class="firstline">Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#returnlineitem">returnlineitem(merchantId, orderId, body)</a></code></p>
<p class="firstline">Returns a line item. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#shiplineitems">shiplineitems(merchantId, orderId, body)</a></code></p>
<p class="firstline">Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</a></code></p>
<p class="firstline">Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#updateshipment">updateshipment(merchantId, orderId, body)</a></code></p>
<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="acknowledge">acknowledge(merchantId, orderId, body)</code>
  <pre>Marks an order as acknowledged. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

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


Returns:
  An object of the form:

    {
    "kind": "content#ordersAcknowledgeResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersAcknowledgeResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="advancetestorder">advancetestorder(merchantId, orderId)</code>
  <pre>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the test order to modify. (required)

Returns:
  An object of the form:

    {
    "kind": "content#ordersAdvanceTestOrderResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersAdvanceTestOrderResponse".
  }</pre>
</div>

<div class="method">
    <code class="details" id="cancel">cancel(merchantId, orderId, body)</code>
  <pre>Cancels all line items in an order, making a full refund. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order to cancel. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "reason": "A String", # The reason for the cancellation.
    "reasonText": "A String", # The explanation of the reason.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersCancelResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersCancelResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="cancellineitem">cancellineitem(merchantId, orderId, body)</code>
  <pre>Cancels a line item, making a full refund. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "reason": "A String", # The reason for the cancellation.
    "amount": { # 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.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "reasonText": "A String", # The explanation of the reason.
    "lineItemId": "A String", # The ID of the line item to cancel.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
    "quantity": 42, # The quantity to cancel.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersCancelLineItemResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersCancelLineItemResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="createtestorder">createtestorder(merchantId, body)</code>
  <pre>Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "testOrder": { # The test order to create.
      "customer": { # The details of the customer who placed the order.
        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
        "fullName": "A String", # Full name of the customer.
        "email": "A String", # Email address of the customer.
      },
      "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
        {
          "benefits": [
            {
              "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                "A String",
              ],
              "discount": { # The discount in the order price when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
              "taxImpact": { # The impact on tax when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
            },
          ],
          "longTitle": "A String", # The full title of the promotion.
          "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          "redemptionChannel": "A String", # Indicates that the promotion is valid online.
          "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
          "effectiveDates": "A String", # 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.
          "id": "A String", # The unique ID of the promotion.
        },
      ],
      "kind": "content#testOrder", # Identifies what kind of resource this is. Value: the fixed string "content#testOrder".
      "shippingCostTax": { # The tax for the total shipping cost.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "predefinedDeliveryAddress": "A String", # Identifier of one of the predefined delivery addresses for the delivery.
      "shippingCost": { # The total cost of shipping for all items.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "shippingOption": "A String", # The requested shipping option.
      "lineItems": [ # Line items that are ordered. At least one line item must be provided.
        {
          "returnInfo": { # Details of the return policy for the line item.
            "policyUrl": "A String", # URL of the item return policy.
            "isReturnable": True or False, # Whether the item is returnable.
            "daysToReturn": 42, # How many days later the item can be returned.
          },
          "product": { # Product data from the time of the order placement.
            "targetCountry": "A String", # The CLDR territory code of the target country of the product.
            "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
            "title": "A String", # The title of the product.
            "mpn": "A String", # Manufacturer Part Number (MPN) of the item. Optional.
            "variantAttributes": [ # Variant attributes for the item. Optional.
              {
                "dimension": "A String", # The dimension of the variant.
                "value": "A String", # The value for the dimension.
              },
            ],
            "brand": "A String", # Brand of the item.
            "itemGroupId": "A String", # Shared identifier for all variants of the same product. Optional.
            "offerId": "A String", # An identifier of the item.
            "imageLink": "A String", # URL of an image of the item.
            "gtin": "A String", # Global Trade Item Number (GTIN) of the item. Optional.
            "channel": "A String", # The item's channel.
            "price": { # The price for the product.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "condition": "A String", # Condition or state of the item.
          },
          "unitTax": { # Unit tax for the line item.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "quantityOrdered": 42, # Number of items ordered.
          "shippingDetails": { # Details of the requested shipping for the line item.
            "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
            "method": { # Details of the shipping method.
              "minDaysInTransit": 42, # Minimum transit time.
              "carrier": "A String", # The carrier for the shipping. Optional.
              "methodName": "A String", # The name of the shipping method.
              "maxDaysInTransit": 42, # Maximum transit time.
            },
            "shipByDate": "A String", # The ship by date, in ISO 8601 format.
          },
        },
      ],
      "paymentMethod": { # The details of the payment method.
        "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
        "type": "A String", # The type of instrument. Note that real orders might have different values than the four values accepted by createTestOrder.
        "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
        "lastFourDigits": "A String", # The last four digits of the card number.
        "predefinedBillingAddress": "A String", # The billing address.
      },
    },
    "templateName": "A String", # 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.
  }


Returns:
  An object of the form:

    {
    "orderId": "A String", # The ID of the newly created test order.
    "kind": "content#ordersCreateTestOrderResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersCreateTestOrderResponse".
  }</pre>
</div>

<div class="method">
    <code class="details" id="custombatch">custombatch(body)</code>
  <pre>Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.

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

{
    "entries": [ # The request entries to be processed in the batch.
      {
        "orderId": "A String", # The ID of the order. Required for all methods beside getByMerchantOrderId.
        "merchantOrderId": "A String", # The merchant order id. Required for updateMerchantOrderId and getByMerchantOrderId methods.
        "shipLineItems": { # Required for shipLineItems method.
          "lineItems": [ # Line items to ship.
            {
              "lineItemId": "A String", # The id of the line item that is shipped.
              "quantity": 42, # The quantity that is shipped.
            },
          ],
          "carrier": "A String", # The carrier handling the shipment.
          "trackingId": "A String", # The tracking id for the shipment.
          "shipmentId": "A String", # The ID of the shipment.
        },
        "updateShipment": { # Required for updateShipment method.
          "status": "A String", # New status for the shipment. Not updated if missing.
          "carrier": "A String", # The carrier handling the shipment. Not updated if missing.
          "trackingId": "A String", # The tracking id for the shipment. Not updated if missing.
          "shipmentId": "A String", # The ID of the shipment.
        },
        "method": "A String", # The method to apply.
        "batchId": 42, # An entry ID, unique within the batch request.
        "cancelLineItem": { # Required for cancelLineItem method.
          "amount": { # 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.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "reasonText": "A String", # The explanation of the reason.
          "reason": "A String", # The reason for the cancellation.
          "lineItemId": "A String", # The ID of the line item to cancel.
          "quantity": 42, # The quantity to cancel.
        },
        "refund": { # Required for refund method.
          "amount": { # The amount that is refunded.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "reasonText": "A String", # The explanation of the reason.
          "reason": "A String", # The reason for the refund.
        },
        "cancel": { # Required for cancel method.
          "reason": "A String", # The reason for the cancellation.
          "reasonText": "A String", # The explanation of the reason.
        },
        "returnLineItem": { # Required for returnLineItem method.
          "reason": "A String", # The reason for the return.
          "reasonText": "A String", # The explanation of the reason.
          "lineItemId": "A String", # The ID of the line item to return.
          "quantity": 42, # The quantity to return.
        },
        "merchantId": "A String", # The ID of the managing account.
        "operationId": "A String", # The ID of the operation. Unique across all operations for a given order. Required for all methods beside get and getByMerchantOrderId.
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersCustomBatchResponse".
    "entries": [ # The result of the execution of the batch requests.
      {
        "batchId": 42, # The ID of the request entry this entry responds to.
        "kind": "content#ordersCustomBatchResponseEntry", # Identifies what kind of resource this is. Value: the fixed string "content#ordersCustomBatchResponseEntry".
        "errors": { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          "message": "A String", # The message of the first error in errors.
          "code": 42, # The HTTP status of the first error in errors.
          "errors": [ # A list of errors.
            { # An error returned by the API.
              "reason": "A String", # The error code.
              "domain": "A String", # The domain of the error.
              "message": "A String", # A description of the error.
            },
          ],
        },
        "order": { # The retrieved order. Only defined if the method is get and if the request was successful.
          "customer": { # The details of the customer who placed the order.
            "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
            "fullName": "A String", # Full name of the customer.
            "email": "A String", # Email address of the customer.
          },
          "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
            {
              "benefits": [
                {
                  "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                    "A String",
                  ],
                  "discount": { # The discount in the order price when the promotion is applied.
                    "currency": "A String", # The currency of the price.
                    "value": "A String", # The price represented as a number.
                  },
                  "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
                  "taxImpact": { # The impact on tax when the promotion is applied.
                    "currency": "A String", # The currency of the price.
                    "value": "A String", # The price represented as a number.
                  },
                  "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
                },
              ],
              "longTitle": "A String", # The full title of the promotion.
              "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
              "redemptionChannel": "A String", # Indicates that the promotion is valid online.
              "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
              "effectiveDates": "A String", # 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.
              "id": "A String", # The unique ID of the promotion.
            },
          ],
          "kind": "content#order", # Identifies what kind of resource this is. Value: the fixed string "content#order".
          "shippingCostTax": { # The tax for the total shipping cost.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "shipments": [ # Shipments of the order.
            {
              "status": "A String", # The status of the shipment.
              "creationDate": "A String", # Date on which the shipment has been created, in ISO 8601 format.
              "carrier": "A String", # The carrier handling the shipment.
              "trackingId": "A String", # The tracking id for the shipment.
              "deliveryDate": "A String", # Date on which the shipment has been delivered, in ISO 8601 format. Present only if status is delievered
              "lineItems": [ # The line items that are shipped.
                {
                  "lineItemId": "A String", # The id of the line item that is shipped.
                  "quantity": 42, # The quantity that is shipped.
                },
              ],
              "id": "A String", # The id of the shipment.
            },
          ],
          "refunds": [ # Refunds for the order.
            {
              "amount": { # The amount that is refunded.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
              "reason": "A String", # The reason for the refund.
              "actor": "A String", # The actor that created the refund.
              "reasonText": "A String", # The explanation of the reason.
            },
          ],
          "paymentMethod": { # The details of the payment method.
            "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
            "lastFourDigits": "A String", # The last four digits of the card number.
            "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
            "phoneNumber": "A String", # The billing phone number.
            "billingAddress": { # The billing address.
              "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              "country": "A String", # CLDR country code (e.g. "US").
              "fullAddress": [ # 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
                "A String",
              ],
              "streetAddress": [ # Street-level part of the address.
                "A String",
              ],
              "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
              "recipientName": "A String", # Name of the recipient.
              "isPostOfficeBox": True or False, # Whether the address is a post office box.
              "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
            },
            "type": "A String", # The type of instrument (VISA, Mastercard, etc).
          },
          "shippingCost": { # The total cost of shipping for all items.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "acknowledged": True or False, # Whether the order was acknowledged.
          "paymentStatus": "A String", # The status of the payment.
          "merchantId": "A String",
          "merchantOrderId": "A String", # Merchant-provided id of the order.
          "shippingOption": "A String", # The requested shipping option.
          "status": "A String", # The status of the order.
          "deliveryDetails": { # The details for the delivery.
            "phoneNumber": "A String", # The phone number of the person receiving the delivery.
            "address": { # The delivery address
              "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              "country": "A String", # CLDR country code (e.g. "US").
              "fullAddress": [ # 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
                "A String",
              ],
              "streetAddress": [ # Street-level part of the address.
                "A String",
              ],
              "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
              "recipientName": "A String", # Name of the recipient.
              "isPostOfficeBox": True or False, # Whether the address is a post office box.
              "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
            },
          },
          "placedDate": "A String", # The date when the order was placed, in ISO 8601 format.
          "channelType": "A String", # The channel type of the order: "purchaseOnGoogle" or "googleExpress".
          "lineItems": [ # Line items that are ordered.
            {
              "product": { # Product data from the time of the order placement.
                "targetCountry": "A String", # The CLDR territory code of the target country of the product.
                "shownImage": "A String", # URL to the cached image shown to the user when order was placed.
                "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
                "title": "A String", # The title of the product.
                "mpn": "A String", # Manufacturer Part Number (MPN) of the item.
                "variantAttributes": [ # 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.
                  {
                    "dimension": "A String", # The dimension of the variant.
                    "value": "A String", # The value for the dimension.
                  },
                ],
                "brand": "A String", # Brand of the item.
                "itemGroupId": "A String", # Shared identifier for all variants of the same product.
                "offerId": "A String", # An identifier of the item.
                "price": { # Price of the item.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "imageLink": "A String", # URL of an image of the item.
                "gtin": "A String", # Global Trade Item Number (GTIN) of the item.
                "channel": "A String", # The item's channel (online or local).
                "id": "A String", # The REST id of the product.
                "condition": "A String", # Condition or state of the item.
              },
              "quantityDelivered": 42, # Number of items delivered.
              "returnInfo": { # Details of the return policy for the line item.
                "policyUrl": "A String", # URL of the item return policy.
                "isReturnable": True or False, # Whether the item is returnable.
                "daysToReturn": 42, # How many days later the item can be returned.
              },
              "price": { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "quantityPending": 42, # Number of items pending.
              "tax": { # 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.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "cancellations": [ # Cancellations of the line item.
                {
                  "reason": "A String", # The reason for the cancellation. Orders that are cancelled with a noInventory reason will lead to the removal of the product from POG until you make an update to that product. This will not affect your Shopping ads.
                  "creationDate": "A String", # Date on which the cancellation has been created, in ISO 8601 format.
                  "reasonText": "A String", # The explanation of the reason.
                  "actor": "A String", # The actor that created the cancellation.
                  "quantity": 42, # The quantity that was canceled.
                },
              ],
              "quantityCanceled": 42, # Number of items canceled.
              "quantityOrdered": 42, # Number of items ordered.
              "returns": [ # Returns of the line item.
                {
                  "reason": "A String", # The reason for the return.
                  "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
                  "reasonText": "A String", # The explanation of the reason.
                  "actor": "A String", # The actor that created the refund.
                  "quantity": 42, # Quantity that is returned.
                },
              ],
              "quantityShipped": 42, # Number of items shipped.
              "quantityReturned": 42, # Number of items returned.
              "id": "A String", # The id of the line item.
              "shippingDetails": { # Details of the requested shipping for the line item.
                "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
                "method": { # Details of the shipping method.
                  "minDaysInTransit": 42, # Minimum transit time.
                  "carrier": "A String", # The carrier for the shipping. Optional.
                  "methodName": "A String", # The name of the shipping method.
                  "maxDaysInTransit": 42, # Maximum transit time.
                },
                "shipByDate": "A String", # The ship by date, in ISO 8601 format.
              },
            },
          ],
          "netAmount": { # 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.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "id": "A String", # The REST id of the order. Globally unique.
        },
        "executionStatus": "A String", # The status of the execution. Only defined if the method is not get or getByMerchantOrderId and if the request was successful.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, orderId)</code>
  <pre>Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)

Returns:
  An object of the form:

    {
    "customer": { # The details of the customer who placed the order.
      "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
      "fullName": "A String", # Full name of the customer.
      "email": "A String", # Email address of the customer.
    },
    "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
      {
        "benefits": [
          {
            "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
              "A String",
            ],
            "discount": { # The discount in the order price when the promotion is applied.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
            "taxImpact": { # The impact on tax when the promotion is applied.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
          },
        ],
        "longTitle": "A String", # The full title of the promotion.
        "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
        "redemptionChannel": "A String", # Indicates that the promotion is valid online.
        "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
        "effectiveDates": "A String", # 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.
        "id": "A String", # The unique ID of the promotion.
      },
    ],
    "kind": "content#order", # Identifies what kind of resource this is. Value: the fixed string "content#order".
    "shippingCostTax": { # The tax for the total shipping cost.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "shipments": [ # Shipments of the order.
      {
        "status": "A String", # The status of the shipment.
        "creationDate": "A String", # Date on which the shipment has been created, in ISO 8601 format.
        "carrier": "A String", # The carrier handling the shipment.
        "trackingId": "A String", # The tracking id for the shipment.
        "deliveryDate": "A String", # Date on which the shipment has been delivered, in ISO 8601 format. Present only if status is delievered
        "lineItems": [ # The line items that are shipped.
          {
            "lineItemId": "A String", # The id of the line item that is shipped.
            "quantity": 42, # The quantity that is shipped.
          },
        ],
        "id": "A String", # The id of the shipment.
      },
    ],
    "refunds": [ # Refunds for the order.
      {
        "amount": { # The amount that is refunded.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
        "reason": "A String", # The reason for the refund.
        "actor": "A String", # The actor that created the refund.
        "reasonText": "A String", # The explanation of the reason.
      },
    ],
    "paymentMethod": { # The details of the payment method.
      "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
      "lastFourDigits": "A String", # The last four digits of the card number.
      "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
      "phoneNumber": "A String", # The billing phone number.
      "billingAddress": { # The billing address.
        "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        "country": "A String", # CLDR country code (e.g. "US").
        "fullAddress": [ # 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
          "A String",
        ],
        "streetAddress": [ # Street-level part of the address.
          "A String",
        ],
        "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
        "recipientName": "A String", # Name of the recipient.
        "isPostOfficeBox": True or False, # Whether the address is a post office box.
        "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
      },
      "type": "A String", # The type of instrument (VISA, Mastercard, etc).
    },
    "shippingCost": { # The total cost of shipping for all items.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "acknowledged": True or False, # Whether the order was acknowledged.
    "paymentStatus": "A String", # The status of the payment.
    "merchantId": "A String",
    "merchantOrderId": "A String", # Merchant-provided id of the order.
    "shippingOption": "A String", # The requested shipping option.
    "status": "A String", # The status of the order.
    "deliveryDetails": { # The details for the delivery.
      "phoneNumber": "A String", # The phone number of the person receiving the delivery.
      "address": { # The delivery address
        "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        "country": "A String", # CLDR country code (e.g. "US").
        "fullAddress": [ # 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
          "A String",
        ],
        "streetAddress": [ # Street-level part of the address.
          "A String",
        ],
        "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
        "recipientName": "A String", # Name of the recipient.
        "isPostOfficeBox": True or False, # Whether the address is a post office box.
        "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
      },
    },
    "placedDate": "A String", # The date when the order was placed, in ISO 8601 format.
    "channelType": "A String", # The channel type of the order: "purchaseOnGoogle" or "googleExpress".
    "lineItems": [ # Line items that are ordered.
      {
        "product": { # Product data from the time of the order placement.
          "targetCountry": "A String", # The CLDR territory code of the target country of the product.
          "shownImage": "A String", # URL to the cached image shown to the user when order was placed.
          "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
          "title": "A String", # The title of the product.
          "mpn": "A String", # Manufacturer Part Number (MPN) of the item.
          "variantAttributes": [ # 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.
            {
              "dimension": "A String", # The dimension of the variant.
              "value": "A String", # The value for the dimension.
            },
          ],
          "brand": "A String", # Brand of the item.
          "itemGroupId": "A String", # Shared identifier for all variants of the same product.
          "offerId": "A String", # An identifier of the item.
          "price": { # Price of the item.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "imageLink": "A String", # URL of an image of the item.
          "gtin": "A String", # Global Trade Item Number (GTIN) of the item.
          "channel": "A String", # The item's channel (online or local).
          "id": "A String", # The REST id of the product.
          "condition": "A String", # Condition or state of the item.
        },
        "quantityDelivered": 42, # Number of items delivered.
        "returnInfo": { # Details of the return policy for the line item.
          "policyUrl": "A String", # URL of the item return policy.
          "isReturnable": True or False, # Whether the item is returnable.
          "daysToReturn": 42, # How many days later the item can be returned.
        },
        "price": { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "quantityPending": 42, # Number of items pending.
        "tax": { # 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.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "cancellations": [ # Cancellations of the line item.
          {
            "reason": "A String", # The reason for the cancellation. Orders that are cancelled with a noInventory reason will lead to the removal of the product from POG until you make an update to that product. This will not affect your Shopping ads.
            "creationDate": "A String", # Date on which the cancellation has been created, in ISO 8601 format.
            "reasonText": "A String", # The explanation of the reason.
            "actor": "A String", # The actor that created the cancellation.
            "quantity": 42, # The quantity that was canceled.
          },
        ],
        "quantityCanceled": 42, # Number of items canceled.
        "quantityOrdered": 42, # Number of items ordered.
        "returns": [ # Returns of the line item.
          {
            "reason": "A String", # The reason for the return.
            "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
            "reasonText": "A String", # The explanation of the reason.
            "actor": "A String", # The actor that created the refund.
            "quantity": 42, # Quantity that is returned.
          },
        ],
        "quantityShipped": 42, # Number of items shipped.
        "quantityReturned": 42, # Number of items returned.
        "id": "A String", # The id of the line item.
        "shippingDetails": { # Details of the requested shipping for the line item.
          "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
          "method": { # Details of the shipping method.
            "minDaysInTransit": 42, # Minimum transit time.
            "carrier": "A String", # The carrier for the shipping. Optional.
            "methodName": "A String", # The name of the shipping method.
            "maxDaysInTransit": 42, # Maximum transit time.
          },
          "shipByDate": "A String", # The ship by date, in ISO 8601 format.
        },
      },
    ],
    "netAmount": { # 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.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "id": "A String", # The REST id of the order. Globally unique.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</code>
  <pre>Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  merchantOrderId: string, The merchant order id to be looked for. (required)

Returns:
  An object of the form:

    {
    "kind": "content#ordersGetByMerchantOrderIdResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetByMerchantOrderIdResponse".
    "order": { # The requested order.
      "customer": { # The details of the customer who placed the order.
        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
        "fullName": "A String", # Full name of the customer.
        "email": "A String", # Email address of the customer.
      },
      "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
        {
          "benefits": [
            {
              "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                "A String",
              ],
              "discount": { # The discount in the order price when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
              "taxImpact": { # The impact on tax when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
            },
          ],
          "longTitle": "A String", # The full title of the promotion.
          "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          "redemptionChannel": "A String", # Indicates that the promotion is valid online.
          "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
          "effectiveDates": "A String", # 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.
          "id": "A String", # The unique ID of the promotion.
        },
      ],
      "kind": "content#order", # Identifies what kind of resource this is. Value: the fixed string "content#order".
      "shippingCostTax": { # The tax for the total shipping cost.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "shipments": [ # Shipments of the order.
        {
          "status": "A String", # The status of the shipment.
          "creationDate": "A String", # Date on which the shipment has been created, in ISO 8601 format.
          "carrier": "A String", # The carrier handling the shipment.
          "trackingId": "A String", # The tracking id for the shipment.
          "deliveryDate": "A String", # Date on which the shipment has been delivered, in ISO 8601 format. Present only if status is delievered
          "lineItems": [ # The line items that are shipped.
            {
              "lineItemId": "A String", # The id of the line item that is shipped.
              "quantity": 42, # The quantity that is shipped.
            },
          ],
          "id": "A String", # The id of the shipment.
        },
      ],
      "refunds": [ # Refunds for the order.
        {
          "amount": { # The amount that is refunded.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
          "reason": "A String", # The reason for the refund.
          "actor": "A String", # The actor that created the refund.
          "reasonText": "A String", # The explanation of the reason.
        },
      ],
      "paymentMethod": { # The details of the payment method.
        "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
        "lastFourDigits": "A String", # The last four digits of the card number.
        "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
        "phoneNumber": "A String", # The billing phone number.
        "billingAddress": { # The billing address.
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          "country": "A String", # CLDR country code (e.g. "US").
          "fullAddress": [ # 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
            "A String",
          ],
          "streetAddress": [ # Street-level part of the address.
            "A String",
          ],
          "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
          "recipientName": "A String", # Name of the recipient.
          "isPostOfficeBox": True or False, # Whether the address is a post office box.
          "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
        },
        "type": "A String", # The type of instrument (VISA, Mastercard, etc).
      },
      "shippingCost": { # The total cost of shipping for all items.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "acknowledged": True or False, # Whether the order was acknowledged.
      "paymentStatus": "A String", # The status of the payment.
      "merchantId": "A String",
      "merchantOrderId": "A String", # Merchant-provided id of the order.
      "shippingOption": "A String", # The requested shipping option.
      "status": "A String", # The status of the order.
      "deliveryDetails": { # The details for the delivery.
        "phoneNumber": "A String", # The phone number of the person receiving the delivery.
        "address": { # The delivery address
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          "country": "A String", # CLDR country code (e.g. "US").
          "fullAddress": [ # 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
            "A String",
          ],
          "streetAddress": [ # Street-level part of the address.
            "A String",
          ],
          "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
          "recipientName": "A String", # Name of the recipient.
          "isPostOfficeBox": True or False, # Whether the address is a post office box.
          "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
        },
      },
      "placedDate": "A String", # The date when the order was placed, in ISO 8601 format.
      "channelType": "A String", # The channel type of the order: "purchaseOnGoogle" or "googleExpress".
      "lineItems": [ # Line items that are ordered.
        {
          "product": { # Product data from the time of the order placement.
            "targetCountry": "A String", # The CLDR territory code of the target country of the product.
            "shownImage": "A String", # URL to the cached image shown to the user when order was placed.
            "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
            "title": "A String", # The title of the product.
            "mpn": "A String", # Manufacturer Part Number (MPN) of the item.
            "variantAttributes": [ # 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.
              {
                "dimension": "A String", # The dimension of the variant.
                "value": "A String", # The value for the dimension.
              },
            ],
            "brand": "A String", # Brand of the item.
            "itemGroupId": "A String", # Shared identifier for all variants of the same product.
            "offerId": "A String", # An identifier of the item.
            "price": { # Price of the item.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "imageLink": "A String", # URL of an image of the item.
            "gtin": "A String", # Global Trade Item Number (GTIN) of the item.
            "channel": "A String", # The item's channel (online or local).
            "id": "A String", # The REST id of the product.
            "condition": "A String", # Condition or state of the item.
          },
          "quantityDelivered": 42, # Number of items delivered.
          "returnInfo": { # Details of the return policy for the line item.
            "policyUrl": "A String", # URL of the item return policy.
            "isReturnable": True or False, # Whether the item is returnable.
            "daysToReturn": 42, # How many days later the item can be returned.
          },
          "price": { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "quantityPending": 42, # Number of items pending.
          "tax": { # 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.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "cancellations": [ # Cancellations of the line item.
            {
              "reason": "A String", # The reason for the cancellation. Orders that are cancelled with a noInventory reason will lead to the removal of the product from POG until you make an update to that product. This will not affect your Shopping ads.
              "creationDate": "A String", # Date on which the cancellation has been created, in ISO 8601 format.
              "reasonText": "A String", # The explanation of the reason.
              "actor": "A String", # The actor that created the cancellation.
              "quantity": 42, # The quantity that was canceled.
            },
          ],
          "quantityCanceled": 42, # Number of items canceled.
          "quantityOrdered": 42, # Number of items ordered.
          "returns": [ # Returns of the line item.
            {
              "reason": "A String", # The reason for the return.
              "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
              "reasonText": "A String", # The explanation of the reason.
              "actor": "A String", # The actor that created the refund.
              "quantity": 42, # Quantity that is returned.
            },
          ],
          "quantityShipped": 42, # Number of items shipped.
          "quantityReturned": 42, # Number of items returned.
          "id": "A String", # The id of the line item.
          "shippingDetails": { # Details of the requested shipping for the line item.
            "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
            "method": { # Details of the shipping method.
              "minDaysInTransit": 42, # Minimum transit time.
              "carrier": "A String", # The carrier for the shipping. Optional.
              "methodName": "A String", # The name of the shipping method.
              "maxDaysInTransit": 42, # Maximum transit time.
            },
            "shipByDate": "A String", # The ship by date, in ISO 8601 format.
          },
        },
      ],
      "netAmount": { # 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.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "id": "A String", # The REST id of the order. Globally unique.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="gettestordertemplate">gettestordertemplate(merchantId, templateName)</code>
  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  templateName: string, The name of the template to retrieve. (required)
    Allowed values
      template1 - 
      template1a - 
      template1b - 
      template2 - 

Returns:
  An object of the form:

    {
    "kind": "content#ordersGetTestOrderTemplateResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetTestOrderTemplateResponse".
    "template": { # The requested test order template.
      "customer": { # The details of the customer who placed the order.
        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
        "fullName": "A String", # Full name of the customer.
        "email": "A String", # Email address of the customer.
      },
      "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
        {
          "benefits": [
            {
              "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                "A String",
              ],
              "discount": { # The discount in the order price when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
              "taxImpact": { # The impact on tax when the promotion is applied.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
            },
          ],
          "longTitle": "A String", # The full title of the promotion.
          "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
          "redemptionChannel": "A String", # Indicates that the promotion is valid online.
          "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
          "effectiveDates": "A String", # 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.
          "id": "A String", # The unique ID of the promotion.
        },
      ],
      "kind": "content#testOrder", # Identifies what kind of resource this is. Value: the fixed string "content#testOrder".
      "shippingCostTax": { # The tax for the total shipping cost.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "predefinedDeliveryAddress": "A String", # Identifier of one of the predefined delivery addresses for the delivery.
      "shippingCost": { # The total cost of shipping for all items.
        "currency": "A String", # The currency of the price.
        "value": "A String", # The price represented as a number.
      },
      "shippingOption": "A String", # The requested shipping option.
      "lineItems": [ # Line items that are ordered. At least one line item must be provided.
        {
          "returnInfo": { # Details of the return policy for the line item.
            "policyUrl": "A String", # URL of the item return policy.
            "isReturnable": True or False, # Whether the item is returnable.
            "daysToReturn": 42, # How many days later the item can be returned.
          },
          "product": { # Product data from the time of the order placement.
            "targetCountry": "A String", # The CLDR territory code of the target country of the product.
            "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
            "title": "A String", # The title of the product.
            "mpn": "A String", # Manufacturer Part Number (MPN) of the item. Optional.
            "variantAttributes": [ # Variant attributes for the item. Optional.
              {
                "dimension": "A String", # The dimension of the variant.
                "value": "A String", # The value for the dimension.
              },
            ],
            "brand": "A String", # Brand of the item.
            "itemGroupId": "A String", # Shared identifier for all variants of the same product. Optional.
            "offerId": "A String", # An identifier of the item.
            "imageLink": "A String", # URL of an image of the item.
            "gtin": "A String", # Global Trade Item Number (GTIN) of the item. Optional.
            "channel": "A String", # The item's channel.
            "price": { # The price for the product.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "condition": "A String", # Condition or state of the item.
          },
          "unitTax": { # Unit tax for the line item.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "quantityOrdered": 42, # Number of items ordered.
          "shippingDetails": { # Details of the requested shipping for the line item.
            "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
            "method": { # Details of the shipping method.
              "minDaysInTransit": 42, # Minimum transit time.
              "carrier": "A String", # The carrier for the shipping. Optional.
              "methodName": "A String", # The name of the shipping method.
              "maxDaysInTransit": 42, # Maximum transit time.
            },
            "shipByDate": "A String", # The ship by date, in ISO 8601 format.
          },
        },
      ],
      "paymentMethod": { # The details of the payment method.
        "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
        "type": "A String", # The type of instrument. Note that real orders might have different values than the four values accepted by createTestOrder.
        "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
        "lastFourDigits": "A String", # The last four digits of the card number.
        "predefinedBillingAddress": "A String", # The billing address.
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</code>
  <pre>Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderBy: string, The ordering of the returned list. The only supported value are placedDate desc and placedDate asc for now, which returns orders sorted by placement date. "placedDate desc" stands for listing orders by placement date, from oldest to most recent. "placedDate asc" stands for listing orders by placement date, from most recent to oldest. In future releases we'll support other sorting criteria.
    Allowed values
      placedDate asc - 
      placedDate desc - 
  pageToken: string, The token returned by the previous request.
  placedDateEnd: string, Obtains orders placed before this date (exclusively), in ISO 8601 format.
  acknowledged: boolean, Obtains orders that match the acknowledgement status. When set to true, obtains orders that have been acknowledged. When false, obtains orders that have not been acknowledged.
We recommend using this filter set to false, in conjunction with the acknowledge call, such that only un-acknowledged orders are returned.
  maxResults: integer, The maximum number of orders to return in the response, used for paging. The default value is 25 orders per page, and the maximum allowed value is 250 orders per page.
Known issue: All List calls will return all Orders without limit regardless of the value of this field.
  placedDateStart: string, Obtains orders placed after this date (inclusively), in ISO 8601 format.
  statuses: string, Obtains orders that match any of the specified statuses. Multiple values can be specified with comma separation. Additionally, 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 - 
      canceled - 
      completed - 
      delivered - 
      inProgress - 
      partiallyDelivered - 
      partiallyReturned - 
      partiallyShipped - 
      pendingShipment - 
      returned - 
      shipped - 

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # The token for the retrieval of the next page of orders.
    "kind": "content#ordersListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersListResponse".
    "resources": [
      {
        "customer": { # The details of the customer who placed the order.
          "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
          "fullName": "A String", # Full name of the customer.
          "email": "A String", # Email address of the customer.
        },
        "promotions": [ # The details of the merchant provided promotions applied to the order. More details about the program are  here.
          {
            "benefits": [
              {
                "offerIds": [ # The OfferId(s) that were purchased in this order and map to this specific benefit of the promotion.
                  "A String",
                ],
                "discount": { # The discount in the order price when the promotion is applied.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "type": "A String", # Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free Shipping).
                "taxImpact": { # The impact on tax when the promotion is applied.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "subType": "A String", # Further describes the benefit of the promotion. Note that we will expand on this enumeration as we support new promotion sub-types.
              },
            ],
            "longTitle": "A String", # The full title of the promotion.
            "genericRedemptionCode": "A String", # Optional. The text code that corresponds to the promotion when applied on the retailer?s website.
            "redemptionChannel": "A String", # Indicates that the promotion is valid online.
            "productApplicability": "A String", # Whether the promotion is applicable to all products or only specific products.
            "effectiveDates": "A String", # 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.
            "id": "A String", # The unique ID of the promotion.
          },
        ],
        "kind": "content#order", # Identifies what kind of resource this is. Value: the fixed string "content#order".
        "shippingCostTax": { # The tax for the total shipping cost.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "shipments": [ # Shipments of the order.
          {
            "status": "A String", # The status of the shipment.
            "creationDate": "A String", # Date on which the shipment has been created, in ISO 8601 format.
            "carrier": "A String", # The carrier handling the shipment.
            "trackingId": "A String", # The tracking id for the shipment.
            "deliveryDate": "A String", # Date on which the shipment has been delivered, in ISO 8601 format. Present only if status is delievered
            "lineItems": [ # The line items that are shipped.
              {
                "lineItemId": "A String", # The id of the line item that is shipped.
                "quantity": 42, # The quantity that is shipped.
              },
            ],
            "id": "A String", # The id of the shipment.
          },
        ],
        "refunds": [ # Refunds for the order.
          {
            "amount": { # The amount that is refunded.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
            "reason": "A String", # The reason for the refund.
            "actor": "A String", # The actor that created the refund.
            "reasonText": "A String", # The explanation of the reason.
          },
        ],
        "paymentMethod": { # The details of the payment method.
          "expirationMonth": 42, # The card expiration month (January = 1, February = 2 etc.).
          "lastFourDigits": "A String", # The last four digits of the card number.
          "expirationYear": 42, # The card expiration year (4-digit, e.g. 2015).
          "phoneNumber": "A String", # The billing phone number.
          "billingAddress": { # The billing address.
            "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            "country": "A String", # CLDR country code (e.g. "US").
            "fullAddress": [ # 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
              "A String",
            ],
            "streetAddress": [ # Street-level part of the address.
              "A String",
            ],
            "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
            "recipientName": "A String", # Name of the recipient.
            "isPostOfficeBox": True or False, # Whether the address is a post office box.
            "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
          },
          "type": "A String", # The type of instrument (VISA, Mastercard, etc).
        },
        "shippingCost": { # The total cost of shipping for all items.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "acknowledged": True or False, # Whether the order was acknowledged.
        "paymentStatus": "A String", # The status of the payment.
        "merchantId": "A String",
        "merchantOrderId": "A String", # Merchant-provided id of the order.
        "shippingOption": "A String", # The requested shipping option.
        "status": "A String", # The status of the order.
        "deliveryDetails": { # The details for the delivery.
          "phoneNumber": "A String", # The phone number of the person receiving the delivery.
          "address": { # The delivery address
            "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            "country": "A String", # CLDR country code (e.g. "US").
            "fullAddress": [ # 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
              "A String",
            ],
            "streetAddress": [ # Street-level part of the address.
              "A String",
            ],
            "postalCode": "A String", # Postal Code or ZIP (e.g. "94043").
            "recipientName": "A String", # Name of the recipient.
            "isPostOfficeBox": True or False, # Whether the address is a post office box.
            "region": "A String", # Top-level administrative subdivision of the country (e.g. "CA").
          },
        },
        "placedDate": "A String", # The date when the order was placed, in ISO 8601 format.
        "channelType": "A String", # The channel type of the order: "purchaseOnGoogle" or "googleExpress".
        "lineItems": [ # Line items that are ordered.
          {
            "product": { # Product data from the time of the order placement.
              "targetCountry": "A String", # The CLDR territory code of the target country of the product.
              "shownImage": "A String", # URL to the cached image shown to the user when order was placed.
              "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
              "title": "A String", # The title of the product.
              "mpn": "A String", # Manufacturer Part Number (MPN) of the item.
              "variantAttributes": [ # 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.
                {
                  "dimension": "A String", # The dimension of the variant.
                  "value": "A String", # The value for the dimension.
                },
              ],
              "brand": "A String", # Brand of the item.
              "itemGroupId": "A String", # Shared identifier for all variants of the same product.
              "offerId": "A String", # An identifier of the item.
              "price": { # Price of the item.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "imageLink": "A String", # URL of an image of the item.
              "gtin": "A String", # Global Trade Item Number (GTIN) of the item.
              "channel": "A String", # The item's channel (online or local).
              "id": "A String", # The REST id of the product.
              "condition": "A String", # Condition or state of the item.
            },
            "quantityDelivered": 42, # Number of items delivered.
            "returnInfo": { # Details of the return policy for the line item.
              "policyUrl": "A String", # URL of the item return policy.
              "isReturnable": True or False, # Whether the item is returnable.
              "daysToReturn": 42, # How many days later the item can be returned.
            },
            "price": { # Total price for the line item. For example, if two items for $10 are purchased, the total price will be $20.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "quantityPending": 42, # Number of items pending.
            "tax": { # 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.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "cancellations": [ # Cancellations of the line item.
              {
                "reason": "A String", # The reason for the cancellation. Orders that are cancelled with a noInventory reason will lead to the removal of the product from POG until you make an update to that product. This will not affect your Shopping ads.
                "creationDate": "A String", # Date on which the cancellation has been created, in ISO 8601 format.
                "reasonText": "A String", # The explanation of the reason.
                "actor": "A String", # The actor that created the cancellation.
                "quantity": 42, # The quantity that was canceled.
              },
            ],
            "quantityCanceled": 42, # Number of items canceled.
            "quantityOrdered": 42, # Number of items ordered.
            "returns": [ # Returns of the line item.
              {
                "reason": "A String", # The reason for the return.
                "creationDate": "A String", # Date on which the item has been created, in ISO 8601 format.
                "reasonText": "A String", # The explanation of the reason.
                "actor": "A String", # The actor that created the refund.
                "quantity": 42, # Quantity that is returned.
              },
            ],
            "quantityShipped": 42, # Number of items shipped.
            "quantityReturned": 42, # Number of items returned.
            "id": "A String", # The id of the line item.
            "shippingDetails": { # Details of the requested shipping for the line item.
              "deliverByDate": "A String", # The delivery by date, in ISO 8601 format.
              "method": { # Details of the shipping method.
                "minDaysInTransit": 42, # Minimum transit time.
                "carrier": "A String", # The carrier for the shipping. Optional.
                "methodName": "A String", # The name of the shipping method.
                "maxDaysInTransit": 42, # Maximum transit time.
              },
              "shipByDate": "A String", # The ship by date, in ISO 8601 format.
            },
          },
        ],
        "netAmount": { # 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.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "id": "A String", # The REST id of the order. Globally unique.
      },
    ],
  }</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 'execute()' 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)</code>
  <pre>Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order to refund. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "amount": { # The amount that is refunded.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "reasonText": "A String", # The explanation of the reason.
    "reason": "A String", # The reason for the refund.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersRefundResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersRefundResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="returnlineitem">returnlineitem(merchantId, orderId, body)</code>
  <pre>Returns a line item. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "reason": "A String", # The reason for the return.
    "quantity": 42, # The quantity to return.
    "reasonText": "A String", # The explanation of the reason.
    "lineItemId": "A String", # The ID of the line item to return.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersReturnLineItemResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersReturnLineItemResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="shiplineitems">shiplineitems(merchantId, orderId, body)</code>
  <pre>Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "lineItems": [ # Line items to ship.
      {
        "lineItemId": "A String", # The id of the line item that is shipped.
        "quantity": 42, # The quantity that is shipped.
      },
    ],
    "carrier": "A String", # The carrier handling the shipment.
    "shipmentId": "A String", # The ID of the shipment.
    "trackingId": "A String", # The tracking id for the shipment.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersShipLineItemsResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersShipLineItemsResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</code>
  <pre>Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

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


Returns:
  An object of the form:

    {
    "kind": "content#ordersUpdateMerchantOrderIdResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersUpdateMerchantOrderIdResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="updateshipment">updateshipment(merchantId, orderId, body)</code>
  <pre>Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "status": "A String", # New status for the shipment. Not updated if missing.
    "shipmentId": "A String", # The ID of the shipment.
    "carrier": "A String", # The carrier handling the shipment. Not updated if missing.
    "trackingId": "A String", # The tracking id for the shipment. Not updated if missing.
    "operationId": "A String", # The ID of the operation. Unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#ordersUpdateShipmentResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersUpdateShipmentResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

</body></html>