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