<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="content_v2.html">Content API for Shopping</a> . <a href="content_v2.accounttax.html">accounttax</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body, dryRun=None)</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. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client 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. This method can only be called for 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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
<p class="firstline">Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
<p class="firstline">Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="custombatch">custombatch(body, dryRun=None)</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. # 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.
      },
    ],
  }

  dryRun: boolean, Flag to run the request in dry-run mode.

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. # 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. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.

Args:
  merchantId: string, The ID of the managing 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.
    "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. This method can only be called for multi-client accounts.

Args:
  merchantId: string, The ID of the managing 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.
        "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="patch">patch(merchantId, accountId, body, dryRun=None)</code>
  <pre>Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.

Args:
  merchantId: string, The ID of the managing 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.
  "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.
}

  dryRun: boolean, Flag to run the request in dry-run mode.

Returns:
  An object of the form:

    { # The tax settings of a merchant account.
    "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="update">update(merchantId, accountId, body, dryRun=None)</code>
  <pre>Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.

Args:
  merchantId: string, The ID of the managing 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.
  "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.
}

  dryRun: boolean, Flag to run the request in dry-run mode.

Returns:
  An object of the form:

    { # The tax settings of a merchant account.
    "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>