<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.accounttax.html">accounttax</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body)</a></code></p>
<p class="firstline">Retrieves and updates tax settings of multiple accounts in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId)</a></code></p>
<p class="firstline">Retrieves the tax settings of the account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists the tax settings of the sub-accounts in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(merchantId, accountId, body)</a></code></p>
<p class="firstline">Updates the tax settings of the account.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="custombatch">custombatch(body)</code>
  <pre>Retrieves and updates tax settings of multiple accounts in a single request.

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

{
    "entries": [ # The request entries to be processed in the batch.
      { # A batch entry encoding a single non-batch accounttax request.
        "batchId": 42, # An entry ID, unique within the batch request.
        "method": "A String",
        "accountTax": { # The tax settings of a merchant account. All methods require the admin role. # The account tax settings to update. Only defined if the method is update.
          "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
            { # Tax calculation rule to apply in a state or province (USA only).
              "country": "A String", # Country code in which tax is applicable.
              "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
              "shippingTaxed": True or False, # If true, shipping charges are also taxed.
              "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
              "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
            },
          ],
          "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
          "accountId": "A String", # The ID of the account to which these account tax settings belong.
        },
        "merchantId": "A String", # The ID of the managing account.
        "accountId": "A String", # The ID of the account for which to get/update account tax settings.
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#accounttaxCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accounttaxCustomBatchResponse".
    "entries": [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch accounttax response.
        "batchId": 42, # The ID of the request entry this entry responds to.
        "accountTax": { # The tax settings of a merchant account. All methods require the admin role. # The retrieved or updated account tax settings.
          "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
            { # Tax calculation rule to apply in a state or province (USA only).
              "country": "A String", # Country code in which tax is applicable.
              "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
              "shippingTaxed": True or False, # If true, shipping charges are also taxed.
              "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
              "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
            },
          ],
          "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
          "accountId": "A String", # The ID of the account to which these account tax settings belong.
        },
        "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.
            },
          ],
        },
        "kind": "content#accounttaxCustomBatchResponseEntry", # Identifies what kind of resource this is. Value: the fixed string "content#accounttaxCustomBatchResponseEntry".
      },
    ],
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # The tax settings of a merchant account. All methods require the admin role.
    "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
      { # Tax calculation rule to apply in a state or province (USA only).
        "country": "A String", # Country code in which tax is applicable.
        "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
        "shippingTaxed": True or False, # If true, shipping charges are also taxed.
        "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
        "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
      },
    ],
    "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
    "accountId": "A String", # The ID of the account to which these account tax settings belong.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
  <pre>Lists the tax settings of the sub-accounts in your Merchant Center account.

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client account. (required)
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of tax settings to return in the response, used for paging.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # The token for the retrieval of the next page of account tax settings.
    "kind": "content#accounttaxListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accounttaxListResponse".
    "resources": [
      { # The tax settings of a merchant account. All methods require the admin role.
        "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
          { # Tax calculation rule to apply in a state or province (USA only).
            "country": "A String", # Country code in which tax is applicable.
            "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
            "shippingTaxed": True or False, # If true, shipping charges are also taxed.
            "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
            "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
          },
        ],
        "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
        "accountId": "A String", # The ID of the account to which these account tax settings belong.
      },
    ],
  }</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="update">update(merchantId, accountId, body)</code>
  <pre>Updates the tax settings of the account.

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

{ # The tax settings of a merchant account. All methods require the admin role.
  "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
    { # Tax calculation rule to apply in a state or province (USA only).
      "country": "A String", # Country code in which tax is applicable.
      "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
      "shippingTaxed": True or False, # If true, shipping charges are also taxed.
      "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
      "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
    },
  ],
  "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
  "accountId": "A String", # The ID of the account to which these account tax settings belong.
}


Returns:
  An object of the form:

    { # The tax settings of a merchant account. All methods require the admin role.
    "rules": [ # Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is equivalent to not charging tax at all.
      { # Tax calculation rule to apply in a state or province (USA only).
        "country": "A String", # Country code in which tax is applicable.
        "ratePercent": "A String", # Explicit tax rate in percent, represented as a floating point number without the percentage character. Must not be negative.
        "shippingTaxed": True or False, # If true, shipping charges are also taxed.
        "locationId": "A String", # State (or province) is which the tax is applicable, described by its location ID (also called criteria ID).
        "useGlobalRate": True or False, # Whether the tax rate is taken from a global tax table or specified explicitly.
      },
    ],
    "kind": "content#accountTax", # Identifies what kind of resource this is. Value: the fixed string "content#accountTax".
    "accountId": "A String", # The ID of the account to which these account tax settings belong.
  }</pre>
</div>

</body></html>