Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://code.google.com/p/google-apis-client-generator/
 * (build: 2014-07-09 17:08:39 UTC)
 * on 2014-07-23 at 21:49:03 UTC 
 * Modify at your own risk.
 */

package com.google.api.services.content;

/**
 * Service definition for ShoppingContent (v2).
 *
 * <p>
 * Manage product items, inventory, and Merchant Center accounts for Google Shopping.
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="https://developers.google.com/shopping-content/v2/" target="_blank">API Documentation</a>
 * </p>
 *
 * <p>
 * This service uses {@link ShoppingContentRequestInitializer} to initialize global parameters via its
 * {@link Builder}.
 * </p>
 *
 * @since 1.3
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public class ShoppingContent extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient {

  // Note: Leave this static initializer at the top of the file.
  static {
    com.google.api.client.util.Preconditions.checkState(
        com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION == 1 &&
        com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION >= 15,
        "You are currently running with version %s of google-api-client. " +
        "You need at least version 1.15 of google-api-client to run version " +
        "1.19.0 of the Content API for Shopping library.", com.google.api.client.googleapis.GoogleUtils.VERSION);
  }

  /**
   * The default encoded root URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_ROOT_URL = "https://www.googleapis.com/";

  /**
   * The default encoded service path of the service. This is determined when the library is
   * generated and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_SERVICE_PATH = "content/v2/";

  /**
   * The default encoded base URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   */
  public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH;

  /**
   * Constructor.
   *
   * <p>
   * Use {@link Builder} if you need to specify any of the optional parameters.
   * </p>
   *
   * @param transport HTTP transport, which should normally be:
   *        <ul>
   *        <li>Google App Engine:
   *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
   *        <li>Android: {@code newCompatibleTransport} from
   *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
   *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
   *        </li>
   *        </ul>
   * @param jsonFactory JSON factory, which may be:
   *        <ul>
   *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
   *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
   *        <li>Android Honeycomb or higher:
   *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
   *        </ul>
   * @param httpRequestInitializer HTTP request initializer or {@code null} for none
   * @since 1.7
   */
  public ShoppingContent(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
      com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
    this(new Builder(transport, jsonFactory, httpRequestInitializer));
  }

  /**
   * @param builder builder
   */
  ShoppingContent(Builder builder) {
    super(builder);
  }

  @Override
  protected void initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest<?> httpClientRequest) throws java.io.IOException {
    super.initialize(httpClientRequest);
  }

  /**
   * An accessor for creating requests from the Accounts collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Accounts.List request = content.accounts().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Accounts accounts() {
    return new Accounts();
  }

  /**
   * The "accounts" collection of methods.
   */
  public class Accounts {

    /**
     * Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single
     * request.
     *
     * Create a request for the method "accounts.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.AccountsCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.AccountsCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.AccountsCustomBatchResponse> {

      private static final String REST_PATH = "accounts/batch";

      /**
       * Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single
       * request.
       *
       * Create a request for the method "accounts.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.AccountsCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.AccountsCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.AccountsCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Deletes a Merchant Center sub-account.
     *
     * Create a request for the method "accounts.delete".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account.
     * @return the request
     */
    public Delete delete(java.math.BigInteger merchantId, java.math.BigInteger accountId) throws java.io.IOException {
      Delete result = new Delete(merchantId, accountId);
      initialize(result);
      return result;
    }

    public class Delete extends ShoppingContentRequest<Void> {

      private static final String REST_PATH = "{merchantId}/accounts/{accountId}";

      /**
       * Deletes a Merchant Center sub-account.
       *
       * Create a request for the method "accounts.delete".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Delete#execute()} method to invoke the remote operation. <p> {@link
       * Delete#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account.
       * @since 1.13
       */
      protected Delete(java.math.BigInteger merchantId, java.math.BigInteger accountId) {
        super(ShoppingContent.this, "DELETE", REST_PATH, null, Void.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public Delete setAlt(java.lang.String alt) {
        return (Delete) super.setAlt(alt);
      }

      @Override
      public Delete setFields(java.lang.String fields) {
        return (Delete) super.setFields(fields);
      }

      @Override
      public Delete setKey(java.lang.String key) {
        return (Delete) super.setKey(key);
      }

      @Override
      public Delete setOauthToken(java.lang.String oauthToken) {
        return (Delete) super.setOauthToken(oauthToken);
      }

      @Override
      public Delete setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Delete) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Delete setQuotaUser(java.lang.String quotaUser) {
        return (Delete) super.setQuotaUser(quotaUser);
      }

      @Override
      public Delete setUserIp(java.lang.String userIp) {
        return (Delete) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Delete setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account. */
      public Delete setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Delete set(String parameterName, Object value) {
        return (Delete) super.set(parameterName, value);
      }
    }
    /**
     * Retrieves a Merchant Center account.
     *
     * Create a request for the method "accounts.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account.
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.math.BigInteger accountId) throws java.io.IOException {
      Get result = new Get(merchantId, accountId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.Account> {

      private static final String REST_PATH = "{merchantId}/accounts/{accountId}";

      /**
       * Retrieves a Merchant Center account.
       *
       * Create a request for the method "accounts.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account.
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.math.BigInteger accountId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.Account.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account. */
      public Get setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Creates a Merchant Center sub-account.
     *
     * Create a request for the method "accounts.insert".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Insert#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param content the {@link com.google.api.services.content.model.Account}
     * @return the request
     */
    public Insert insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Account content) throws java.io.IOException {
      Insert result = new Insert(merchantId, content);
      initialize(result);
      return result;
    }

    public class Insert extends ShoppingContentRequest<com.google.api.services.content.model.Account> {

      private static final String REST_PATH = "{merchantId}/accounts";

      /**
       * Creates a Merchant Center sub-account.
       *
       * Create a request for the method "accounts.insert".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Insert#execute()} method to invoke the remote operation. <p> {@link
       * Insert#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param content the {@link com.google.api.services.content.model.Account}
       * @since 1.13
       */
      protected Insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Account content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.Account.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getName(), "Account.getName()");
      }

      @Override
      public Insert setAlt(java.lang.String alt) {
        return (Insert) super.setAlt(alt);
      }

      @Override
      public Insert setFields(java.lang.String fields) {
        return (Insert) super.setFields(fields);
      }

      @Override
      public Insert setKey(java.lang.String key) {
        return (Insert) super.setKey(key);
      }

      @Override
      public Insert setOauthToken(java.lang.String oauthToken) {
        return (Insert) super.setOauthToken(oauthToken);
      }

      @Override
      public Insert setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Insert) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Insert setQuotaUser(java.lang.String quotaUser) {
        return (Insert) super.setQuotaUser(quotaUser);
      }

      @Override
      public Insert setUserIp(java.lang.String userIp) {
        return (Insert) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Insert setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @Override
      public Insert set(String parameterName, Object value) {
        return (Insert) super.set(parameterName, value);
      }
    }
    /**
     * Lists the sub-accounts in your Merchant Center account.
     *
     * Create a request for the method "accounts.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.AccountsListResponse> {

      private static final String REST_PATH = "{merchantId}/accounts";

      /**
       * Lists the sub-accounts in your Merchant Center account.
       *
       * Create a request for the method "accounts.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.AccountsListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The token returned by the previous request. */
      @com.google.api.client.util.Key
      private java.lang.String pageToken;

      /** The token returned by the previous request.
       */
      public java.lang.String getPageToken() {
        return pageToken;
      }

      /** The token returned by the previous request. */
      public List setPageToken(java.lang.String pageToken) {
        this.pageToken = pageToken;
        return this;
      }

      /** The maximum number of accounts to return in the response, used for paging. */
      @com.google.api.client.util.Key
      private java.lang.Long maxResults;

      /** The maximum number of accounts to return in the response, used for paging.
       */
      public java.lang.Long getMaxResults() {
        return maxResults;
      }

      /** The maximum number of accounts to return in the response, used for paging. */
      public List setMaxResults(java.lang.Long maxResults) {
        this.maxResults = maxResults;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }
    /**
     * Updates a Merchant Center account. This method supports patch semantics.
     *
     * Create a request for the method "accounts.patch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account.
     * @param content the {@link com.google.api.services.content.model.Account}
     * @return the request
     */
    public Patch patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.Account content) throws java.io.IOException {
      Patch result = new Patch(merchantId, accountId, content);
      initialize(result);
      return result;
    }

    public class Patch extends ShoppingContentRequest<com.google.api.services.content.model.Account> {

      private static final String REST_PATH = "{merchantId}/accounts/{accountId}";

      /**
       * Updates a Merchant Center account. This method supports patch semantics.
       *
       * Create a request for the method "accounts.patch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Patch#execute()} method to invoke the remote operation. <p> {@link
       * Patch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account.
       * @param content the {@link com.google.api.services.content.model.Account}
       * @since 1.13
       */
      protected Patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.Account content) {
        super(ShoppingContent.this, "PATCH", REST_PATH, content, com.google.api.services.content.model.Account.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public Patch setAlt(java.lang.String alt) {
        return (Patch) super.setAlt(alt);
      }

      @Override
      public Patch setFields(java.lang.String fields) {
        return (Patch) super.setFields(fields);
      }

      @Override
      public Patch setKey(java.lang.String key) {
        return (Patch) super.setKey(key);
      }

      @Override
      public Patch setOauthToken(java.lang.String oauthToken) {
        return (Patch) super.setOauthToken(oauthToken);
      }

      @Override
      public Patch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Patch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Patch setQuotaUser(java.lang.String quotaUser) {
        return (Patch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Patch setUserIp(java.lang.String userIp) {
        return (Patch) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Patch setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account. */
      public Patch setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Patch set(String parameterName, Object value) {
        return (Patch) super.set(parameterName, value);
      }
    }
    /**
     * Updates a Merchant Center account.
     *
     * Create a request for the method "accounts.update".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Update#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account.
     * @param content the {@link com.google.api.services.content.model.Account}
     * @return the request
     */
    public Update update(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.Account content) throws java.io.IOException {
      Update result = new Update(merchantId, accountId, content);
      initialize(result);
      return result;
    }

    public class Update extends ShoppingContentRequest<com.google.api.services.content.model.Account> {

      private static final String REST_PATH = "{merchantId}/accounts/{accountId}";

      /**
       * Updates a Merchant Center account.
       *
       * Create a request for the method "accounts.update".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Update#execute()} method to invoke the remote operation. <p> {@link
       * Update#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account.
       * @param content the {@link com.google.api.services.content.model.Account}
       * @since 1.13
       */
      protected Update(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.Account content) {
        super(ShoppingContent.this, "PUT", REST_PATH, content, com.google.api.services.content.model.Account.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getName(), "Account.getName()");
      }

      @Override
      public Update setAlt(java.lang.String alt) {
        return (Update) super.setAlt(alt);
      }

      @Override
      public Update setFields(java.lang.String fields) {
        return (Update) super.setFields(fields);
      }

      @Override
      public Update setKey(java.lang.String key) {
        return (Update) super.setKey(key);
      }

      @Override
      public Update setOauthToken(java.lang.String oauthToken) {
        return (Update) super.setOauthToken(oauthToken);
      }

      @Override
      public Update setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Update) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Update setQuotaUser(java.lang.String quotaUser) {
        return (Update) super.setQuotaUser(quotaUser);
      }

      @Override
      public Update setUserIp(java.lang.String userIp) {
        return (Update) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Update setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account. */
      public Update setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Update set(String parameterName, Object value) {
        return (Update) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Accountshipping collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Accountshipping.List request = content.accountshipping().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Accountshipping accountshipping() {
    return new Accountshipping();
  }

  /**
   * The "accountshipping" collection of methods.
   */
  public class Accountshipping {

    /**
     * Updates the shipping settings of the account. This method supports patch semantics.
     *
     * Create a request for the method "accountshipping.patch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account for which to get/update account shipping settings.
     * @param content the {@link com.google.api.services.content.model.AccountShipping}
     * @return the request
     */
    public Patch patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.AccountShipping content) throws java.io.IOException {
      Patch result = new Patch(merchantId, accountId, content);
      initialize(result);
      return result;
    }

    public class Patch extends ShoppingContentRequest<com.google.api.services.content.model.AccountShipping> {

      private static final String REST_PATH = "{merchantId}/accountshipping/{accountId}";

      /**
       * Updates the shipping settings of the account. This method supports patch semantics.
       *
       * Create a request for the method "accountshipping.patch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Patch#execute()} method to invoke the remote operation. <p> {@link
       * Patch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account for which to get/update account shipping settings.
       * @param content the {@link com.google.api.services.content.model.AccountShipping}
       * @since 1.13
       */
      protected Patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.AccountShipping content) {
        super(ShoppingContent.this, "PATCH", REST_PATH, content, com.google.api.services.content.model.AccountShipping.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public Patch setAlt(java.lang.String alt) {
        return (Patch) super.setAlt(alt);
      }

      @Override
      public Patch setFields(java.lang.String fields) {
        return (Patch) super.setFields(fields);
      }

      @Override
      public Patch setKey(java.lang.String key) {
        return (Patch) super.setKey(key);
      }

      @Override
      public Patch setOauthToken(java.lang.String oauthToken) {
        return (Patch) super.setOauthToken(oauthToken);
      }

      @Override
      public Patch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Patch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Patch setQuotaUser(java.lang.String quotaUser) {
        return (Patch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Patch setUserIp(java.lang.String userIp) {
        return (Patch) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Patch setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account for which to get/update account shipping settings. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account for which to get/update account shipping settings.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account for which to get/update account shipping settings. */
      public Patch setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Patch set(String parameterName, Object value) {
        return (Patch) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Accountstatuses collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Accountstatuses.List request = content.accountstatuses().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Accountstatuses accountstatuses() {
    return new Accountstatuses();
  }

  /**
   * The "accountstatuses" collection of methods.
   */
  public class Accountstatuses {

    /**
     * Create a request for the method "accountstatuses.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.AccountstatusesCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.AccountstatusesCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.AccountstatusesCustomBatchResponse> {

      private static final String REST_PATH = "accountstatuses/batch";

      /**
       * Create a request for the method "accountstatuses.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.AccountstatusesCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.AccountstatusesCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.AccountstatusesCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Retrieves the status of a Merchant Center account.
     *
     * Create a request for the method "accountstatuses.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account.
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.math.BigInteger accountId) throws java.io.IOException {
      Get result = new Get(merchantId, accountId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.AccountStatus> {

      private static final String REST_PATH = "{merchantId}/accountstatuses/{accountId}";

      /**
       * Retrieves the status of a Merchant Center account.
       *
       * Create a request for the method "accountstatuses.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account.
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.math.BigInteger accountId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.AccountStatus.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account. */
      public Get setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Lists the statuses of the sub-accounts in your Merchant Center account.
     *
     * Create a request for the method "accountstatuses.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.AccountstatusesListResponse> {

      private static final String REST_PATH = "{merchantId}/accountstatuses";

      /**
       * Lists the statuses of the sub-accounts in your Merchant Center account.
       *
       * Create a request for the method "accountstatuses.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.AccountstatusesListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The token returned by the previous request. */
      @com.google.api.client.util.Key
      private java.lang.String pageToken;

      /** The token returned by the previous request.
       */
      public java.lang.String getPageToken() {
        return pageToken;
      }

      /** The token returned by the previous request. */
      public List setPageToken(java.lang.String pageToken) {
        this.pageToken = pageToken;
        return this;
      }

      /** The maximum number of account statuses to return in the response, used for paging. */
      @com.google.api.client.util.Key
      private java.lang.Long maxResults;

      /** The maximum number of account statuses to return in the response, used for paging.
       */
      public java.lang.Long getMaxResults() {
        return maxResults;
      }

      /** The maximum number of account statuses to return in the response, used for paging. */
      public List setMaxResults(java.lang.Long maxResults) {
        this.maxResults = maxResults;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Accounttax collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Accounttax.List request = content.accounttax().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Accounttax accounttax() {
    return new Accounttax();
  }

  /**
   * The "accounttax" collection of methods.
   */
  public class Accounttax {

    /**
     * Updates the tax settings of the account. This method supports patch semantics.
     *
     * Create a request for the method "accounttax.patch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param accountId The ID of the account for which to get/update account tax settings.
     * @param content the {@link com.google.api.services.content.model.AccountTax}
     * @return the request
     */
    public Patch patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.AccountTax content) throws java.io.IOException {
      Patch result = new Patch(merchantId, accountId, content);
      initialize(result);
      return result;
    }

    public class Patch extends ShoppingContentRequest<com.google.api.services.content.model.AccountTax> {

      private static final String REST_PATH = "{merchantId}/accounttax/{accountId}";

      /**
       * Updates the tax settings of the account. This method supports patch semantics.
       *
       * Create a request for the method "accounttax.patch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Patch#execute()} method to invoke the remote operation. <p> {@link
       * Patch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param accountId The ID of the account for which to get/update account tax settings.
       * @param content the {@link com.google.api.services.content.model.AccountTax}
       * @since 1.13
       */
      protected Patch(java.math.BigInteger merchantId, java.math.BigInteger accountId, com.google.api.services.content.model.AccountTax content) {
        super(ShoppingContent.this, "PATCH", REST_PATH, content, com.google.api.services.content.model.AccountTax.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.accountId = com.google.api.client.util.Preconditions.checkNotNull(accountId, "Required parameter accountId must be specified.");
      }

      @Override
      public Patch setAlt(java.lang.String alt) {
        return (Patch) super.setAlt(alt);
      }

      @Override
      public Patch setFields(java.lang.String fields) {
        return (Patch) super.setFields(fields);
      }

      @Override
      public Patch setKey(java.lang.String key) {
        return (Patch) super.setKey(key);
      }

      @Override
      public Patch setOauthToken(java.lang.String oauthToken) {
        return (Patch) super.setOauthToken(oauthToken);
      }

      @Override
      public Patch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Patch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Patch setQuotaUser(java.lang.String quotaUser) {
        return (Patch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Patch setUserIp(java.lang.String userIp) {
        return (Patch) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Patch setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the account for which to get/update account tax settings. */
      @com.google.api.client.util.Key
      private java.math.BigInteger accountId;

      /** The ID of the account for which to get/update account tax settings.
       */
      public java.math.BigInteger getAccountId() {
        return accountId;
      }

      /** The ID of the account for which to get/update account tax settings. */
      public Patch setAccountId(java.math.BigInteger accountId) {
        this.accountId = accountId;
        return this;
      }

      @Override
      public Patch set(String parameterName, Object value) {
        return (Patch) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Datafeeds collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Datafeeds.List request = content.datafeeds().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Datafeeds datafeeds() {
    return new Datafeeds();
  }

  /**
   * The "datafeeds" collection of methods.
   */
  public class Datafeeds {

    /**
     * Create a request for the method "datafeeds.batch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Batch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.DatafeedsBatchRequest}
     * @return the request
     */
    public Batch batch(com.google.api.services.content.model.DatafeedsBatchRequest content) throws java.io.IOException {
      Batch result = new Batch(content);
      initialize(result);
      return result;
    }

    public class Batch extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedsBatchResponse> {

      private static final String REST_PATH = "datafeedsNativeBatch";

      /**
       * Create a request for the method "datafeeds.batch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Batch#execute()} method to invoke the remote operation. <p> {@link
       * Batch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.DatafeedsBatchRequest}
       * @since 1.13
       */
      protected Batch(com.google.api.services.content.model.DatafeedsBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.DatafeedsBatchResponse.class);
      }

      @Override
      public Batch setAlt(java.lang.String alt) {
        return (Batch) super.setAlt(alt);
      }

      @Override
      public Batch setFields(java.lang.String fields) {
        return (Batch) super.setFields(fields);
      }

      @Override
      public Batch setKey(java.lang.String key) {
        return (Batch) super.setKey(key);
      }

      @Override
      public Batch setOauthToken(java.lang.String oauthToken) {
        return (Batch) super.setOauthToken(oauthToken);
      }

      @Override
      public Batch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Batch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Batch setQuotaUser(java.lang.String quotaUser) {
        return (Batch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Batch setUserIp(java.lang.String userIp) {
        return (Batch) super.setUserIp(userIp);
      }

      @Override
      public Batch set(String parameterName, Object value) {
        return (Batch) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "datafeeds.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.DatafeedsCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.DatafeedsCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedsCustomBatchResponse> {

      private static final String REST_PATH = "datafeeds/batch";

      /**
       * Create a request for the method "datafeeds.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.DatafeedsCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.DatafeedsCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.DatafeedsCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Deletes a datafeed from your Merchant Center account.
     *
     * Create a request for the method "datafeeds.delete".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param datafeedId
     * @return the request
     */
    public Delete delete(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) throws java.io.IOException {
      Delete result = new Delete(merchantId, datafeedId);
      initialize(result);
      return result;
    }

    public class Delete extends ShoppingContentRequest<Void> {

      private static final String REST_PATH = "{merchantId}/datafeeds/{datafeedId}";

      /**
       * Deletes a datafeed from your Merchant Center account.
       *
       * Create a request for the method "datafeeds.delete".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Delete#execute()} method to invoke the remote operation. <p> {@link
       * Delete#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param datafeedId
       * @since 1.13
       */
      protected Delete(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) {
        super(ShoppingContent.this, "DELETE", REST_PATH, null, Void.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.datafeedId = com.google.api.client.util.Preconditions.checkNotNull(datafeedId, "Required parameter datafeedId must be specified.");
      }

      @Override
      public Delete setAlt(java.lang.String alt) {
        return (Delete) super.setAlt(alt);
      }

      @Override
      public Delete setFields(java.lang.String fields) {
        return (Delete) super.setFields(fields);
      }

      @Override
      public Delete setKey(java.lang.String key) {
        return (Delete) super.setKey(key);
      }

      @Override
      public Delete setOauthToken(java.lang.String oauthToken) {
        return (Delete) super.setOauthToken(oauthToken);
      }

      @Override
      public Delete setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Delete) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Delete setQuotaUser(java.lang.String quotaUser) {
        return (Delete) super.setQuotaUser(quotaUser);
      }

      @Override
      public Delete setUserIp(java.lang.String userIp) {
        return (Delete) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Delete setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger datafeedId;

      /**

       */
      public java.math.BigInteger getDatafeedId() {
        return datafeedId;
      }

      public Delete setDatafeedId(java.math.BigInteger datafeedId) {
        this.datafeedId = datafeedId;
        return this;
      }

      @Override
      public Delete set(String parameterName, Object value) {
        return (Delete) super.set(parameterName, value);
      }
    }
    /**
     * Retrieves a datafeed from your Merchant Center account.
     *
     * Create a request for the method "datafeeds.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param datafeedId
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) throws java.io.IOException {
      Get result = new Get(merchantId, datafeedId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.Datafeed> {

      private static final String REST_PATH = "{merchantId}/datafeeds/{datafeedId}";

      /**
       * Retrieves a datafeed from your Merchant Center account.
       *
       * Create a request for the method "datafeeds.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param datafeedId
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.Datafeed.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.datafeedId = com.google.api.client.util.Preconditions.checkNotNull(datafeedId, "Required parameter datafeedId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger datafeedId;

      /**

       */
      public java.math.BigInteger getDatafeedId() {
        return datafeedId;
      }

      public Get setDatafeedId(java.math.BigInteger datafeedId) {
        this.datafeedId = datafeedId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Registers a datafeed with your Merchant Center account.
     *
     * Create a request for the method "datafeeds.insert".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Insert#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param content the {@link com.google.api.services.content.model.Datafeed}
     * @return the request
     */
    public Insert insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Datafeed content) throws java.io.IOException {
      Insert result = new Insert(merchantId, content);
      initialize(result);
      return result;
    }

    public class Insert extends ShoppingContentRequest<com.google.api.services.content.model.Datafeed> {

      private static final String REST_PATH = "{merchantId}/datafeeds";

      /**
       * Registers a datafeed with your Merchant Center account.
       *
       * Create a request for the method "datafeeds.insert".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Insert#execute()} method to invoke the remote operation. <p> {@link
       * Insert#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param content the {@link com.google.api.services.content.model.Datafeed}
       * @since 1.13
       */
      protected Insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Datafeed content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.Datafeed.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public Insert setAlt(java.lang.String alt) {
        return (Insert) super.setAlt(alt);
      }

      @Override
      public Insert setFields(java.lang.String fields) {
        return (Insert) super.setFields(fields);
      }

      @Override
      public Insert setKey(java.lang.String key) {
        return (Insert) super.setKey(key);
      }

      @Override
      public Insert setOauthToken(java.lang.String oauthToken) {
        return (Insert) super.setOauthToken(oauthToken);
      }

      @Override
      public Insert setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Insert) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Insert setQuotaUser(java.lang.String quotaUser) {
        return (Insert) super.setQuotaUser(quotaUser);
      }

      @Override
      public Insert setUserIp(java.lang.String userIp) {
        return (Insert) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Insert setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @Override
      public Insert set(String parameterName, Object value) {
        return (Insert) super.set(parameterName, value);
      }
    }
    /**
     * Lists the datafeeds in your Merchant Center account.
     *
     * Create a request for the method "datafeeds.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedsListResponse> {

      private static final String REST_PATH = "{merchantId}/datafeeds";

      /**
       * Lists the datafeeds in your Merchant Center account.
       *
       * Create a request for the method "datafeeds.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.DatafeedsListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }
    /**
     * Updates a datafeed of your Merchant Center account. This method supports patch semantics.
     *
     * Create a request for the method "datafeeds.patch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param datafeedId
     * @param content the {@link com.google.api.services.content.model.Datafeed}
     * @return the request
     */
    public Patch patch(java.math.BigInteger merchantId, java.math.BigInteger datafeedId, com.google.api.services.content.model.Datafeed content) throws java.io.IOException {
      Patch result = new Patch(merchantId, datafeedId, content);
      initialize(result);
      return result;
    }

    public class Patch extends ShoppingContentRequest<com.google.api.services.content.model.Datafeed> {

      private static final String REST_PATH = "{merchantId}/datafeeds/{datafeedId}";

      /**
       * Updates a datafeed of your Merchant Center account. This method supports patch semantics.
       *
       * Create a request for the method "datafeeds.patch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Patch#execute()} method to invoke the remote operation. <p> {@link
       * Patch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param datafeedId
       * @param content the {@link com.google.api.services.content.model.Datafeed}
       * @since 1.13
       */
      protected Patch(java.math.BigInteger merchantId, java.math.BigInteger datafeedId, com.google.api.services.content.model.Datafeed content) {
        super(ShoppingContent.this, "PATCH", REST_PATH, content, com.google.api.services.content.model.Datafeed.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.datafeedId = com.google.api.client.util.Preconditions.checkNotNull(datafeedId, "Required parameter datafeedId must be specified.");
      }

      @Override
      public Patch setAlt(java.lang.String alt) {
        return (Patch) super.setAlt(alt);
      }

      @Override
      public Patch setFields(java.lang.String fields) {
        return (Patch) super.setFields(fields);
      }

      @Override
      public Patch setKey(java.lang.String key) {
        return (Patch) super.setKey(key);
      }

      @Override
      public Patch setOauthToken(java.lang.String oauthToken) {
        return (Patch) super.setOauthToken(oauthToken);
      }

      @Override
      public Patch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Patch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Patch setQuotaUser(java.lang.String quotaUser) {
        return (Patch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Patch setUserIp(java.lang.String userIp) {
        return (Patch) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Patch setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger datafeedId;

      /**

       */
      public java.math.BigInteger getDatafeedId() {
        return datafeedId;
      }

      public Patch setDatafeedId(java.math.BigInteger datafeedId) {
        this.datafeedId = datafeedId;
        return this;
      }

      @Override
      public Patch set(String parameterName, Object value) {
        return (Patch) super.set(parameterName, value);
      }
    }
    /**
     * Updates a datafeed of your Merchant Center account.
     *
     * Create a request for the method "datafeeds.update".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Update#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param datafeedId
     * @param content the {@link com.google.api.services.content.model.Datafeed}
     * @return the request
     */
    public Update update(java.math.BigInteger merchantId, java.math.BigInteger datafeedId, com.google.api.services.content.model.Datafeed content) throws java.io.IOException {
      Update result = new Update(merchantId, datafeedId, content);
      initialize(result);
      return result;
    }

    public class Update extends ShoppingContentRequest<com.google.api.services.content.model.Datafeed> {

      private static final String REST_PATH = "{merchantId}/datafeeds/{datafeedId}";

      /**
       * Updates a datafeed of your Merchant Center account.
       *
       * Create a request for the method "datafeeds.update".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Update#execute()} method to invoke the remote operation. <p> {@link
       * Update#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param datafeedId
       * @param content the {@link com.google.api.services.content.model.Datafeed}
       * @since 1.13
       */
      protected Update(java.math.BigInteger merchantId, java.math.BigInteger datafeedId, com.google.api.services.content.model.Datafeed content) {
        super(ShoppingContent.this, "PUT", REST_PATH, content, com.google.api.services.content.model.Datafeed.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.datafeedId = com.google.api.client.util.Preconditions.checkNotNull(datafeedId, "Required parameter datafeedId must be specified.");
      }

      @Override
      public Update setAlt(java.lang.String alt) {
        return (Update) super.setAlt(alt);
      }

      @Override
      public Update setFields(java.lang.String fields) {
        return (Update) super.setFields(fields);
      }

      @Override
      public Update setKey(java.lang.String key) {
        return (Update) super.setKey(key);
      }

      @Override
      public Update setOauthToken(java.lang.String oauthToken) {
        return (Update) super.setOauthToken(oauthToken);
      }

      @Override
      public Update setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Update) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Update setQuotaUser(java.lang.String quotaUser) {
        return (Update) super.setQuotaUser(quotaUser);
      }

      @Override
      public Update setUserIp(java.lang.String userIp) {
        return (Update) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Update setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger datafeedId;

      /**

       */
      public java.math.BigInteger getDatafeedId() {
        return datafeedId;
      }

      public Update setDatafeedId(java.math.BigInteger datafeedId) {
        this.datafeedId = datafeedId;
        return this;
      }

      @Override
      public Update set(String parameterName, Object value) {
        return (Update) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Datafeedstatuses collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Datafeedstatuses.List request = content.datafeedstatuses().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Datafeedstatuses datafeedstatuses() {
    return new Datafeedstatuses();
  }

  /**
   * The "datafeedstatuses" collection of methods.
   */
  public class Datafeedstatuses {

    /**
     * Create a request for the method "datafeedstatuses.batch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Batch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.DatafeedstatusesBatchRequest}
     * @return the request
     */
    public Batch batch(com.google.api.services.content.model.DatafeedstatusesBatchRequest content) throws java.io.IOException {
      Batch result = new Batch(content);
      initialize(result);
      return result;
    }

    public class Batch extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedstatusesBatchResponse> {

      private static final String REST_PATH = "datafeedstatusesNativeBatch";

      /**
       * Create a request for the method "datafeedstatuses.batch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Batch#execute()} method to invoke the remote operation. <p> {@link
       * Batch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.DatafeedstatusesBatchRequest}
       * @since 1.13
       */
      protected Batch(com.google.api.services.content.model.DatafeedstatusesBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.DatafeedstatusesBatchResponse.class);
      }

      @Override
      public Batch setAlt(java.lang.String alt) {
        return (Batch) super.setAlt(alt);
      }

      @Override
      public Batch setFields(java.lang.String fields) {
        return (Batch) super.setFields(fields);
      }

      @Override
      public Batch setKey(java.lang.String key) {
        return (Batch) super.setKey(key);
      }

      @Override
      public Batch setOauthToken(java.lang.String oauthToken) {
        return (Batch) super.setOauthToken(oauthToken);
      }

      @Override
      public Batch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Batch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Batch setQuotaUser(java.lang.String quotaUser) {
        return (Batch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Batch setUserIp(java.lang.String userIp) {
        return (Batch) super.setUserIp(userIp);
      }

      @Override
      public Batch set(String parameterName, Object value) {
        return (Batch) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "datafeedstatuses.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.DatafeedstatusesCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.DatafeedstatusesCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedstatusesCustomBatchResponse> {

      private static final String REST_PATH = "datafeedstatuses/batch";

      /**
       * Create a request for the method "datafeedstatuses.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.DatafeedstatusesCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.DatafeedstatusesCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.DatafeedstatusesCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Retrieves the status of a datafeed from your Merchant Center account.
     *
     * Create a request for the method "datafeedstatuses.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @param datafeedId
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) throws java.io.IOException {
      Get result = new Get(merchantId, datafeedId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedStatus> {

      private static final String REST_PATH = "{merchantId}/datafeedstatuses/{datafeedId}";

      /**
       * Retrieves the status of a datafeed from your Merchant Center account.
       *
       * Create a request for the method "datafeedstatuses.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @param datafeedId
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.math.BigInteger datafeedId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.DatafeedStatus.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.datafeedId = com.google.api.client.util.Preconditions.checkNotNull(datafeedId, "Required parameter datafeedId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger datafeedId;

      /**

       */
      public java.math.BigInteger getDatafeedId() {
        return datafeedId;
      }

      public Get setDatafeedId(java.math.BigInteger datafeedId) {
        this.datafeedId = datafeedId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Lists the statuses of the datafeeds in your Merchant Center account.
     *
     * Create a request for the method "datafeedstatuses.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.DatafeedstatusesListResponse> {

      private static final String REST_PATH = "{merchantId}/datafeedstatuses";

      /**
       * Lists the statuses of the datafeeds in your Merchant Center account.
       *
       * Create a request for the method "datafeedstatuses.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.DatafeedstatusesListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /**

       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Inventory collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Inventory.List request = content.inventory().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Inventory inventory() {
    return new Inventory();
  }

  /**
   * The "inventory" collection of methods.
   */
  public class Inventory {

    /**
     * Updates price and availability for multiple products or stores in a single request.
     *
     * Create a request for the method "inventory.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.InventoryCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.InventoryCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.InventoryCustomBatchResponse> {

      private static final String REST_PATH = "inventory/batch";

      /**
       * Updates price and availability for multiple products or stores in a single request.
       *
       * Create a request for the method "inventory.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.InventoryCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.InventoryCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.InventoryCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Updates price and availability of a product in your Merchant Center account.
     *
     * Create a request for the method "inventory.set".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Set#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param storeCode The code of the store for which to update price and availability. Use online to update price and
     *        availability of an online product.
     * @param productId The ID of the product for which to update price and availability.
     * @param content the {@link com.google.api.services.content.model.InventorySetRequest}
     * @return the request
     */
    public Set set(java.math.BigInteger merchantId, java.lang.String storeCode, java.lang.String productId, com.google.api.services.content.model.InventorySetRequest content) throws java.io.IOException {
      Set result = new Set(merchantId, storeCode, productId, content);
      initialize(result);
      return result;
    }

    public class Set extends ShoppingContentRequest<com.google.api.services.content.model.InventorySetResponse> {

      private static final String REST_PATH = "{merchantId}/inventory/{storeCode}/products/{productId}";

      /**
       * Updates price and availability of a product in your Merchant Center account.
       *
       * Create a request for the method "inventory.set".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Set#execute()} method to invoke the remote operation. <p> {@link
       * Set#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param storeCode The code of the store for which to update price and availability. Use online to update price and
     *        availability of an online product.
       * @param productId The ID of the product for which to update price and availability.
       * @param content the {@link com.google.api.services.content.model.InventorySetRequest}
       * @since 1.13
       */
      protected Set(java.math.BigInteger merchantId, java.lang.String storeCode, java.lang.String productId, com.google.api.services.content.model.InventorySetRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.InventorySetResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.storeCode = com.google.api.client.util.Preconditions.checkNotNull(storeCode, "Required parameter storeCode must be specified.");
        this.productId = com.google.api.client.util.Preconditions.checkNotNull(productId, "Required parameter productId must be specified.");
      }

      @Override
      public Set setAlt(java.lang.String alt) {
        return (Set) super.setAlt(alt);
      }

      @Override
      public Set setFields(java.lang.String fields) {
        return (Set) super.setFields(fields);
      }

      @Override
      public Set setKey(java.lang.String key) {
        return (Set) super.setKey(key);
      }

      @Override
      public Set setOauthToken(java.lang.String oauthToken) {
        return (Set) super.setOauthToken(oauthToken);
      }

      @Override
      public Set setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Set) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Set setQuotaUser(java.lang.String quotaUser) {
        return (Set) super.setQuotaUser(quotaUser);
      }

      @Override
      public Set setUserIp(java.lang.String userIp) {
        return (Set) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Set setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /**
       * The code of the store for which to update price and availability. Use online to update
       * price and availability of an online product.
       */
      @com.google.api.client.util.Key
      private java.lang.String storeCode;

      /** The code of the store for which to update price and availability. Use online to update price and
     availability of an online product.
       */
      public java.lang.String getStoreCode() {
        return storeCode;
      }

      /**
       * The code of the store for which to update price and availability. Use online to update
       * price and availability of an online product.
       */
      public Set setStoreCode(java.lang.String storeCode) {
        this.storeCode = storeCode;
        return this;
      }

      /** The ID of the product for which to update price and availability. */
      @com.google.api.client.util.Key
      private java.lang.String productId;

      /** The ID of the product for which to update price and availability.
       */
      public java.lang.String getProductId() {
        return productId;
      }

      /** The ID of the product for which to update price and availability. */
      public Set setProductId(java.lang.String productId) {
        this.productId = productId;
        return this;
      }

      @Override
      public Set set(String parameterName, Object value) {
        return (Set) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Products collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Products.List request = content.products().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Products products() {
    return new Products();
  }

  /**
   * The "products" collection of methods.
   */
  public class Products {

    /**
     * Retrieves, inserts, and deletes multiple products in a single request.
     *
     * Create a request for the method "products.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.ProductsCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.ProductsCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.ProductsCustomBatchResponse> {

      private static final String REST_PATH = "products/batch";

      /**
       * Retrieves, inserts, and deletes multiple products in a single request.
       *
       * Create a request for the method "products.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.ProductsCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.ProductsCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.ProductsCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      /** Flag to run the request in dry-run mode. */
      @com.google.api.client.util.Key
      private java.lang.Boolean dryRun;

      /** Flag to run the request in dry-run mode.
       */
      public java.lang.Boolean getDryRun() {
        return dryRun;
      }

      /** Flag to run the request in dry-run mode. */
      public Custombatch setDryRun(java.lang.Boolean dryRun) {
        this.dryRun = dryRun;
        return this;
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Deletes a product from your Merchant Center account.
     *
     * Create a request for the method "products.delete".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param productId The ID of the product.
     * @return the request
     */
    public Delete delete(java.math.BigInteger merchantId, java.lang.String productId) throws java.io.IOException {
      Delete result = new Delete(merchantId, productId);
      initialize(result);
      return result;
    }

    public class Delete extends ShoppingContentRequest<Void> {

      private static final String REST_PATH = "{merchantId}/products/{productId}";

      /**
       * Deletes a product from your Merchant Center account.
       *
       * Create a request for the method "products.delete".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Delete#execute()} method to invoke the remote operation. <p> {@link
       * Delete#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param productId The ID of the product.
       * @since 1.13
       */
      protected Delete(java.math.BigInteger merchantId, java.lang.String productId) {
        super(ShoppingContent.this, "DELETE", REST_PATH, null, Void.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.productId = com.google.api.client.util.Preconditions.checkNotNull(productId, "Required parameter productId must be specified.");
      }

      @Override
      public Delete setAlt(java.lang.String alt) {
        return (Delete) super.setAlt(alt);
      }

      @Override
      public Delete setFields(java.lang.String fields) {
        return (Delete) super.setFields(fields);
      }

      @Override
      public Delete setKey(java.lang.String key) {
        return (Delete) super.setKey(key);
      }

      @Override
      public Delete setOauthToken(java.lang.String oauthToken) {
        return (Delete) super.setOauthToken(oauthToken);
      }

      @Override
      public Delete setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Delete) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Delete setQuotaUser(java.lang.String quotaUser) {
        return (Delete) super.setQuotaUser(quotaUser);
      }

      @Override
      public Delete setUserIp(java.lang.String userIp) {
        return (Delete) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Delete setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the product. */
      @com.google.api.client.util.Key
      private java.lang.String productId;

      /** The ID of the product.
       */
      public java.lang.String getProductId() {
        return productId;
      }

      /** The ID of the product. */
      public Delete setProductId(java.lang.String productId) {
        this.productId = productId;
        return this;
      }

      /** Flag to run the request in dry-run mode. */
      @com.google.api.client.util.Key
      private java.lang.Boolean dryRun;

      /** Flag to run the request in dry-run mode.
       */
      public java.lang.Boolean getDryRun() {
        return dryRun;
      }

      /** Flag to run the request in dry-run mode. */
      public Delete setDryRun(java.lang.Boolean dryRun) {
        this.dryRun = dryRun;
        return this;
      }

      @Override
      public Delete set(String parameterName, Object value) {
        return (Delete) super.set(parameterName, value);
      }
    }
    /**
     * Retrieves a product from your Merchant Center account.
     *
     * Create a request for the method "products.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param productId The ID of the product.
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.lang.String productId) throws java.io.IOException {
      Get result = new Get(merchantId, productId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.Product> {

      private static final String REST_PATH = "{merchantId}/products/{productId}";

      /**
       * Retrieves a product from your Merchant Center account.
       *
       * Create a request for the method "products.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param productId The ID of the product.
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.lang.String productId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.Product.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.productId = com.google.api.client.util.Preconditions.checkNotNull(productId, "Required parameter productId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the product. */
      @com.google.api.client.util.Key
      private java.lang.String productId;

      /** The ID of the product.
       */
      public java.lang.String getProductId() {
        return productId;
      }

      /** The ID of the product. */
      public Get setProductId(java.lang.String productId) {
        this.productId = productId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Uploads a product to your Merchant Center account.
     *
     * Create a request for the method "products.insert".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Insert#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param content the {@link com.google.api.services.content.model.Product}
     * @return the request
     */
    public Insert insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Product content) throws java.io.IOException {
      Insert result = new Insert(merchantId, content);
      initialize(result);
      return result;
    }

    public class Insert extends ShoppingContentRequest<com.google.api.services.content.model.Product> {

      private static final String REST_PATH = "{merchantId}/products";

      /**
       * Uploads a product to your Merchant Center account.
       *
       * Create a request for the method "products.insert".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Insert#execute()} method to invoke the remote operation. <p> {@link
       * Insert#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param content the {@link com.google.api.services.content.model.Product}
       * @since 1.13
       */
      protected Insert(java.math.BigInteger merchantId, com.google.api.services.content.model.Product content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.Product.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getChannel(), "Product.getChannel()");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getContentLanguage(), "Product.getContentLanguage()");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getOfferId(), "Product.getOfferId()");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getTargetCountry(), "Product.getTargetCountry()");
        checkRequiredParameter(content, "content");
        checkRequiredParameter(content.getTitle(), "Product.getTitle()");
      }

      @Override
      public Insert setAlt(java.lang.String alt) {
        return (Insert) super.setAlt(alt);
      }

      @Override
      public Insert setFields(java.lang.String fields) {
        return (Insert) super.setFields(fields);
      }

      @Override
      public Insert setKey(java.lang.String key) {
        return (Insert) super.setKey(key);
      }

      @Override
      public Insert setOauthToken(java.lang.String oauthToken) {
        return (Insert) super.setOauthToken(oauthToken);
      }

      @Override
      public Insert setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Insert) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Insert setQuotaUser(java.lang.String quotaUser) {
        return (Insert) super.setQuotaUser(quotaUser);
      }

      @Override
      public Insert setUserIp(java.lang.String userIp) {
        return (Insert) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Insert setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** Flag to run the request in dry-run mode. */
      @com.google.api.client.util.Key
      private java.lang.Boolean dryRun;

      /** Flag to run the request in dry-run mode.
       */
      public java.lang.Boolean getDryRun() {
        return dryRun;
      }

      /** Flag to run the request in dry-run mode. */
      public Insert setDryRun(java.lang.Boolean dryRun) {
        this.dryRun = dryRun;
        return this;
      }

      @Override
      public Insert set(String parameterName, Object value) {
        return (Insert) super.set(parameterName, value);
      }
    }
    /**
     * Lists the products in your Merchant Center account.
     *
     * Create a request for the method "products.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.ProductsListResponse> {

      private static final String REST_PATH = "{merchantId}/products";

      /**
       * Lists the products in your Merchant Center account.
       *
       * Create a request for the method "products.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.ProductsListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The token returned by the previous request. */
      @com.google.api.client.util.Key
      private java.lang.String pageToken;

      /** The token returned by the previous request.
       */
      public java.lang.String getPageToken() {
        return pageToken;
      }

      /** The token returned by the previous request. */
      public List setPageToken(java.lang.String pageToken) {
        this.pageToken = pageToken;
        return this;
      }

      /** The maximum number of products to return in the response, used for paging. */
      @com.google.api.client.util.Key
      private java.lang.Long maxResults;

      /** The maximum number of products to return in the response, used for paging.
       */
      public java.lang.Long getMaxResults() {
        return maxResults;
      }

      /** The maximum number of products to return in the response, used for paging. */
      public List setMaxResults(java.lang.Long maxResults) {
        this.maxResults = maxResults;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Productstatuses collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code ShoppingContent content = new ShoppingContent(...);}
   *   {@code ShoppingContent.Productstatuses.List request = content.productstatuses().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Productstatuses productstatuses() {
    return new Productstatuses();
  }

  /**
   * The "productstatuses" collection of methods.
   */
  public class Productstatuses {

    /**
     * Gets the statuses of multiple products in a single request.
     *
     * Create a request for the method "productstatuses.custombatch".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.google.api.services.content.model.ProductstatusesCustomBatchRequest}
     * @return the request
     */
    public Custombatch custombatch(com.google.api.services.content.model.ProductstatusesCustomBatchRequest content) throws java.io.IOException {
      Custombatch result = new Custombatch(content);
      initialize(result);
      return result;
    }

    public class Custombatch extends ShoppingContentRequest<com.google.api.services.content.model.ProductstatusesCustomBatchResponse> {

      private static final String REST_PATH = "productstatuses/batch";

      /**
       * Gets the statuses of multiple products in a single request.
       *
       * Create a request for the method "productstatuses.custombatch".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Custombatch#execute()} method to invoke the remote operation. <p>
       * {@link
       * Custombatch#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
       * must be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.google.api.services.content.model.ProductstatusesCustomBatchRequest}
       * @since 1.13
       */
      protected Custombatch(com.google.api.services.content.model.ProductstatusesCustomBatchRequest content) {
        super(ShoppingContent.this, "POST", REST_PATH, content, com.google.api.services.content.model.ProductstatusesCustomBatchResponse.class);
      }

      @Override
      public Custombatch setAlt(java.lang.String alt) {
        return (Custombatch) super.setAlt(alt);
      }

      @Override
      public Custombatch setFields(java.lang.String fields) {
        return (Custombatch) super.setFields(fields);
      }

      @Override
      public Custombatch setKey(java.lang.String key) {
        return (Custombatch) super.setKey(key);
      }

      @Override
      public Custombatch setOauthToken(java.lang.String oauthToken) {
        return (Custombatch) super.setOauthToken(oauthToken);
      }

      @Override
      public Custombatch setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Custombatch) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Custombatch setQuotaUser(java.lang.String quotaUser) {
        return (Custombatch) super.setQuotaUser(quotaUser);
      }

      @Override
      public Custombatch setUserIp(java.lang.String userIp) {
        return (Custombatch) super.setUserIp(userIp);
      }

      @Override
      public Custombatch set(String parameterName, Object value) {
        return (Custombatch) super.set(parameterName, value);
      }
    }
    /**
     * Gets the status of a product from your Merchant Center account.
     *
     * Create a request for the method "productstatuses.get".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @param productId The ID of the product.
     * @return the request
     */
    public Get get(java.math.BigInteger merchantId, java.lang.String productId) throws java.io.IOException {
      Get result = new Get(merchantId, productId);
      initialize(result);
      return result;
    }

    public class Get extends ShoppingContentRequest<com.google.api.services.content.model.ProductStatus> {

      private static final String REST_PATH = "{merchantId}/productstatuses/{productId}";

      /**
       * Gets the status of a product from your Merchant Center account.
       *
       * Create a request for the method "productstatuses.get".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @param productId The ID of the product.
       * @since 1.13
       */
      protected Get(java.math.BigInteger merchantId, java.lang.String productId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.ProductStatus.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
        this.productId = com.google.api.client.util.Preconditions.checkNotNull(productId, "Required parameter productId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public Get setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The ID of the product. */
      @com.google.api.client.util.Key
      private java.lang.String productId;

      /** The ID of the product.
       */
      public java.lang.String getProductId() {
        return productId;
      }

      /** The ID of the product. */
      public Get setProductId(java.lang.String productId) {
        this.productId = productId;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }
    /**
     * Lists the statuses of the products in your Merchant Center account.
     *
     * Create a request for the method "productstatuses.list".
     *
     * This request holds the parameters needed by the content server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param merchantId The ID of the managing account.
     * @return the request
     */
    public List list(java.math.BigInteger merchantId) throws java.io.IOException {
      List result = new List(merchantId);
      initialize(result);
      return result;
    }

    public class List extends ShoppingContentRequest<com.google.api.services.content.model.ProductstatusesListResponse> {

      private static final String REST_PATH = "{merchantId}/productstatuses";

      /**
       * Lists the statuses of the products in your Merchant Center account.
       *
       * Create a request for the method "productstatuses.list".
       *
       * This request holds the parameters needed by the the content server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param merchantId The ID of the managing account.
       * @since 1.13
       */
      protected List(java.math.BigInteger merchantId) {
        super(ShoppingContent.this, "GET", REST_PATH, null, com.google.api.services.content.model.ProductstatusesListResponse.class);
        this.merchantId = com.google.api.client.util.Preconditions.checkNotNull(merchantId, "Required parameter merchantId must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      /** The ID of the managing account. */
      @com.google.api.client.util.Key
      private java.math.BigInteger merchantId;

      /** The ID of the managing account.
       */
      public java.math.BigInteger getMerchantId() {
        return merchantId;
      }

      /** The ID of the managing account. */
      public List setMerchantId(java.math.BigInteger merchantId) {
        this.merchantId = merchantId;
        return this;
      }

      /** The token returned by the previous request. */
      @com.google.api.client.util.Key
      private java.lang.String pageToken;

      /** The token returned by the previous request.
       */
      public java.lang.String getPageToken() {
        return pageToken;
      }

      /** The token returned by the previous request. */
      public List setPageToken(java.lang.String pageToken) {
        this.pageToken = pageToken;
        return this;
      }

      /** The maximum number of product statuses to return in the response, used for paging. */
      @com.google.api.client.util.Key
      private java.lang.Long maxResults;

      /** The maximum number of product statuses to return in the response, used for paging.
       */
      public java.lang.Long getMaxResults() {
        return maxResults;
      }

      /** The maximum number of product statuses to return in the response, used for paging. */
      public List setMaxResults(java.lang.Long maxResults) {
        this.maxResults = maxResults;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * Builder for {@link ShoppingContent}.
   *
   * <p>
   * Implementation is not thread-safe.
   * </p>
   *
   * @since 1.3.0
   */
  public static final class Builder extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient.Builder {

    /**
     * Returns an instance of a new builder.
     *
     * @param transport HTTP transport, which should normally be:
     *        <ul>
     *        <li>Google App Engine:
     *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
     *        <li>Android: {@code newCompatibleTransport} from
     *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
     *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
     *        </li>
     *        </ul>
     * @param jsonFactory JSON factory, which may be:
     *        <ul>
     *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
     *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
     *        <li>Android Honeycomb or higher:
     *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
     *        </ul>
     * @param httpRequestInitializer HTTP request initializer or {@code null} for none
     * @since 1.7
     */
    public Builder(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
        com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      super(
          transport,
          jsonFactory,
          DEFAULT_ROOT_URL,
          DEFAULT_SERVICE_PATH,
          httpRequestInitializer,
          false);
    }

    /** Builds a new instance of {@link ShoppingContent}. */
    @Override
    public ShoppingContent build() {
      return new ShoppingContent(this);
    }

    @Override
    public Builder setRootUrl(String rootUrl) {
      return (Builder) super.setRootUrl(rootUrl);
    }

    @Override
    public Builder setServicePath(String servicePath) {
      return (Builder) super.setServicePath(servicePath);
    }

    @Override
    public Builder setHttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      return (Builder) super.setHttpRequestInitializer(httpRequestInitializer);
    }

    @Override
    public Builder setApplicationName(String applicationName) {
      return (Builder) super.setApplicationName(applicationName);
    }

    @Override
    public Builder setSuppressPatternChecks(boolean suppressPatternChecks) {
      return (Builder) super.setSuppressPatternChecks(suppressPatternChecks);
    }

    @Override
    public Builder setSuppressRequiredParameterChecks(boolean suppressRequiredParameterChecks) {
      return (Builder) super.setSuppressRequiredParameterChecks(suppressRequiredParameterChecks);
    }

    @Override
    public Builder setSuppressAllChecks(boolean suppressAllChecks) {
      return (Builder) super.setSuppressAllChecks(suppressAllChecks);
    }

    /**
     * Set the {@link ShoppingContentRequestInitializer}.
     *
     * @since 1.12
     */
    public Builder setShoppingContentRequestInitializer(
        ShoppingContentRequestInitializer shoppingcontentRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(shoppingcontentRequestInitializer);
    }

    @Override
    public Builder setGoogleClientRequestInitializer(
        com.google.api.client.googleapis.services.GoogleClientRequestInitializer googleClientRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(googleClientRequestInitializer);
    }
  }
}