<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.accounts.html">accounts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#authinfo">authinfo()</a></code></p>
<p class="firstline">Returns information about the authenticated user.</p>
<p class="toc_element">
  <code><a href="#claimwebsite">claimwebsite(merchantId, accountId, overwrite=None)</a></code></p>
<p class="firstline">Claims the website of a Merchant Center sub-account.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body=None)</a></code></p>
<p class="firstline">Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single request.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, accountId, force=None)</a></code></p>
<p class="firstline">Deletes a Merchant Center sub-account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId, view=None)</a></code></p>
<p class="firstline">Retrieves a Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(merchantId, body=None)</a></code></p>
<p class="firstline">Creates a Merchant Center sub-account.</p>
<p class="toc_element">
  <code><a href="#link">link(merchantId, accountId, body=None)</a></code></p>
<p class="firstline">Performs an action on a link between two Merchant Center accounts, namely accountId and linkedAccountId.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, label=None, maxResults=None, pageToken=None, view=None)</a></code></p>
<p class="firstline">Lists 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="#listlinks">listlinks(merchantId, accountId, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Returns the list of accounts linked to your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#listlinks_next">listlinks_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=None)</a></code></p>
<p class="firstline">Updates a Merchant Center account. Any fields that are not provided are deleted from the resource.</p>
<p class="toc_element">
  <code><a href="#updatelabels">updatelabels(merchantId, accountId, body=None)</a></code></p>
<p class="firstline">Updates labels that are assigned to the Merchant Center account by CSS user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="authinfo">authinfo()</code>
  <pre>Returns information about the authenticated user.

Args:

Returns:
  An object of the form:

    {
    &quot;accountIdentifiers&quot;: [ # The account identifiers corresponding to the authenticated user.
        # - For an individual account: only the merchant ID is defined
        # - For an aggregator: only the aggregator ID is defined
        # - For a subaccount of an MCA: both the merchant ID and the aggregator ID are defined.
      {
        &quot;aggregatorId&quot;: &quot;A String&quot;, # The aggregator ID, set for aggregators and subaccounts (in that case, it represents the aggregator of the subaccount).
        &quot;merchantId&quot;: &quot;A String&quot;, # The merchant account ID, set for individual accounts and subaccounts.
      },
    ],
    &quot;kind&quot;: &quot;content#accountsAuthInfoResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsAuthInfoResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="claimwebsite">claimwebsite(merchantId, accountId, overwrite=None)</code>
  <pre>Claims the website of a Merchant Center sub-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 whose website is claimed. (required)
  overwrite: boolean, Only available to selected merchants. When set to `True`, this flag removes any existing claim on the requested website by another account and replaces it with a claim from this account.

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#accountsClaimWebsiteResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsClaimWebsiteResponse&quot;.
  }</pre>
</div>

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

<div class="method">
    <code class="details" id="custombatch">custombatch(body=None)</code>
  <pre>Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single request.

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

{
    &quot;entries&quot;: [ # The request entries to be processed in the batch.
      { # A batch entry encoding a single non-batch accounts request.
        &quot;account&quot;: { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role. # The account to create or update. Only defined if the method is `insert` or `update`.
          &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
            {
              &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
              &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
                  #
                  # Acceptable values are:
                  # - &quot;`active`&quot;
                  # - &quot;`pending`&quot;
            },
          ],
          &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
          &quot;businessInformation&quot;: { # The business information of the account.
            &quot;address&quot;: { # The address of the business.
              &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
              &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
              &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
            },
            &quot;customerService&quot;: { # The customer service information of the business.
              &quot;email&quot;: &quot;A String&quot;, # Customer service email.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
              &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
            },
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
          },
          &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
          &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
            &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
            &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
            &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
                #
                # Acceptable values are:
                # - &quot;`active`&quot;
                # - &quot;`pending`&quot;
          },
          &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
          &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
          &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
          &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
          &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
            {
              &quot;admin&quot;: True or False, # Whether user is an admin.
              &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
              &quot;orderManager&quot;: True or False, # Whether user is an order manager.
              &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
              &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
            },
          ],
          &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
          &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
            {
              &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
              &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
            },
          ],
        },
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the targeted account. Only defined if the method is not `insert`.
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;force&quot;: True or False, # Whether the account should be deleted if the account has offers. Only applicable if the method is `delete`.
        &quot;labelIds&quot;: [ # Label IDs for the &#x27;updatelabels&#x27; request.
          &quot;A String&quot;,
        ],
        &quot;linkRequest&quot;: { # Details about the `link` request.
          &quot;action&quot;: &quot;A String&quot;, # Action to perform for this link. The `&quot;request&quot;` action is only available to select merchants.
              #
              # Acceptable values are:
              # - &quot;`approve`&quot;
              # - &quot;`remove`&quot;
              # - &quot;`request`&quot;
          &quot;linkType&quot;: &quot;A String&quot;, # Type of the link between the two accounts.
              #
              # Acceptable values are:
              # - &quot;`channelPartner`&quot;
              # - &quot;`eCommercePlatform`&quot;
          &quot;linkedAccountId&quot;: &quot;A String&quot;, # The ID of the linked account.
          &quot;services&quot;: [ # List of provided services.
            &quot;A String&quot;,
          ],
        },
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
        &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry.
            #
            # Acceptable values are:
            # - &quot;`claimWebsite`&quot;
            # - &quot;`delete`&quot;
            # - &quot;`get`&quot;
            # - &quot;`insert`&quot;
            # - &quot;`link`&quot;
            # - &quot;`update`&quot;
        &quot;overwrite&quot;: True or False, # Only applicable if the method is `claimwebsite`. Indicates whether or not to take the claim from another account in case there is a conflict.
        &quot;view&quot;: &quot;A String&quot;, # Controls which fields are visible. Only applicable if the method is &#x27;get&#x27;.
      },
    ],
  }


Returns:
  An object of the form:

    {
    &quot;entries&quot;: [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch accounts response.
        &quot;account&quot;: { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role. # The retrieved, created, or updated account. Not defined if the method was `delete`, `claimwebsite` or `link`.
          &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
            {
              &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
              &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
                  #
                  # Acceptable values are:
                  # - &quot;`active`&quot;
                  # - &quot;`pending`&quot;
            },
          ],
          &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
          &quot;businessInformation&quot;: { # The business information of the account.
            &quot;address&quot;: { # The address of the business.
              &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
              &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
              &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
            },
            &quot;customerService&quot;: { # The customer service information of the business.
              &quot;email&quot;: &quot;A String&quot;, # Customer service email.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
              &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
            },
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
          },
          &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
          &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
            &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
            &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
            &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
                #
                # Acceptable values are:
                # - &quot;`active`&quot;
                # - &quot;`pending`&quot;
          },
          &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
          &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
          &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
          &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
          &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
            {
              &quot;admin&quot;: True or False, # Whether user is an admin.
              &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
              &quot;orderManager&quot;: True or False, # Whether user is an order manager.
              &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
              &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
            },
          ],
          &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
          &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
            {
              &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
              &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
            },
          ],
        },
        &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
        &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
          &quot;errors&quot;: [ # A list of errors.
            { # An error returned by the API.
              &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
              &quot;message&quot;: &quot;A String&quot;, # A description of the error.
              &quot;reason&quot;: &quot;A String&quot;, # The error code.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
        },
        &quot;kind&quot;: &quot;content#accountsCustomBatchResponseEntry&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#accountsCustomBatchResponseEntry`&quot;
      },
    ],
    &quot;kind&quot;: &quot;content#accountsCustomBatchResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsCustomBatchResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(merchantId, accountId, force=None)</code>
  <pre>Deletes a Merchant Center sub-account.

Args:
  merchantId: string, The ID of the managing account. This 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. (required)
  force: boolean, Flag to delete sub-accounts with products. The default value is false.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, accountId, view=None)</code>
  <pre>Retrieves a Merchant Center 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. (required)
  view: string, Controls which fields will be populated. Acceptable values are: &quot;merchant&quot; and &quot;css&quot;. The default value is &quot;merchant&quot;.
    Allowed values
      css - 
      merchant - 

Returns:
  An object of the form:

    { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
    &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
            #
            # Acceptable values are:
            # - &quot;`active`&quot;
            # - &quot;`pending`&quot;
      },
    ],
    &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
    &quot;businessInformation&quot;: { # The business information of the account.
      &quot;address&quot;: { # The address of the business.
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
      &quot;customerService&quot;: { # The customer service information of the business.
        &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
        &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
    },
    &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
    &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
      &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
          #
          # Acceptable values are:
          # - &quot;`active`&quot;
          # - &quot;`pending`&quot;
    },
    &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
    &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
    &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
    &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
    &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        &quot;admin&quot;: True or False, # Whether user is an admin.
        &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        &quot;orderManager&quot;: True or False, # Whether user is an order manager.
        &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
        &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
      },
    ],
    &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body=None)</code>
  <pre>Creates a Merchant Center sub-account.

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client account. (required)
  body: object, The request body.
    The object takes the form of:

{ # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
  &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
    {
      &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
          #
          # Acceptable values are:
          # - &quot;`active`&quot;
          # - &quot;`pending`&quot;
    },
  ],
  &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
  &quot;businessInformation&quot;: { # The business information of the account.
    &quot;address&quot;: { # The address of the business.
      &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
      &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
      &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
      &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
    },
    &quot;customerService&quot;: { # The customer service information of the business.
      &quot;email&quot;: &quot;A String&quot;, # Customer service email.
      &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
      &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
    },
    &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
  },
  &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
  &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
    &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
    &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
    &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
        #
        # Acceptable values are:
        # - &quot;`active`&quot;
        # - &quot;`pending`&quot;
  },
  &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
  &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
  &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
  &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
  &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
    {
      &quot;admin&quot;: True or False, # Whether user is an admin.
      &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
      &quot;orderManager&quot;: True or False, # Whether user is an order manager.
      &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
      &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
    },
  ],
  &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
  &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
    {
      &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
    },
  ],
}


Returns:
  An object of the form:

    { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
    &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
            #
            # Acceptable values are:
            # - &quot;`active`&quot;
            # - &quot;`pending`&quot;
      },
    ],
    &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
    &quot;businessInformation&quot;: { # The business information of the account.
      &quot;address&quot;: { # The address of the business.
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
      &quot;customerService&quot;: { # The customer service information of the business.
        &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
        &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
    },
    &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
    &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
      &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
          #
          # Acceptable values are:
          # - &quot;`active`&quot;
          # - &quot;`pending`&quot;
    },
    &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
    &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
    &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
    &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
    &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        &quot;admin&quot;: True or False, # Whether user is an admin.
        &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        &quot;orderManager&quot;: True or False, # Whether user is an order manager.
        &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
        &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
      },
    ],
    &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="link">link(merchantId, accountId, body=None)</code>
  <pre>Performs an action on a link between two Merchant Center accounts, namely accountId and linkedAccountId.

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 that should be linked. (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;action&quot;: &quot;A String&quot;, # Action to perform for this link. The `&quot;request&quot;` action is only available to select merchants.
        # 
        # Acceptable values are:
        # - &quot;`approve`&quot;
        # - &quot;`remove`&quot;
        # - &quot;`request`&quot;
    &quot;linkType&quot;: &quot;A String&quot;, # Type of the link between the two accounts.
        # 
        # Acceptable values are:
        # - &quot;`channelPartner`&quot;
        # - &quot;`eCommercePlatform`&quot;
    &quot;linkedAccountId&quot;: &quot;A String&quot;, # The ID of the linked account.
    &quot;services&quot;: [ # List of provided services.
      &quot;A String&quot;,
    ],
  }


Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#accountsLinkResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsLinkResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, label=None, maxResults=None, pageToken=None, view=None)</code>
  <pre>Lists 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)
  label: string, If view is set to &quot;css&quot;, only return accounts that are assigned label with given ID.
  maxResults: integer, The maximum number of accounts to return in the response, used for paging.
  pageToken: string, The token returned by the previous request.
  view: string, Controls which fields will be populated. Acceptable values are: &quot;merchant&quot; and &quot;css&quot;. The default value is &quot;merchant&quot;.
    Allowed values
      css - 
      merchant - 

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#accountsListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsListResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of accounts.
    &quot;resources&quot;: [
      { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
        &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
          {
            &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
            &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
                #
                # Acceptable values are:
                # - &quot;`active`&quot;
                # - &quot;`pending`&quot;
          },
        ],
        &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
        &quot;businessInformation&quot;: { # The business information of the account.
          &quot;address&quot;: { # The address of the business.
            &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
            &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
            &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
            &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
          },
          &quot;customerService&quot;: { # The customer service information of the business.
            &quot;email&quot;: &quot;A String&quot;, # Customer service email.
            &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
            &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
          },
          &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
        },
        &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
        &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
          &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
          &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
          &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
              #
              # Acceptable values are:
              # - &quot;`active`&quot;
              # - &quot;`pending`&quot;
        },
        &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
        &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
        &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
        &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
        &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
          {
            &quot;admin&quot;: True or False, # Whether user is an admin.
            &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
            &quot;orderManager&quot;: True or False, # Whether user is an order manager.
            &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
            &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
          },
        ],
        &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
        &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
          {
            &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
            &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
          },
        ],
      },
    ],
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="listlinks">listlinks(merchantId, accountId, maxResults=None, pageToken=None)</code>
  <pre>Returns the list of accounts linked to your Merchant Center 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 list links. (required)
  maxResults: integer, The maximum number of links to return in the response, used for pagination.
  pageToken: string, The token returned by the previous request.

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#accountsListLinksResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsListLinksResponse&quot;.
    &quot;links&quot;: [ # The list of available links.
      {
        &quot;linkedAccountId&quot;: &quot;A String&quot;, # The ID of the linked account.
        &quot;services&quot;: [ # List of provided services.
          {
            &quot;service&quot;: &quot;A String&quot;, # Service provided to or by the linked account.
                #
                # Acceptable values are:
                # - &quot;`shoppingActionsOrderManagement`&quot;
                # - &quot;`shoppingActionsProductManagement`&quot;
                # - &quot;`shoppingAdsProductManagement`&quot;
            &quot;status&quot;: &quot;A String&quot;, # Status of the link
                #
                # Acceptable values are:
                # - &quot;`active`&quot;
                # - &quot;`inactive`&quot;
                # - &quot;`pending`&quot;
          },
        ],
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of links.
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="update">update(merchantId, accountId, body=None)</code>
  <pre>Updates a Merchant Center account. Any fields that are not provided are deleted from the resource.

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. (required)
  body: object, The request body.
    The object takes the form of:

{ # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
  &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
    {
      &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
          #
          # Acceptable values are:
          # - &quot;`active`&quot;
          # - &quot;`pending`&quot;
    },
  ],
  &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
  &quot;businessInformation&quot;: { # The business information of the account.
    &quot;address&quot;: { # The address of the business.
      &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
      &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
      &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
      &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
    },
    &quot;customerService&quot;: { # The customer service information of the business.
      &quot;email&quot;: &quot;A String&quot;, # Customer service email.
      &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
      &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
    },
    &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
  },
  &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
  &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
    &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
    &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
    &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
        #
        # Acceptable values are:
        # - &quot;`active`&quot;
        # - &quot;`pending`&quot;
  },
  &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
  &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
  &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
  &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
  &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
    {
      &quot;admin&quot;: True or False, # Whether user is an admin.
      &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
      &quot;orderManager&quot;: True or False, # Whether user is an order manager.
      &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
      &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
    },
  ],
  &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
  &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
    {
      &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
    },
  ],
}


Returns:
  An object of the form:

    { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, and update require the admin role.
    &quot;adsLinks&quot;: [ # List of linked Ads accounts that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected either in the Ads interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;adsId&quot;: &quot;A String&quot;, # Customer ID of the Ads account.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the Ads account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google Ads or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
            #
            # Acceptable values are:
            # - &quot;`active`&quot;
            # - &quot;`pending`&quot;
      },
    ],
    &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
    &quot;businessInformation&quot;: { # The business information of the account.
      &quot;address&quot;: { # The address of the business.
        &quot;country&quot;: &quot;A String&quot;, # CLDR country code (e.g. &quot;US&quot;). This value cannot be set for a sub-account of an MCA. All MCA sub-accounts inherit the country of their parent MCA.
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
        &quot;region&quot;: &quot;A String&quot;, # Top-level administrative subdivision of the country. For example, a state like California (&quot;CA&quot;) or a province like Quebec (&quot;QC&quot;).
        &quot;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
      },
      &quot;customerService&quot;: { # The customer service information of the business.
        &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
        &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
    },
    &quot;cssId&quot;: &quot;A String&quot;, # ID of CSS the account belongs to.
    &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      &quot;gmbAccountId&quot;: &quot;A String&quot;, # The ID of the GMB account. If this is provided, then `gmbEmail` is ignored. The value of this field should match the `accountId` used by the GMB API.
      &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB email address of which a specific account within a GMB account. A sample account within a GMB account could be a business account with set of locations, managed under the GMB account.
      &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the GMB account.
          #
          # Acceptable values are:
          # - &quot;`active`&quot;
          # - &quot;`pending`&quot;
    },
    &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
    &quot;kind&quot;: &quot;content#account&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
    &quot;labelIds&quot;: [ # List of label IDs that are assigned to the account by CSS.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
    &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
    &quot;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        &quot;admin&quot;: True or False, # Whether user is an admin.
        &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        &quot;orderManager&quot;: True or False, # Whether user is an order manager.
        &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
        &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
      },
    ],
    &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    &quot;youtubeChannelLinks&quot;: [ # List of linked YouTube channels that are active or pending approval. To create a new link request, add a new link with status `active` to the list. It will remain in a `pending` state until approved or rejected in the YT Creator Studio interface. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;channelId&quot;: &quot;A String&quot;, # Channel ID.
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the YouTube channel. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in YT Creator Studio or `pending` if it&#x27;s pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status `active` when it&#x27;s still pending or with status `pending` when it&#x27;s already active will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status `inactive` is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link request if it was pending.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="updatelabels">updatelabels(merchantId, accountId, body=None)</code>
  <pre>Updates labels that are assigned to the Merchant Center account by CSS user.

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

{
    &quot;labelIds&quot;: [ # The IDs of labels that should be assigned to the account.
      &quot;A String&quot;,
    ],
  }


Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#accountsUpdateLabelsResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsUpdateLabelsResponse&quot;.
  }</pre>
</div>

</body></html>