<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()</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="#custombatch">custombatch(body, dryRun=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)</a></code></p>
<p class="firstline">Deletes a Merchant Center sub-account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId)</a></code></p>
<p class="firstline">Retrieves a Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(merchantId, body, dryRun=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)</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)</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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
<p class="firstline">Updates a Merchant Center account. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
<p class="firstline">Updates a Merchant Center account.</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:

    {
    "kind": "content#accountsAuthInfoResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accountsAuthInfoResponse".
    "accountIdentifiers": [ # 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.
      {
        "aggregatorId": "A String", # The aggregator ID, set for aggregators and subaccounts (in that case, it represents the aggregator of the subaccount).
        "merchantId": "A String", # 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)</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:

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

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

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

{
    "entries": [ # The request entries to be processed in the batch.
      { # A batch entry encoding a single non-batch accounts request.
        "linkRequest": { # Details about the link request.
          "action": "A String", # Action to perform for this link. The "request" action is only available to select merchants.
          "linkType": "A String", # Type of the link between the two accounts.
          "linkedAccountId": "A String", # The ID of the linked account.
        },
        "account": { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, patch, and update require the admin role. # The account to create or update. Only defined if the method is insert or update.
            "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
            "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
            "name": "A String", # Display name for the account.
            "youtubeChannelLinks": [ # 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.
              {
                "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
                "channelId": "A String", # Channel ID.
              },
            ],
            "adultContent": True or False, # Indicates whether the merchant sells adult content.
            "adwordsLinks": [ # 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.
              {
                "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
                "adwordsId": "A String", # Customer ID of the AdWords account.
              },
            ],
            "websiteUrl": "A String", # The merchant's website.
            "businessInformation": { # The business information of the account.
              "phoneNumber": "A String", # The phone number of the business.
              "customerService": { # The customer service information of the business.
                "url": "A String", # Customer service URL.
                "phoneNumber": "A String", # Customer service phone number.
                "email": "A String", # Customer service email.
              },
              "address": { # The address of the business.
                "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
                "country": "A String", # CLDR country code (e.g. "US").
                "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
                "streetAddress": "A String", # Street-level part of the address.
                "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              },
            },
            "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
              "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
              "gmbEmail": "A String", # 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.
            },
            "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
            "id": "A String", # Merchant Center account ID.
            "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
              {
                "admin": True or False, # Whether user is an admin.
                "orderManager": True or False, # Whether user is an order manager.
                "paymentsAnalyst": True or False, # Whether user can access payment statements.
                "emailAddress": "A String", # User's email address.
                "paymentsManager": True or False, # Whether user can manage payment settings.
              },
            ],
          },
        "force": True or False, # Whether the account should be deleted if the account has offers. Only applicable if the method is delete.
        "method": "A String", # The method of the batch entry.
        "batchId": 42, # An entry ID, unique within the batch request.
        "merchantId": "A String", # The ID of the managing account.
        "overwrite": 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.
        "accountId": "A String", # The ID of the targeted account. Only defined if the method is not insert.
      },
    ],
  }

  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).

Returns:
  An object of the form:

    {
    "kind": "content#accountsCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accountsCustomBatchResponse".
    "entries": [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch accounts response.
        "batchId": 42, # The ID of the request entry this entry responds to.
        "account": { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, patch, and update require the admin role. # The retrieved, created, or updated account. Not defined if the method was delete, claimwebsite or link.
            "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
            "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
            "name": "A String", # Display name for the account.
            "youtubeChannelLinks": [ # 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.
              {
                "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
                "channelId": "A String", # Channel ID.
              },
            ],
            "adultContent": True or False, # Indicates whether the merchant sells adult content.
            "adwordsLinks": [ # 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.
              {
                "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
                "adwordsId": "A String", # Customer ID of the AdWords account.
              },
            ],
            "websiteUrl": "A String", # The merchant's website.
            "businessInformation": { # The business information of the account.
              "phoneNumber": "A String", # The phone number of the business.
              "customerService": { # The customer service information of the business.
                "url": "A String", # Customer service URL.
                "phoneNumber": "A String", # Customer service phone number.
                "email": "A String", # Customer service email.
              },
              "address": { # The address of the business.
                "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
                "country": "A String", # CLDR country code (e.g. "US").
                "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
                "streetAddress": "A String", # Street-level part of the address.
                "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
              },
            },
            "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
              "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
              "gmbEmail": "A String", # 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.
            },
            "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
            "id": "A String", # Merchant Center account ID.
            "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
              {
                "admin": True or False, # Whether user is an admin.
                "orderManager": True or False, # Whether user is an order manager.
                "paymentsAnalyst": True or False, # Whether user can access payment statements.
                "emailAddress": "A String", # User's email address.
                "paymentsManager": True or False, # Whether user can manage payment settings.
              },
            ],
          },
        "errors": { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          "message": "A String", # The message of the first error in errors.
          "code": 42, # The HTTP status of the first error in errors.
          "errors": [ # A list of errors.
            { # An error returned by the API.
              "reason": "A String", # The error code.
              "domain": "A String", # The domain of the error.
              "message": "A String", # A description of the error.
            },
          ],
        },
        "linkStatus": "A String", # Deprecated. This field is never set.
        "kind": "content#accountsCustomBatchResponseEntry", # Identifies what kind of resource this is. Value: the fixed string "content#accountsCustomBatchResponseEntry".
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(merchantId, accountId, force=None, dryRun=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).
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, accountId)</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)

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, patch, and update require the admin role.
      "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
      "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
      "name": "A String", # Display name for the account.
      "youtubeChannelLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "channelId": "A String", # Channel ID.
        },
      ],
      "adultContent": True or False, # Indicates whether the merchant sells adult content.
      "adwordsLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "adwordsId": "A String", # Customer ID of the AdWords account.
        },
      ],
      "websiteUrl": "A String", # The merchant's website.
      "businessInformation": { # The business information of the account.
        "phoneNumber": "A String", # The phone number of the business.
        "customerService": { # The customer service information of the business.
          "url": "A String", # Customer service URL.
          "phoneNumber": "A String", # Customer service phone number.
          "email": "A String", # Customer service email.
        },
        "address": { # The address of the business.
          "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
          "country": "A String", # CLDR country code (e.g. "US").
          "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
          "streetAddress": "A String", # Street-level part of the address.
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
      },
      "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
        "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
        "gmbEmail": "A String", # 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.
      },
      "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
      "id": "A String", # Merchant Center account ID.
      "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          "admin": True or False, # Whether user is an admin.
          "orderManager": True or False, # Whether user is an order manager.
          "paymentsAnalyst": True or False, # Whether user can access payment statements.
          "emailAddress": "A String", # User's email address.
          "paymentsManager": True or False, # Whether user can manage payment settings.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body, dryRun=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. (required)
    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, patch, and update require the admin role.
    "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
    "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
    "name": "A String", # Display name for the account.
    "youtubeChannelLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "channelId": "A String", # Channel ID.
      },
    ],
    "adultContent": True or False, # Indicates whether the merchant sells adult content.
    "adwordsLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "adwordsId": "A String", # Customer ID of the AdWords account.
      },
    ],
    "websiteUrl": "A String", # The merchant's website.
    "businessInformation": { # The business information of the account.
      "phoneNumber": "A String", # The phone number of the business.
      "customerService": { # The customer service information of the business.
        "url": "A String", # Customer service URL.
        "phoneNumber": "A String", # Customer service phone number.
        "email": "A String", # Customer service email.
      },
      "address": { # The address of the business.
        "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
        "country": "A String", # CLDR country code (e.g. "US").
        "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
        "streetAddress": "A String", # Street-level part of the address.
        "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
    },
    "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
      "gmbEmail": "A String", # 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.
    },
    "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
    "id": "A String", # Merchant Center account ID.
    "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        "admin": True or False, # Whether user is an admin.
        "orderManager": True or False, # Whether user is an order manager.
        "paymentsAnalyst": True or False, # Whether user can access payment statements.
        "emailAddress": "A String", # User's email address.
        "paymentsManager": True or False, # Whether user can manage payment settings.
      },
    ],
  }

  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).

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, patch, and update require the admin role.
      "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
      "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
      "name": "A String", # Display name for the account.
      "youtubeChannelLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "channelId": "A String", # Channel ID.
        },
      ],
      "adultContent": True or False, # Indicates whether the merchant sells adult content.
      "adwordsLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "adwordsId": "A String", # Customer ID of the AdWords account.
        },
      ],
      "websiteUrl": "A String", # The merchant's website.
      "businessInformation": { # The business information of the account.
        "phoneNumber": "A String", # The phone number of the business.
        "customerService": { # The customer service information of the business.
          "url": "A String", # Customer service URL.
          "phoneNumber": "A String", # Customer service phone number.
          "email": "A String", # Customer service email.
        },
        "address": { # The address of the business.
          "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
          "country": "A String", # CLDR country code (e.g. "US").
          "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
          "streetAddress": "A String", # Street-level part of the address.
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
      },
      "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
        "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
        "gmbEmail": "A String", # 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.
      },
      "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
      "id": "A String", # Merchant Center account ID.
      "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          "admin": True or False, # Whether user is an admin.
          "orderManager": True or False, # Whether user is an order manager.
          "paymentsAnalyst": True or False, # Whether user can access payment statements.
          "emailAddress": "A String", # User's email address.
          "paymentsManager": True or False, # Whether user can manage payment settings.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="link">link(merchantId, accountId, body)</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. (required)
    The object takes the form of:

{
    "action": "A String", # Action to perform for this link. The "request" action is only available to select merchants.
    "linkType": "A String", # Type of the link between the two accounts.
    "linkedAccountId": "A String", # The ID of the linked account.
  }


Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(merchantId, pageToken=None, maxResults=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.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # The token for the retrieval of the next page of accounts.
    "kind": "content#accountsListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accountsListResponse".
    "resources": [
      { # Account data. After the creation of a new account it may take a few minutes before it is fully operational. The methods delete, insert, patch, and update require the admin role.
          "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
          "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
          "name": "A String", # Display name for the account.
          "youtubeChannelLinks": [ # 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.
            {
              "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
              "channelId": "A String", # Channel ID.
            },
          ],
          "adultContent": True or False, # Indicates whether the merchant sells adult content.
          "adwordsLinks": [ # 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.
            {
              "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
              "adwordsId": "A String", # Customer ID of the AdWords account.
            },
          ],
          "websiteUrl": "A String", # The merchant's website.
          "businessInformation": { # The business information of the account.
            "phoneNumber": "A String", # The phone number of the business.
            "customerService": { # The customer service information of the business.
              "url": "A String", # Customer service URL.
              "phoneNumber": "A String", # Customer service phone number.
              "email": "A String", # Customer service email.
            },
            "address": { # The address of the business.
              "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
              "country": "A String", # CLDR country code (e.g. "US").
              "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
              "streetAddress": "A String", # Street-level part of the address.
              "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
            },
          },
          "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
            "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
            "gmbEmail": "A String", # 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.
          },
          "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
          "id": "A String", # Merchant Center account ID.
          "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
            {
              "admin": True or False, # Whether user is an admin.
              "orderManager": True or False, # Whether user is an order manager.
              "paymentsAnalyst": True or False, # Whether user can access payment statements.
              "emailAddress": "A String", # User's email address.
              "paymentsManager": True or False, # Whether user can manage payment settings.
            },
          ],
        },
    ],
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(merchantId, accountId, body, dryRun=None)</code>
  <pre>Updates a Merchant Center account. This method supports patch semantics.

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. (required)
    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, patch, and update require the admin role.
    "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
    "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
    "name": "A String", # Display name for the account.
    "youtubeChannelLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "channelId": "A String", # Channel ID.
      },
    ],
    "adultContent": True or False, # Indicates whether the merchant sells adult content.
    "adwordsLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "adwordsId": "A String", # Customer ID of the AdWords account.
      },
    ],
    "websiteUrl": "A String", # The merchant's website.
    "businessInformation": { # The business information of the account.
      "phoneNumber": "A String", # The phone number of the business.
      "customerService": { # The customer service information of the business.
        "url": "A String", # Customer service URL.
        "phoneNumber": "A String", # Customer service phone number.
        "email": "A String", # Customer service email.
      },
      "address": { # The address of the business.
        "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
        "country": "A String", # CLDR country code (e.g. "US").
        "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
        "streetAddress": "A String", # Street-level part of the address.
        "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
    },
    "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
      "gmbEmail": "A String", # 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.
    },
    "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
    "id": "A String", # Merchant Center account ID.
    "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        "admin": True or False, # Whether user is an admin.
        "orderManager": True or False, # Whether user is an order manager.
        "paymentsAnalyst": True or False, # Whether user can access payment statements.
        "emailAddress": "A String", # User's email address.
        "paymentsManager": True or False, # Whether user can manage payment settings.
      },
    ],
  }

  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).

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, patch, and update require the admin role.
      "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
      "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
      "name": "A String", # Display name for the account.
      "youtubeChannelLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "channelId": "A String", # Channel ID.
        },
      ],
      "adultContent": True or False, # Indicates whether the merchant sells adult content.
      "adwordsLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "adwordsId": "A String", # Customer ID of the AdWords account.
        },
      ],
      "websiteUrl": "A String", # The merchant's website.
      "businessInformation": { # The business information of the account.
        "phoneNumber": "A String", # The phone number of the business.
        "customerService": { # The customer service information of the business.
          "url": "A String", # Customer service URL.
          "phoneNumber": "A String", # Customer service phone number.
          "email": "A String", # Customer service email.
        },
        "address": { # The address of the business.
          "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
          "country": "A String", # CLDR country code (e.g. "US").
          "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
          "streetAddress": "A String", # Street-level part of the address.
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
      },
      "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
        "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
        "gmbEmail": "A String", # 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.
      },
      "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
      "id": "A String", # Merchant Center account ID.
      "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          "admin": True or False, # Whether user is an admin.
          "orderManager": True or False, # Whether user is an order manager.
          "paymentsAnalyst": True or False, # Whether user can access payment statements.
          "emailAddress": "A String", # User's email address.
          "paymentsManager": True or False, # Whether user can manage payment settings.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(merchantId, accountId, body, dryRun=None)</code>
  <pre>Updates 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)
  body: object, The request body. (required)
    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, patch, and update require the admin role.
    "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
    "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
    "name": "A String", # Display name for the account.
    "youtubeChannelLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "channelId": "A String", # Channel ID.
      },
    ],
    "adultContent": True or False, # Indicates whether the merchant sells adult content.
    "adwordsLinks": [ # 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.
      {
        "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
        "adwordsId": "A String", # Customer ID of the AdWords account.
      },
    ],
    "websiteUrl": "A String", # The merchant's website.
    "businessInformation": { # The business information of the account.
      "phoneNumber": "A String", # The phone number of the business.
      "customerService": { # The customer service information of the business.
        "url": "A String", # Customer service URL.
        "phoneNumber": "A String", # Customer service phone number.
        "email": "A String", # Customer service email.
      },
      "address": { # The address of the business.
        "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
        "country": "A String", # CLDR country code (e.g. "US").
        "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
        "streetAddress": "A String", # Street-level part of the address.
        "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
      },
    },
    "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
      "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
      "gmbEmail": "A String", # 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.
    },
    "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
    "id": "A String", # Merchant Center account ID.
    "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
      {
        "admin": True or False, # Whether user is an admin.
        "orderManager": True or False, # Whether user is an order manager.
        "paymentsAnalyst": True or False, # Whether user can access payment statements.
        "emailAddress": "A String", # User's email address.
        "paymentsManager": True or False, # Whether user can manage payment settings.
      },
    ],
  }

  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).

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, patch, and update require the admin role.
      "reviewsUrl": "A String", # [DEPRECATED] This field is never returned and will be ignored if provided.
      "kind": "content#account", # Identifies what kind of resource this is. Value: the fixed string "content#account".
      "name": "A String", # Display name for the account.
      "youtubeChannelLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "channelId": "A String", # Channel ID.
        },
      ],
      "adultContent": True or False, # Indicates whether the merchant sells adult content.
      "adwordsLinks": [ # 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.
        {
          "status": "A String", # 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's pending approval. Upon insertion, it represents the intended status of the link. Re-uploading a link with status active when it's still pending or with status pending when it'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.
          "adwordsId": "A String", # Customer ID of the AdWords account.
        },
      ],
      "websiteUrl": "A String", # The merchant's website.
      "businessInformation": { # The business information of the account.
        "phoneNumber": "A String", # The phone number of the business.
        "customerService": { # The customer service information of the business.
          "url": "A String", # Customer service URL.
          "phoneNumber": "A String", # Customer service phone number.
          "email": "A String", # Customer service email.
        },
        "address": { # The address of the business.
          "postalCode": "A String", # Postal code or ZIP (e.g. "94043").
          "country": "A String", # CLDR country code (e.g. "US").
          "region": "A String", # Top-level administrative subdivision of the country. For example, a state like California ("CA") or a province like Quebec ("QC").
          "streetAddress": "A String", # Street-level part of the address.
          "locality": "A String", # City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods or suburbs).
        },
      },
      "googleMyBusinessLink": { # The GMB account which is linked or in the process of being linked with the Merchant Center account.
        "status": "A String", # Status of the link between this Merchant Center account and the GMB account.
        "gmbEmail": "A String", # 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.
      },
      "sellerId": "A String", # Client-specific, locally-unique, internal ID for the child account.
      "id": "A String", # Merchant Center account ID.
      "users": [ # Users with access to the account. Every account (except for subaccounts) must have at least one admin user.
        {
          "admin": True or False, # Whether user is an admin.
          "orderManager": True or False, # Whether user is an order manager.
          "paymentsAnalyst": True or False, # Whether user can access payment statements.
          "emailAddress": "A String", # User's email address.
          "paymentsManager": True or False, # Whether user can manage payment settings.
        },
      ],
    }</pre>
</div>

</body></html>