<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.liasettings.html">liasettings</a></h1>
<h2>Instance Methods</h2>
<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 and/or updates the LIA settings of multiple accounts in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the LIA settings of the account.</p>
<p class="toc_element">
  <code><a href="#getaccessiblegmbaccounts">getaccessiblegmbaccounts(merchantId, accountId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the list of accessible Google My Business accounts.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the LIA settings of the sub-accounts in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#listposdataproviders">listposdataproviders(x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the list of POS data providers that have active settings for the all eiligible countries.</p>
<p class="toc_element">
  <code><a href="#requestgmbaccess">requestgmbaccess(merchantId, accountId, gmbEmail, x__xgafv=None)</a></code></p>
<p class="firstline">Requests access to a specified Google My Business account.</p>
<p class="toc_element">
  <code><a href="#requestinventoryverification">requestinventoryverification(merchantId, accountId, country, x__xgafv=None)</a></code></p>
<p class="firstline">Requests inventory validation for the specified country.</p>
<p class="toc_element">
  <code><a href="#setinventoryverificationcontact">setinventoryverificationcontact(merchantId, accountId, country, language, contactName, contactEmail, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the inventory verification contract for the specified country.</p>
<p class="toc_element">
  <code><a href="#setposdataprovider">setposdataprovider(merchantId, accountId, country, posDataProviderId=None, posExternalAccountId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the POS data provider for the specified country.</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 the LIA settings of the account. Any fields that are not provided are deleted from the resource.</p>
<h3>Method Details</h3>
<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 and/or updates the LIA settings of multiple 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.
    {
      &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account for which to get/update account LIA settings.
      &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
      &quot;contactEmail&quot;: &quot;A String&quot;, # Inventory validation contact email. Required only for SetInventoryValidationContact.
      &quot;contactName&quot;: &quot;A String&quot;, # Inventory validation contact name. Required only for SetInventoryValidationContact.
      &quot;country&quot;: &quot;A String&quot;, # The country code. Required only for RequestInventoryVerification.
      &quot;gmbEmail&quot;: &quot;A String&quot;, # The GMB account. Required only for RequestGmbAccess.
      &quot;liaSettings&quot;: { # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role. # The account Lia settings to update. Only defined if the method is `update`.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
        &quot;countrySettings&quot;: [ # The LIA settings for each country.
          {
            &quot;about&quot;: { # The settings for the About page.
              &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
              &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
            },
            &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
            &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
            &quot;inventory&quot;: { # LIA inventory verification settings.
              &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
              &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
              &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
              &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            },
            &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
              &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
              &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            },
            &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
              &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
              &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
            },
            &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
          },
        ],
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&quot;
      },
      &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
      &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`get`&quot; - &quot;`getAccessibleGmbAccounts`&quot; - &quot;`requestGmbAccess`&quot; - &quot;`requestInventoryVerification`&quot; - &quot;`setInventoryVerificationContact`&quot; - &quot;`update`&quot;
      &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of POS data provider. Required only for SetPosProvider.
      &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS provider.
    },
  ],
}

  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.
    {
      &quot;batchId&quot;: 42, # The ID of the request entry to which this entry responds.
      &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if, and only if, the request failed.
        &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
        &quot;errors&quot;: [ # A list of errors.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
      },
      &quot;gmbAccounts&quot;: { # The the list of accessible GMB accounts.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the Merchant Center account.
        &quot;gmbAccounts&quot;: [ # A list of GMB accounts which are available to the merchant.
          {
            &quot;email&quot;: &quot;A String&quot;, # The email which identifies the GMB account.
            &quot;listingCount&quot;: &quot;A String&quot;, # Number of listings under this account.
            &quot;name&quot;: &quot;A String&quot;, # The name of the GMB account.
            &quot;type&quot;: &quot;A String&quot;, # The type of the GMB account (User or Business).
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liasettingsCustomBatchResponseEntry`&quot;
      &quot;liaSettings&quot;: { # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role. # The retrieved or updated Lia settings.
        &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
        &quot;countrySettings&quot;: [ # The LIA settings for each country.
          {
            &quot;about&quot;: { # The settings for the About page.
              &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
              &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
            },
            &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
            &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
            &quot;inventory&quot;: { # LIA inventory verification settings.
              &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
              &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
              &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
              &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            },
            &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
              &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
              &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            },
            &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
              &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
              &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
            },
            &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
          },
        ],
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&quot;
      },
      &quot;posDataProviders&quot;: [ # The list of POS data providers.
        {
          &quot;country&quot;: &quot;A String&quot;, # Country code.
          &quot;posDataProviders&quot;: [ # A list of POS data providers.
            {
              &quot;displayName&quot;: &quot;A String&quot;, # The display name of Pos data Provider.
              &quot;fullName&quot;: &quot;A String&quot;, # The full name of this POS data Provider.
              &quot;providerId&quot;: &quot;A String&quot;, # The ID of the account.
            },
          ],
        },
      ],
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#liasettingsCustomBatchResponse&quot;.
}</pre>
</div>

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

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which to get or update LIA settings. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role.
  &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
  &quot;countrySettings&quot;: [ # The LIA settings for each country.
    {
      &quot;about&quot;: { # The settings for the About page.
        &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
      },
      &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
      &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
      &quot;inventory&quot;: { # LIA inventory verification settings.
        &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
        &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
        &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
        &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
        &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
        &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
        &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
      },
      &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&quot;
}</pre>
</div>

<div class="method">
    <code class="details" id="getaccessiblegmbaccounts">getaccessiblegmbaccounts(merchantId, accountId, x__xgafv=None)</code>
  <pre>Retrieves the list of accessible Google My Business accounts.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which to retrieve accessible Google My Business accounts. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;accountId&quot;: &quot;A String&quot;, # The ID of the Merchant Center account.
  &quot;gmbAccounts&quot;: [ # A list of GMB accounts which are available to the merchant.
    {
      &quot;email&quot;: &quot;A String&quot;, # The email which identifies the GMB account.
      &quot;listingCount&quot;: &quot;A String&quot;, # Number of listings under this account.
      &quot;name&quot;: &quot;A String&quot;, # The name of the GMB account.
      &quot;type&quot;: &quot;A String&quot;, # The type of the GMB account (User or Business).
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#liasettingsGetAccessibleGmbAccountsResponse&quot;.
}</pre>
</div>

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

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client account. (required)
  maxResults: integer, The maximum number of LIA settings to return in the response, used for paging.
  pageToken: string, The token returned by the previous request.
  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#liasettingsListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of LIA settings.
  &quot;resources&quot;: [
    { # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role.
      &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
      &quot;countrySettings&quot;: [ # The LIA settings for each country.
        {
          &quot;about&quot;: { # The settings for the About page.
            &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
          },
          &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
          &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
          &quot;inventory&quot;: { # LIA inventory verification settings.
            &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
            &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
            &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
            &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
          },
          &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
            &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
            &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
          },
          &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
            &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
            &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
          },
          &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&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="listposdataproviders">listposdataproviders(x__xgafv=None)</code>
  <pre>Retrieves the list of POS data providers that have active settings for the all eiligible countries.

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#liasettingsListPosDataProvidersResponse&quot;.
  &quot;posDataProviders&quot;: [ # The list of POS data providers for each eligible country
    {
      &quot;country&quot;: &quot;A String&quot;, # Country code.
      &quot;posDataProviders&quot;: [ # A list of POS data providers.
        {
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of Pos data Provider.
          &quot;fullName&quot;: &quot;A String&quot;, # The full name of this POS data Provider.
          &quot;providerId&quot;: &quot;A String&quot;, # The ID of the account.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="requestgmbaccess">requestgmbaccess(merchantId, accountId, gmbEmail, x__xgafv=None)</code>
  <pre>Requests access to a specified Google My Business account.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which GMB access is requested. (required)
  gmbEmail: string, The email of the Google My Business account. (required)
  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#liasettingsRequestGmbAccessResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="requestinventoryverification">requestinventoryverification(merchantId, accountId, country, x__xgafv=None)</code>
  <pre>Requests inventory validation for the specified country.

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 manages the order. This cannot be a multi-client account. (required)
  country: string, The country for which inventory validation is requested. (required)
  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#liasettingsRequestInventoryVerificationResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="setinventoryverificationcontact">setinventoryverificationcontact(merchantId, accountId, country, language, contactName, contactEmail, x__xgafv=None)</code>
  <pre>Sets the inventory verification contract for the specified country.

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 manages the order. This cannot be a multi-client account. (required)
  country: string, The country for which inventory verification is requested. (required)
  language: string, The language for which inventory verification is requested. (required)
  contactName: string, The name of the inventory verification contact. (required)
  contactEmail: string, The email of the inventory verification contact. (required)
  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#liasettingsSetInventoryVerificationContactResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="setposdataprovider">setposdataprovider(merchantId, accountId, country, posDataProviderId=None, posExternalAccountId=None, x__xgafv=None)</code>
  <pre>Sets the POS data provider for the specified country.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and `accountId` must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account for which to retrieve accessible Google My Business accounts. (required)
  country: string, The country for which the POS data provider is selected. (required)
  posDataProviderId: string, The ID of POS data provider.
  posExternalAccountId: string, The account ID by which this merchant is known to the POS data provider.
  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#liasettingsSetPosDataProviderResponse&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(merchantId, accountId, body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Updates the LIA settings of the 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 for which to get or update LIA settings. (required)
  body: object, The request body.
    The object takes the form of:

{ # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role.
  &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
  &quot;countrySettings&quot;: [ # The LIA settings for each country.
    {
      &quot;about&quot;: { # The settings for the About page.
        &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
      },
      &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
      &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
      &quot;inventory&quot;: { # LIA inventory verification settings.
        &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
        &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
        &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
        &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
        &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
        &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
        &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
      },
      &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&quot;
}

  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:

    { # Local Inventory ads (LIA) settings. All methods except listposdataproviders require the admin role.
  &quot;accountId&quot;: &quot;A String&quot;, # The ID of the account to which these LIA settings belong. Ignored upon update, always present in get request responses.
  &quot;countrySettings&quot;: [ # The LIA settings for each country.
    {
      &quot;about&quot;: { # The settings for the About page.
        &quot;status&quot;: &quot;A String&quot;, # The status of the verification process for the About page. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;url&quot;: &quot;A String&quot;, # The URL for the About page.
      },
      &quot;country&quot;: &quot;A String&quot;, # Required. CLDR country code (e.g. &quot;US&quot;).
      &quot;hostedLocalStorefrontActive&quot;: True or False, # The status of the &quot;Merchant hosted local storefront&quot; feature.
      &quot;inventory&quot;: { # LIA inventory verification settings.
        &quot;inventoryVerificationContactEmail&quot;: &quot;A String&quot;, # The email of the contact for the inventory verification process.
        &quot;inventoryVerificationContactName&quot;: &quot;A String&quot;, # The name of the contact for the inventory verification process.
        &quot;inventoryVerificationContactStatus&quot;: &quot;A String&quot;, # The status of the verification contact. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
        &quot;status&quot;: &quot;A String&quot;, # The status of the inventory verification process. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;onDisplayToOrder&quot;: { # LIA &quot;On Display To Order&quot; settings.
        &quot;shippingCostPolicyUrl&quot;: &quot;A String&quot;, # Shipping cost and policy URL.
        &quot;status&quot;: &quot;A String&quot;, # The status of the ?On display to order? feature. Acceptable values are: - &quot;`active`&quot; - &quot;`inactive`&quot; - &quot;`pending`&quot;
      },
      &quot;posDataProvider&quot;: { # The POS data provider linked with this country.
        &quot;posDataProviderId&quot;: &quot;A String&quot;, # The ID of the POS data provider.
        &quot;posExternalAccountId&quot;: &quot;A String&quot;, # The account ID by which this merchant is known to the POS data provider.
      },
      &quot;storePickupActive&quot;: True or False, # The status of the &quot;Store pickup&quot; feature.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#liaSettings`&quot;
}</pre>
</div>

</body></html>