<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.accounts.html">accounts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#authinfo">authinfo(x__xgafv=None)</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, x__xgafv=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, dryRun=None, x__xgafv=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, dryRun=None, x__xgafv=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, x__xgafv=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, dryRun=None, x__xgafv=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, x__xgafv=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, pageToken=None, maxResults=None, x__xgafv=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="#update">update(merchantId, accountId, body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a Merchant Center account. Any fields that are not provided are deleted from the resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="authinfo">authinfo(x__xgafv=None)</code>
  <pre>Returns information about the authenticated user.

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

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsAuthInfoResponse&quot;.
    &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.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="claimwebsite">claimwebsite(merchantId, accountId, overwrite=None, x__xgafv=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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#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, dryRun=None, x__xgafv=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;labelIds&quot;: [ # Label IDs for the &#x27;updatelabels&#x27; request.
          &quot;A String&quot;,
        ],
        &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;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the targeted account. Only defined if the method is not `insert`.
        &quot;linkRequest&quot;: { # Details about the `link` request.
          &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;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;linkedAccountId&quot;: &quot;A String&quot;, # The ID of the linked account.
        },
        &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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
            &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
              },
            ],
            &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
              {
                &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
              },
            ],
            &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
            &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
            &quot;businessInformation&quot;: { # The business information of the account.
              &quot;customerService&quot;: { # The customer service information of the business.
                &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
                &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
                &quot;email&quot;: &quot;A String&quot;, # Customer service email.
              },
              &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
              &quot;address&quot;: { # The address of the business.
                &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
                &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
                &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
                &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
              {
                &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
                &quot;admin&quot;: True or False, # Whether user is an admin.
                &quot;orderManager&quot;: True or False, # Whether user is an order manager.
                &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
                &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
              },
            ],
            &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
            &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
            &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
          },
        &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;force&quot;: True or False, # Whether the account should be deleted if the account has offers. Only applicable if the method is `delete`.
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
      },
    ],
  }

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#accountsCustomBatchResponseEntry`&quot;
        &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
        &quot;linkStatus&quot;: &quot;A String&quot;, # Deprecated. This field is never set. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
            &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
              },
            ],
            &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
              {
                &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
              },
            ],
            &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
            &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
            &quot;businessInformation&quot;: { # The business information of the account.
              &quot;customerService&quot;: { # The customer service information of the business.
                &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
                &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
                &quot;email&quot;: &quot;A String&quot;, # Customer service email.
              },
              &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
              &quot;address&quot;: { # The address of the business.
                &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
                &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
                &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
                &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
              {
                &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
                &quot;admin&quot;: True or False, # Whether user is an admin.
                &quot;orderManager&quot;: True or False, # Whether user is an order manager.
                &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
                &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
              },
            ],
            &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
            &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
            &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
          },
        &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          &quot;errors&quot;: [ # A list of errors.
            { # An error returned by the API.
              &quot;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;code&quot;: 42, # The HTTP status of the first error in `errors`.
        },
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsCustomBatchResponse&quot;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(merchantId, accountId, force=None, dryRun=None, x__xgafv=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.
  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, accountId, x__xgafv=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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
      &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
        },
      ],
      &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
        },
      ],
      &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
      &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
      &quot;businessInformation&quot;: { # The business information of the account.
        &quot;customerService&quot;: { # The customer service information of the business.
          &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
          &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        },
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
        &quot;address&quot;: { # The address of the business.
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
          &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
          &quot;admin&quot;: True or False, # Whether user is an admin.
          &quot;orderManager&quot;: True or False, # Whether user is an order manager.
          &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
          &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        },
      ],
      &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
      &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
      &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body=None, dryRun=None, x__xgafv=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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
    &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
      },
    ],
    &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
      },
    ],
    &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
    &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
    &quot;businessInformation&quot;: { # The business information of the account.
      &quot;customerService&quot;: { # The customer service information of the business.
        &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
        &quot;email&quot;: &quot;A String&quot;, # Customer service email.
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
      &quot;address&quot;: { # The address of the business.
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
        &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
        &quot;admin&quot;: True or False, # Whether user is an admin.
        &quot;orderManager&quot;: True or False, # Whether user is an order manager.
        &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
        &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
      },
    ],
    &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
    &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
  }

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
      &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
        },
      ],
      &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
        },
      ],
      &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
      &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
      &quot;businessInformation&quot;: { # The business information of the account.
        &quot;customerService&quot;: { # The customer service information of the business.
          &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
          &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        },
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
        &quot;address&quot;: { # The address of the business.
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
          &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
          &quot;admin&quot;: True or False, # Whether user is an admin.
          &quot;orderManager&quot;: True or False, # Whether user is an order manager.
          &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
          &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        },
      ],
      &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
      &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
      &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    }</pre>
</div>

<div class="method">
    <code class="details" id="link">link(merchantId, accountId, body=None, x__xgafv=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;linkType&quot;: &quot;A String&quot;, # Type of the link between the two accounts. Acceptable values are: - &quot;`channelPartner`&quot; - &quot;`eCommercePlatform`&quot;
    &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;linkedAccountId&quot;: &quot;A String&quot;, # The ID of the linked account.
  }

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

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None, x__xgafv=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)
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of accounts to return in the response, used for paging.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of 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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
          &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
            },
          ],
          &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
            {
              &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
            },
          ],
          &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
          &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
          &quot;businessInformation&quot;: { # The business information of the account.
            &quot;customerService&quot;: { # The customer service information of the business.
              &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
              &quot;email&quot;: &quot;A String&quot;, # Customer service email.
            },
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
            &quot;address&quot;: { # The address of the business.
              &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
              &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
              &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
            {
              &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
              &quot;admin&quot;: True or False, # Whether user is an admin.
              &quot;orderManager&quot;: True or False, # Whether user is an order manager.
              &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
              &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
            },
          ],
          &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
          &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
          &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
        },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#accountsListResponse&quot;.
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="update">update(merchantId, accountId, body=None, dryRun=None, x__xgafv=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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
    &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
      },
    ],
    &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
      {
        &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
      },
    ],
    &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
    &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
    &quot;businessInformation&quot;: { # The business information of the account.
      &quot;customerService&quot;: { # The customer service information of the business.
        &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
        &quot;email&quot;: &quot;A String&quot;, # Customer service email.
      },
      &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
      &quot;address&quot;: { # The address of the business.
        &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
        &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
        &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
        &quot;admin&quot;: True or False, # Whether user is an admin.
        &quot;orderManager&quot;: True or False, # Whether user is an order manager.
        &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
        &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
      },
    ],
    &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
    &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
  }

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

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;reviewsUrl&quot;: &quot;A String&quot;, # [DEPRECATED] This field is never returned and will be ignored if provided.
      &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;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;channelId&quot;: &quot;A String&quot;, # Channel ID.
        },
      ],
      &quot;adwordsLinks&quot;: [ # List of linked AdWords 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 AdWords interface or through the AdWords API. To delete an active link, or to cancel a link request, remove it from the list.
        {
          &quot;status&quot;: &quot;A String&quot;, # Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it represents the actual status of the link and can be either `active` if it was approved in Google AdWords 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;adwordsId&quot;: &quot;A String&quot;, # Customer ID of the AdWords account.
        },
      ],
      &quot;sellerId&quot;: &quot;A String&quot;, # Client-specific, locally-unique, internal ID for the child account.
      &quot;googleMyBusinessLink&quot;: { # The GMB account which is linked or in the process of being linked with the Merchant Center 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;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;name&quot;: &quot;A String&quot;, # Required. Display name for the account.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#account`&quot;
      &quot;businessInformation&quot;: { # The business information of the account.
        &quot;customerService&quot;: { # The customer service information of the business.
          &quot;url&quot;: &quot;A String&quot;, # Customer service URL.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer service phone number.
          &quot;email&quot;: &quot;A String&quot;, # Customer service email.
        },
        &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the business.
        &quot;address&quot;: { # The address of the business.
          &quot;postalCode&quot;: &quot;A String&quot;, # Postal code or ZIP (e.g. &quot;94043&quot;).
          &quot;locality&quot;: &quot;A String&quot;, # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
          &quot;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;streetAddress&quot;: &quot;A String&quot;, # Street-level part of the address.
          &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;users&quot;: [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          &quot;paymentsAnalyst&quot;: True or False, # Whether user can access payment statements.
          &quot;admin&quot;: True or False, # Whether user is an admin.
          &quot;orderManager&quot;: True or False, # Whether user is an order manager.
          &quot;paymentsManager&quot;: True or False, # Whether user can manage payment settings.
          &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address.
        },
      ],
      &quot;adultContent&quot;: True or False, # Indicates whether the merchant sells adult content.
      &quot;id&quot;: &quot;A String&quot;, # Required for update. Merchant Center account ID.
      &quot;websiteUrl&quot;: &quot;A String&quot;, # The merchant&#x27;s website.
    }</pre>
</div>

</body></html>