/*
 * 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://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.dataform.v1beta1;

/**
 * Service definition for Dataform (v1beta1).
 *
 * <p>
 * 
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="https://cloud.google.com/dataform/docs" target="_blank">API Documentation</a>
 * </p>
 *
 * <p>
 * This service uses {@link DataformRequestInitializer} to initialize global parameters via its
 * {@link Builder}.
 * </p>
 *
 * @since 1.3
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public class Dataform 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 >= 32 ||
        (com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION == 31 &&
        com.google.api.client.googleapis.GoogleUtils.BUGFIX_VERSION >= 1))) ||
        com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION >= 2,
        "You are currently running with version %s of google-api-client. " +
        "You need at least version 1.31.1 of google-api-client to run version " +
        "2.0.0 of the Dataform API 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://dataform.googleapis.com/";

  /**
   * The default encoded mTLS root URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   *
   * @since 1.31
   */
  public static final String DEFAULT_MTLS_ROOT_URL = "https://dataform.mtls.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 = "";

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

  /**
   * 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 Dataform(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
   */
  Dataform(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 Projects collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Dataform dataform = new Dataform(...);}
   *   {@code Dataform.Projects.List request = dataform.projects().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Projects projects() {
    return new Projects();
  }

  /**
   * The "projects" collection of methods.
   */
  public class Projects {

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

    /**
     * The "locations" collection of methods.
     */
    public class Locations {

      /**
       * Gets information about a location.
       *
       * Create a request for the method "locations.get".
       *
       * This request holds the parameters needed by the dataform server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation.
       *
       * @param name Resource name for the location.
       * @return the request
       */
      public Get get(java.lang.String name) throws java.io.IOException {
        Get result = new Get(name);
        initialize(result);
        return result;
      }

      public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Location> {

        private static final String REST_PATH = "v1beta1/{+name}";

        private final java.util.regex.Pattern NAME_PATTERN =
            java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+$");

        /**
         * Gets information about a location.
         *
         * Create a request for the method "locations.get".
         *
         * This request holds the parameters needed by the the dataform 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 name Resource name for the location.
         * @since 1.13
         */
        protected Get(java.lang.String name) {
          super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Location.class);
          this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
          if (!getSuppressPatternChecks()) {
            com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                "Parameter name must conform to the pattern " +
                "^projects/[^/]+/locations/[^/]+$");
          }
        }

        @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 set$Xgafv(java.lang.String $Xgafv) {
          return (Get) super.set$Xgafv($Xgafv);
        }

        @Override
        public Get setAccessToken(java.lang.String accessToken) {
          return (Get) super.setAccessToken(accessToken);
        }

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

        @Override
        public Get setCallback(java.lang.String callback) {
          return (Get) super.setCallback(callback);
        }

        @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 setUploadType(java.lang.String uploadType) {
          return (Get) super.setUploadType(uploadType);
        }

        @Override
        public Get setUploadProtocol(java.lang.String uploadProtocol) {
          return (Get) super.setUploadProtocol(uploadProtocol);
        }

        /** Resource name for the location. */
        @com.google.api.client.util.Key
        private java.lang.String name;

        /** Resource name for the location.
         */
        public java.lang.String getName() {
          return name;
        }

        /** Resource name for the location. */
        public Get setName(java.lang.String name) {
          if (!getSuppressPatternChecks()) {
            com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                "Parameter name must conform to the pattern " +
                "^projects/[^/]+/locations/[^/]+$");
          }
          this.name = name;
          return this;
        }

        @Override
        public Get set(String parameterName, Object value) {
          return (Get) super.set(parameterName, value);
        }
      }
      /**
       * Lists information about the supported locations for this service.
       *
       * Create a request for the method "locations.list".
       *
       * This request holds the parameters needed by the dataform server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation.
       *
       * @param name The resource that owns the locations collection, if applicable.
       * @return the request
       */
      public List list(java.lang.String name) throws java.io.IOException {
        List result = new List(name);
        initialize(result);
        return result;
      }

      public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListLocationsResponse> {

        private static final String REST_PATH = "v1beta1/{+name}/locations";

        private final java.util.regex.Pattern NAME_PATTERN =
            java.util.regex.Pattern.compile("^projects/[^/]+$");

        /**
         * Lists information about the supported locations for this service.
         *
         * Create a request for the method "locations.list".
         *
         * This request holds the parameters needed by the the dataform 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 name The resource that owns the locations collection, if applicable.
         * @since 1.13
         */
        protected List(java.lang.String name) {
          super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListLocationsResponse.class);
          this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
          if (!getSuppressPatternChecks()) {
            com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                "Parameter name must conform to the pattern " +
                "^projects/[^/]+$");
          }
        }

        @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 set$Xgafv(java.lang.String $Xgafv) {
          return (List) super.set$Xgafv($Xgafv);
        }

        @Override
        public List setAccessToken(java.lang.String accessToken) {
          return (List) super.setAccessToken(accessToken);
        }

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

        @Override
        public List setCallback(java.lang.String callback) {
          return (List) super.setCallback(callback);
        }

        @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 setUploadType(java.lang.String uploadType) {
          return (List) super.setUploadType(uploadType);
        }

        @Override
        public List setUploadProtocol(java.lang.String uploadProtocol) {
          return (List) super.setUploadProtocol(uploadProtocol);
        }

        /** The resource that owns the locations collection, if applicable. */
        @com.google.api.client.util.Key
        private java.lang.String name;

        /** The resource that owns the locations collection, if applicable.
         */
        public java.lang.String getName() {
          return name;
        }

        /** The resource that owns the locations collection, if applicable. */
        public List setName(java.lang.String name) {
          if (!getSuppressPatternChecks()) {
            com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                "Parameter name must conform to the pattern " +
                "^projects/[^/]+$");
          }
          this.name = name;
          return this;
        }

        /**
         * A filter to narrow down results to a preferred subset. The filtering language accepts
         * strings like `"displayName=tokyo"`, and is documented in more detail in
         * [AIP-160](https://google.aip.dev/160).
         */
        @com.google.api.client.util.Key
        private java.lang.String filter;

        /** A filter to narrow down results to a preferred subset. The filtering language accepts strings like
       `"displayName=tokyo"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).
         */
        public java.lang.String getFilter() {
          return filter;
        }

        /**
         * A filter to narrow down results to a preferred subset. The filtering language accepts
         * strings like `"displayName=tokyo"`, and is documented in more detail in
         * [AIP-160](https://google.aip.dev/160).
         */
        public List setFilter(java.lang.String filter) {
          this.filter = filter;
          return this;
        }

        /** The maximum number of results to return. If not set, the service selects a default. */
        @com.google.api.client.util.Key
        private java.lang.Integer pageSize;

        /** The maximum number of results to return. If not set, the service selects a default.
         */
        public java.lang.Integer getPageSize() {
          return pageSize;
        }

        /** The maximum number of results to return. If not set, the service selects a default. */
        public List setPageSize(java.lang.Integer pageSize) {
          this.pageSize = pageSize;
          return this;
        }

        /**
         * A page token received from the `next_page_token` field in the response. Send that page
         * token to receive the subsequent page.
         */
        @com.google.api.client.util.Key
        private java.lang.String pageToken;

        /** A page token received from the `next_page_token` field in the response. Send that page token to
       receive the subsequent page.
         */
        public java.lang.String getPageToken() {
          return pageToken;
        }

        /**
         * A page token received from the `next_page_token` field in the response. Send that page
         * token to receive the subsequent page.
         */
        public List setPageToken(java.lang.String pageToken) {
          this.pageToken = pageToken;
          return this;
        }

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

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

      /**
       * The "repositories" collection of methods.
       */
      public class Repositories {

        /**
         * Applies a Git commit to a Repository. The Repository must not have a value for
         * `git_remote_settings.url`.
         *
         * Create a request for the method "repositories.commit".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link Commit#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @param content the {@link com.google.api.services.dataform.v1beta1.model.CommitRepositoryChangesRequest}
         * @return the request
         */
        public Commit commit(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CommitRepositoryChangesRequest content) throws java.io.IOException {
          Commit result = new Commit(name, content);
          initialize(result);
          return result;
        }

        public class Commit extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

          private static final String REST_PATH = "v1beta1/{+name}:commit";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Applies a Git commit to a Repository. The Repository must not have a value for
           * `git_remote_settings.url`.
           *
           * Create a request for the method "repositories.commit".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link Commit#execute()} method to invoke the remote operation.
           * <p> {@link
           * Commit#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
           * be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.CommitRepositoryChangesRequest}
           * @since 1.13
           */
          protected Commit(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CommitRepositoryChangesRequest content) {
            super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @Override
          public Commit set$Xgafv(java.lang.String $Xgafv) {
            return (Commit) super.set$Xgafv($Xgafv);
          }

          @Override
          public Commit setAccessToken(java.lang.String accessToken) {
            return (Commit) super.setAccessToken(accessToken);
          }

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

          @Override
          public Commit setCallback(java.lang.String callback) {
            return (Commit) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public Commit setUploadType(java.lang.String uploadType) {
            return (Commit) super.setUploadType(uploadType);
          }

          @Override
          public Commit setUploadProtocol(java.lang.String uploadProtocol) {
            return (Commit) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public Commit setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          @Override
          public Commit set(String parameterName, Object value) {
            return (Commit) super.set(parameterName, value);
          }
        }
        /**
         * Computes a Repository's Git access token status.
         *
         * Create a request for the method "repositories.computeAccessTokenStatus".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link ComputeAccessTokenStatus#execute()} method to invoke the remote
         * operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public ComputeAccessTokenStatus computeAccessTokenStatus(java.lang.String name) throws java.io.IOException {
          ComputeAccessTokenStatus result = new ComputeAccessTokenStatus(name);
          initialize(result);
          return result;
        }

        public class ComputeAccessTokenStatus extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ComputeRepositoryAccessTokenStatusResponse> {

          private static final String REST_PATH = "v1beta1/{+name}:computeAccessTokenStatus";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Computes a Repository's Git access token status.
           *
           * Create a request for the method "repositories.computeAccessTokenStatus".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link ComputeAccessTokenStatus#execute()} method to invoke the
           * remote operation. <p> {@link ComputeAccessTokenStatus#initialize(com.google.api.client.googleap
           * is.services.AbstractGoogleClientRequest)} must be called to initialize this instance
           * immediately after invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @since 1.13
           */
          protected ComputeAccessTokenStatus(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ComputeRepositoryAccessTokenStatusResponse.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 ComputeAccessTokenStatus set$Xgafv(java.lang.String $Xgafv) {
            return (ComputeAccessTokenStatus) super.set$Xgafv($Xgafv);
          }

          @Override
          public ComputeAccessTokenStatus setAccessToken(java.lang.String accessToken) {
            return (ComputeAccessTokenStatus) super.setAccessToken(accessToken);
          }

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

          @Override
          public ComputeAccessTokenStatus setCallback(java.lang.String callback) {
            return (ComputeAccessTokenStatus) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public ComputeAccessTokenStatus setUploadType(java.lang.String uploadType) {
            return (ComputeAccessTokenStatus) super.setUploadType(uploadType);
          }

          @Override
          public ComputeAccessTokenStatus setUploadProtocol(java.lang.String uploadProtocol) {
            return (ComputeAccessTokenStatus) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public ComputeAccessTokenStatus setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          @Override
          public ComputeAccessTokenStatus set(String parameterName, Object value) {
            return (ComputeAccessTokenStatus) super.set(parameterName, value);
          }
        }
        /**
         * Creates a new Repository in a given project and location.
         *
         * Create a request for the method "repositories.create".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link Create#execute()} method to invoke the remote operation.
         *
         * @param parent Required. The location in which to create the repository. Must be in the format
         *        `projects/locations`.
         * @param content the {@link com.google.api.services.dataform.v1beta1.model.Repository}
         * @return the request
         */
        public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.Repository content) throws java.io.IOException {
          Create result = new Create(parent, content);
          initialize(result);
          return result;
        }

        public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Repository> {

          private static final String REST_PATH = "v1beta1/{+parent}/repositories";

          private final java.util.regex.Pattern PARENT_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+$");

          /**
           * Creates a new Repository in a given project and location.
           *
           * Create a request for the method "repositories.create".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
           * <p> {@link
           * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
           * be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param parent Required. The location in which to create the repository. Must be in the format
         *        `projects/locations`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.Repository}
           * @since 1.13
           */
          protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.Repository content) {
            super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Repository.class);
            this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                  "Parameter parent must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+$");
            }
          }

          @Override
          public Create set$Xgafv(java.lang.String $Xgafv) {
            return (Create) super.set$Xgafv($Xgafv);
          }

          @Override
          public Create setAccessToken(java.lang.String accessToken) {
            return (Create) super.setAccessToken(accessToken);
          }

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

          @Override
          public Create setCallback(java.lang.String callback) {
            return (Create) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public Create setUploadType(java.lang.String uploadType) {
            return (Create) super.setUploadType(uploadType);
          }

          @Override
          public Create setUploadProtocol(java.lang.String uploadProtocol) {
            return (Create) super.setUploadProtocol(uploadProtocol);
          }

          /**
           * Required. The location in which to create the repository. Must be in the format
           * `projects/locations`.
           */
          @com.google.api.client.util.Key
          private java.lang.String parent;

          /** Required. The location in which to create the repository. Must be in the format
         `projects/locations`.
           */
          public java.lang.String getParent() {
            return parent;
          }

          /**
           * Required. The location in which to create the repository. Must be in the format
           * `projects/locations`.
           */
          public Create setParent(java.lang.String parent) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                  "Parameter parent must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+$");
            }
            this.parent = parent;
            return this;
          }

          /**
           * Required. The ID to use for the repository, which will become the final component of
           * the repository's resource name.
           */
          @com.google.api.client.util.Key
          private java.lang.String repositoryId;

          /** Required. The ID to use for the repository, which will become the final component of the
         repository's resource name.
           */
          public java.lang.String getRepositoryId() {
            return repositoryId;
          }

          /**
           * Required. The ID to use for the repository, which will become the final component of
           * the repository's resource name.
           */
          public Create setRepositoryId(java.lang.String repositoryId) {
            this.repositoryId = repositoryId;
            return this;
          }

          @Override
          public Create set(String parameterName, Object value) {
            return (Create) super.set(parameterName, value);
          }
        }
        /**
         * Deletes a single Repository.
         *
         * Create a request for the method "repositories.delete".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public Delete delete(java.lang.String name) throws java.io.IOException {
          Delete result = new Delete(name);
          initialize(result);
          return result;
        }

        public class Delete extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

          private static final String REST_PATH = "v1beta1/{+name}";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Deletes a single Repository.
           *
           * Create a request for the method "repositories.delete".
           *
           * This request holds the parameters needed by the the dataform 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 name Required. The repository's name.
           * @since 1.13
           */
          protected Delete(java.lang.String name) {
            super(Dataform.this, "DELETE", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Empty.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @Override
          public Delete set$Xgafv(java.lang.String $Xgafv) {
            return (Delete) super.set$Xgafv($Xgafv);
          }

          @Override
          public Delete setAccessToken(java.lang.String accessToken) {
            return (Delete) super.setAccessToken(accessToken);
          }

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

          @Override
          public Delete setCallback(java.lang.String callback) {
            return (Delete) super.setCallback(callback);
          }

          @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 setUploadType(java.lang.String uploadType) {
            return (Delete) super.setUploadType(uploadType);
          }

          @Override
          public Delete setUploadProtocol(java.lang.String uploadProtocol) {
            return (Delete) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public Delete setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          /**
           * If set to true, any child resources of this repository will also be deleted.
           * (Otherwise, the request will only succeed if the repository has no child resources.)
           */
          @com.google.api.client.util.Key
          private java.lang.Boolean force;

          /** If set to true, any child resources of this repository will also be deleted. (Otherwise, the
         request will only succeed if the repository has no child resources.)
           */
          public java.lang.Boolean getForce() {
            return force;
          }

          /**
           * If set to true, any child resources of this repository will also be deleted.
           * (Otherwise, the request will only succeed if the repository has no child resources.)
           */
          public Delete setForce(java.lang.Boolean force) {
            this.force = force;
            return this;
          }

          @Override
          public Delete set(String parameterName, Object value) {
            return (Delete) super.set(parameterName, value);
          }
        }
        /**
         * Fetches a Repository's history of commits. The Repository must not have a value for
         * `git_remote_settings.url`.
         *
         * Create a request for the method "repositories.fetchHistory".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link FetchHistory#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public FetchHistory fetchHistory(java.lang.String name) throws java.io.IOException {
          FetchHistory result = new FetchHistory(name);
          initialize(result);
          return result;
        }

        public class FetchHistory extends DataformRequest<com.google.api.services.dataform.v1beta1.model.FetchRepositoryHistoryResponse> {

          private static final String REST_PATH = "v1beta1/{+name}:fetchHistory";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Fetches a Repository's history of commits. The Repository must not have a value for
           * `git_remote_settings.url`.
           *
           * Create a request for the method "repositories.fetchHistory".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link FetchHistory#execute()} method to invoke the remote
           * operation. <p> {@link
           * FetchHistory#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
           * must be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @since 1.13
           */
          protected FetchHistory(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.FetchRepositoryHistoryResponse.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 FetchHistory set$Xgafv(java.lang.String $Xgafv) {
            return (FetchHistory) super.set$Xgafv($Xgafv);
          }

          @Override
          public FetchHistory setAccessToken(java.lang.String accessToken) {
            return (FetchHistory) super.setAccessToken(accessToken);
          }

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

          @Override
          public FetchHistory setCallback(java.lang.String callback) {
            return (FetchHistory) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public FetchHistory setUploadType(java.lang.String uploadType) {
            return (FetchHistory) super.setUploadType(uploadType);
          }

          @Override
          public FetchHistory setUploadProtocol(java.lang.String uploadProtocol) {
            return (FetchHistory) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public FetchHistory setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          /**
           * Optional. Maximum number of commits to return. The server may return fewer items than
           * requested. If unspecified, the server will pick an appropriate default.
           */
          @com.google.api.client.util.Key
          private java.lang.Integer pageSize;

          /** Optional. Maximum number of commits to return. The server may return fewer items than requested. If
         unspecified, the server will pick an appropriate default.
           */
          public java.lang.Integer getPageSize() {
            return pageSize;
          }

          /**
           * Optional. Maximum number of commits to return. The server may return fewer items than
           * requested. If unspecified, the server will pick an appropriate default.
           */
          public FetchHistory setPageSize(java.lang.Integer pageSize) {
            this.pageSize = pageSize;
            return this;
          }

          /**
           * Optional. Page token received from a previous `FetchRepositoryHistory` call. Provide
           * this to retrieve the subsequent page. When paginating, all other parameters provided to
           * `FetchRepositoryHistory` must match the call that provided the page token.
           */
          @com.google.api.client.util.Key
          private java.lang.String pageToken;

          /** Optional. Page token received from a previous `FetchRepositoryHistory` call. Provide this to
         retrieve the subsequent page. When paginating, all other parameters provided to
         `FetchRepositoryHistory` must match the call that provided the page token.
           */
          public java.lang.String getPageToken() {
            return pageToken;
          }

          /**
           * Optional. Page token received from a previous `FetchRepositoryHistory` call. Provide
           * this to retrieve the subsequent page. When paginating, all other parameters provided to
           * `FetchRepositoryHistory` must match the call that provided the page token.
           */
          public FetchHistory setPageToken(java.lang.String pageToken) {
            this.pageToken = pageToken;
            return this;
          }

          @Override
          public FetchHistory set(String parameterName, Object value) {
            return (FetchHistory) super.set(parameterName, value);
          }
        }
        /**
         * Fetches a Repository's remote branches.
         *
         * Create a request for the method "repositories.fetchRemoteBranches".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link FetchRemoteBranches#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public FetchRemoteBranches fetchRemoteBranches(java.lang.String name) throws java.io.IOException {
          FetchRemoteBranches result = new FetchRemoteBranches(name);
          initialize(result);
          return result;
        }

        public class FetchRemoteBranches extends DataformRequest<com.google.api.services.dataform.v1beta1.model.FetchRemoteBranchesResponse> {

          private static final String REST_PATH = "v1beta1/{+name}:fetchRemoteBranches";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Fetches a Repository's remote branches.
           *
           * Create a request for the method "repositories.fetchRemoteBranches".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link FetchRemoteBranches#execute()} method to invoke the remote
           * operation. <p> {@link FetchRemoteBranches#initialize(com.google.api.client.googleapis.services.
           * AbstractGoogleClientRequest)} must be called to initialize this instance immediately after
           * invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @since 1.13
           */
          protected FetchRemoteBranches(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.FetchRemoteBranchesResponse.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 FetchRemoteBranches set$Xgafv(java.lang.String $Xgafv) {
            return (FetchRemoteBranches) super.set$Xgafv($Xgafv);
          }

          @Override
          public FetchRemoteBranches setAccessToken(java.lang.String accessToken) {
            return (FetchRemoteBranches) super.setAccessToken(accessToken);
          }

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

          @Override
          public FetchRemoteBranches setCallback(java.lang.String callback) {
            return (FetchRemoteBranches) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public FetchRemoteBranches setUploadType(java.lang.String uploadType) {
            return (FetchRemoteBranches) super.setUploadType(uploadType);
          }

          @Override
          public FetchRemoteBranches setUploadProtocol(java.lang.String uploadProtocol) {
            return (FetchRemoteBranches) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public FetchRemoteBranches setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          @Override
          public FetchRemoteBranches set(String parameterName, Object value) {
            return (FetchRemoteBranches) super.set(parameterName, value);
          }
        }
        /**
         * Fetches a single Repository.
         *
         * Create a request for the method "repositories.get".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link Get#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public Get get(java.lang.String name) throws java.io.IOException {
          Get result = new Get(name);
          initialize(result);
          return result;
        }

        public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Repository> {

          private static final String REST_PATH = "v1beta1/{+name}";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Fetches a single Repository.
           *
           * Create a request for the method "repositories.get".
           *
           * This request holds the parameters needed by the the dataform 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 name Required. The repository's name.
           * @since 1.13
           */
          protected Get(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Repository.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 set$Xgafv(java.lang.String $Xgafv) {
            return (Get) super.set$Xgafv($Xgafv);
          }

          @Override
          public Get setAccessToken(java.lang.String accessToken) {
            return (Get) super.setAccessToken(accessToken);
          }

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

          @Override
          public Get setCallback(java.lang.String callback) {
            return (Get) super.setCallback(callback);
          }

          @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 setUploadType(java.lang.String uploadType) {
            return (Get) super.setUploadType(uploadType);
          }

          @Override
          public Get setUploadProtocol(java.lang.String uploadProtocol) {
            return (Get) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public Get setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          @Override
          public Get set(String parameterName, Object value) {
            return (Get) super.set(parameterName, value);
          }
        }
        /**
         * Gets the access control policy for a resource. Returns an empty policy if the resource exists and
         * does not have a policy set.
         *
         * Create a request for the method "repositories.getIamPolicy".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link GetIamPolicy#execute()} method to invoke the remote operation.
         *
         * @param resource REQUIRED: The resource for which the policy is being requested. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
         * @return the request
         */
        public GetIamPolicy getIamPolicy(java.lang.String resource) throws java.io.IOException {
          GetIamPolicy result = new GetIamPolicy(resource);
          initialize(result);
          return result;
        }

        public class GetIamPolicy extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Policy> {

          private static final String REST_PATH = "v1beta1/{+resource}:getIamPolicy";

          private final java.util.regex.Pattern RESOURCE_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Gets the access control policy for a resource. Returns an empty policy if the resource exists
           * and does not have a policy set.
           *
           * Create a request for the method "repositories.getIamPolicy".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link GetIamPolicy#execute()} method to invoke the remote
           * operation. <p> {@link
           * GetIamPolicy#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
           * must be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param resource REQUIRED: The resource for which the policy is being requested. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
           * @since 1.13
           */
          protected GetIamPolicy(java.lang.String resource) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Policy.class);
            this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 GetIamPolicy set$Xgafv(java.lang.String $Xgafv) {
            return (GetIamPolicy) super.set$Xgafv($Xgafv);
          }

          @Override
          public GetIamPolicy setAccessToken(java.lang.String accessToken) {
            return (GetIamPolicy) super.setAccessToken(accessToken);
          }

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

          @Override
          public GetIamPolicy setCallback(java.lang.String callback) {
            return (GetIamPolicy) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public GetIamPolicy setUploadType(java.lang.String uploadType) {
            return (GetIamPolicy) super.setUploadType(uploadType);
          }

          @Override
          public GetIamPolicy setUploadProtocol(java.lang.String uploadProtocol) {
            return (GetIamPolicy) super.setUploadProtocol(uploadProtocol);
          }

          /**
           * REQUIRED: The resource for which the policy is being requested. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          @com.google.api.client.util.Key
          private java.lang.String resource;

          /** REQUIRED: The resource for which the policy is being requested. See [Resource
         names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
         field.
           */
          public java.lang.String getResource() {
            return resource;
          }

          /**
           * REQUIRED: The resource for which the policy is being requested. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          public GetIamPolicy setResource(java.lang.String resource) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.resource = resource;
            return this;
          }

          /**
           * Optional. The maximum policy version that will be used to format the policy. Valid
           * values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests
           * for policies with any conditional role bindings must specify version 3. Policies with
           * no conditional role bindings may specify any valid value or leave the field unset. The
           * policy in the response might use the policy version that you specified, or it might use
           * a lower policy version. For example, if you specify version 3, but the policy has no
           * conditional role bindings, the response uses version 1. To learn which resources
           * support conditions in their IAM policies, see the [IAM
           * documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
           */
          @com.google.api.client.util.Key("options.requestedPolicyVersion")
          private java.lang.Integer optionsRequestedPolicyVersion;

          /** Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1,
         and 3. Requests specifying an invalid value will be rejected. Requests for policies with any
         conditional role bindings must specify version 3. Policies with no conditional role bindings may
         specify any valid value or leave the field unset. The policy in the response might use the policy
         version that you specified, or it might use a lower policy version. For example, if you specify
         version 3, but the policy has no conditional role bindings, the response uses version 1. To learn
         which resources support conditions in their IAM policies, see the [IAM
         documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
           */
          public java.lang.Integer getOptionsRequestedPolicyVersion() {
            return optionsRequestedPolicyVersion;
          }

          /**
           * Optional. The maximum policy version that will be used to format the policy. Valid
           * values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests
           * for policies with any conditional role bindings must specify version 3. Policies with
           * no conditional role bindings may specify any valid value or leave the field unset. The
           * policy in the response might use the policy version that you specified, or it might use
           * a lower policy version. For example, if you specify version 3, but the policy has no
           * conditional role bindings, the response uses version 1. To learn which resources
           * support conditions in their IAM policies, see the [IAM
           * documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
           */
          public GetIamPolicy setOptionsRequestedPolicyVersion(java.lang.Integer optionsRequestedPolicyVersion) {
            this.optionsRequestedPolicyVersion = optionsRequestedPolicyVersion;
            return this;
          }

          @Override
          public GetIamPolicy set(String parameterName, Object value) {
            return (GetIamPolicy) super.set(parameterName, value);
          }
        }
        /**
         * Lists Repositories in a given project and location.
         *
         * Create a request for the method "repositories.list".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link List#execute()} method to invoke the remote operation.
         *
         * @param parent Required. The location in which to list repositories. Must be in the format `projects/locations`.
         * @return the request
         */
        public List list(java.lang.String parent) throws java.io.IOException {
          List result = new List(parent);
          initialize(result);
          return result;
        }

        public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListRepositoriesResponse> {

          private static final String REST_PATH = "v1beta1/{+parent}/repositories";

          private final java.util.regex.Pattern PARENT_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+$");

          /**
           * Lists Repositories in a given project and location.
           *
           * Create a request for the method "repositories.list".
           *
           * This request holds the parameters needed by the the dataform 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 parent Required. The location in which to list repositories. Must be in the format `projects/locations`.
           * @since 1.13
           */
          protected List(java.lang.String parent) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListRepositoriesResponse.class);
            this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                  "Parameter parent must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+$");
            }
          }

          @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 set$Xgafv(java.lang.String $Xgafv) {
            return (List) super.set$Xgafv($Xgafv);
          }

          @Override
          public List setAccessToken(java.lang.String accessToken) {
            return (List) super.setAccessToken(accessToken);
          }

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

          @Override
          public List setCallback(java.lang.String callback) {
            return (List) super.setCallback(callback);
          }

          @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 setUploadType(java.lang.String uploadType) {
            return (List) super.setUploadType(uploadType);
          }

          @Override
          public List setUploadProtocol(java.lang.String uploadProtocol) {
            return (List) super.setUploadProtocol(uploadProtocol);
          }

          /**
           * Required. The location in which to list repositories. Must be in the format
           * `projects/locations`.
           */
          @com.google.api.client.util.Key
          private java.lang.String parent;

          /** Required. The location in which to list repositories. Must be in the format `projects/locations`.
           */
          public java.lang.String getParent() {
            return parent;
          }

          /**
           * Required. The location in which to list repositories. Must be in the format
           * `projects/locations`.
           */
          public List setParent(java.lang.String parent) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                  "Parameter parent must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+$");
            }
            this.parent = parent;
            return this;
          }

          /** Optional. Filter for the returned list. */
          @com.google.api.client.util.Key
          private java.lang.String filter;

          /** Optional. Filter for the returned list.
           */
          public java.lang.String getFilter() {
            return filter;
          }

          /** Optional. Filter for the returned list. */
          public List setFilter(java.lang.String filter) {
            this.filter = filter;
            return this;
          }

          /**
           * Optional. This field only supports ordering by `name`. If unspecified, the server will
           * choose the ordering. If specified, the default order is ascending for the `name` field.
           */
          @com.google.api.client.util.Key
          private java.lang.String orderBy;

          /** Optional. This field only supports ordering by `name`. If unspecified, the server will choose the
         ordering. If specified, the default order is ascending for the `name` field.
           */
          public java.lang.String getOrderBy() {
            return orderBy;
          }

          /**
           * Optional. This field only supports ordering by `name`. If unspecified, the server will
           * choose the ordering. If specified, the default order is ascending for the `name` field.
           */
          public List setOrderBy(java.lang.String orderBy) {
            this.orderBy = orderBy;
            return this;
          }

          /**
           * Optional. Maximum number of repositories to return. The server may return fewer items
           * than requested. If unspecified, the server will pick an appropriate default.
           */
          @com.google.api.client.util.Key
          private java.lang.Integer pageSize;

          /** Optional. Maximum number of repositories to return. The server may return fewer items than
         requested. If unspecified, the server will pick an appropriate default.
           */
          public java.lang.Integer getPageSize() {
            return pageSize;
          }

          /**
           * Optional. Maximum number of repositories to return. The server may return fewer items
           * than requested. If unspecified, the server will pick an appropriate default.
           */
          public List setPageSize(java.lang.Integer pageSize) {
            this.pageSize = pageSize;
            return this;
          }

          /**
           * Optional. Page token received from a previous `ListRepositories` call. Provide this to
           * retrieve the subsequent page. When paginating, all other parameters provided to
           * `ListRepositories` must match the call that provided the page token.
           */
          @com.google.api.client.util.Key
          private java.lang.String pageToken;

          /** Optional. Page token received from a previous `ListRepositories` call. Provide this to retrieve the
         subsequent page. When paginating, all other parameters provided to `ListRepositories` must match
         the call that provided the page token.
           */
          public java.lang.String getPageToken() {
            return pageToken;
          }

          /**
           * Optional. Page token received from a previous `ListRepositories` call. Provide this to
           * retrieve the subsequent page. When paginating, all other parameters provided to
           * `ListRepositories` must match the call that provided the page token.
           */
          public List setPageToken(java.lang.String pageToken) {
            this.pageToken = pageToken;
            return this;
          }

          @Override
          public List set(String parameterName, Object value) {
            return (List) super.set(parameterName, value);
          }
        }
        /**
         * Updates a single Repository.
         *
         * Create a request for the method "repositories.patch".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
         *
         * @param name Output only. The repository's name.
         * @param content the {@link com.google.api.services.dataform.v1beta1.model.Repository}
         * @return the request
         */
        public Patch patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.Repository content) throws java.io.IOException {
          Patch result = new Patch(name, content);
          initialize(result);
          return result;
        }

        public class Patch extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Repository> {

          private static final String REST_PATH = "v1beta1/{+name}";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Updates a single Repository.
           *
           * Create a request for the method "repositories.patch".
           *
           * This request holds the parameters needed by the the dataform 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 name Output only. The repository's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.Repository}
           * @since 1.13
           */
          protected Patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.Repository content) {
            super(Dataform.this, "PATCH", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Repository.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @Override
          public Patch set$Xgafv(java.lang.String $Xgafv) {
            return (Patch) super.set$Xgafv($Xgafv);
          }

          @Override
          public Patch setAccessToken(java.lang.String accessToken) {
            return (Patch) super.setAccessToken(accessToken);
          }

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

          @Override
          public Patch setCallback(java.lang.String callback) {
            return (Patch) super.setCallback(callback);
          }

          @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 setUploadType(java.lang.String uploadType) {
            return (Patch) super.setUploadType(uploadType);
          }

          @Override
          public Patch setUploadProtocol(java.lang.String uploadProtocol) {
            return (Patch) super.setUploadProtocol(uploadProtocol);
          }

          /** Output only. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Output only. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Output only. The repository's name. */
          public Patch setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          /**
           * Optional. Specifies the fields to be updated in the repository. If left unset, all
           * fields will be updated.
           */
          @com.google.api.client.util.Key
          private String updateMask;

          /** Optional. Specifies the fields to be updated in the repository. If left unset, all fields will be
         updated.
           */
          public String getUpdateMask() {
            return updateMask;
          }

          /**
           * Optional. Specifies the fields to be updated in the repository. If left unset, all
           * fields will be updated.
           */
          public Patch setUpdateMask(String updateMask) {
            this.updateMask = updateMask;
            return this;
          }

          @Override
          public Patch set(String parameterName, Object value) {
            return (Patch) super.set(parameterName, value);
          }
        }
        /**
         * Returns the contents of a given Repository directory. The Repository must not have a value for
         * `git_remote_settings.url`.
         *
         * Create a request for the method "repositories.queryDirectoryContents".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link QueryDirectoryContents#execute()} method to invoke the remote
         * operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public QueryDirectoryContents queryDirectoryContents(java.lang.String name) throws java.io.IOException {
          QueryDirectoryContents result = new QueryDirectoryContents(name);
          initialize(result);
          return result;
        }

        public class QueryDirectoryContents extends DataformRequest<com.google.api.services.dataform.v1beta1.model.QueryRepositoryDirectoryContentsResponse> {

          private static final String REST_PATH = "v1beta1/{+name}:queryDirectoryContents";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Returns the contents of a given Repository directory. The Repository must not have a value for
           * `git_remote_settings.url`.
           *
           * Create a request for the method "repositories.queryDirectoryContents".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link QueryDirectoryContents#execute()} method to invoke the
           * remote operation. <p> {@link QueryDirectoryContents#initialize(com.google.api.client.googleapis
           * .services.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
           * after invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @since 1.13
           */
          protected QueryDirectoryContents(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.QueryRepositoryDirectoryContentsResponse.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 QueryDirectoryContents set$Xgafv(java.lang.String $Xgafv) {
            return (QueryDirectoryContents) super.set$Xgafv($Xgafv);
          }

          @Override
          public QueryDirectoryContents setAccessToken(java.lang.String accessToken) {
            return (QueryDirectoryContents) super.setAccessToken(accessToken);
          }

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

          @Override
          public QueryDirectoryContents setCallback(java.lang.String callback) {
            return (QueryDirectoryContents) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public QueryDirectoryContents setUploadType(java.lang.String uploadType) {
            return (QueryDirectoryContents) super.setUploadType(uploadType);
          }

          @Override
          public QueryDirectoryContents setUploadProtocol(java.lang.String uploadProtocol) {
            return (QueryDirectoryContents) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public QueryDirectoryContents setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          /**
           * Optional. The Commit SHA for the commit to query from. If unset, the directory will be
           * queried from HEAD.
           */
          @com.google.api.client.util.Key
          private java.lang.String commitSha;

          /** Optional. The Commit SHA for the commit to query from. If unset, the directory will be queried from
         HEAD.
           */
          public java.lang.String getCommitSha() {
            return commitSha;
          }

          /**
           * Optional. The Commit SHA for the commit to query from. If unset, the directory will be
           * queried from HEAD.
           */
          public QueryDirectoryContents setCommitSha(java.lang.String commitSha) {
            this.commitSha = commitSha;
            return this;
          }

          /**
           * Optional. Maximum number of paths to return. The server may return fewer items than
           * requested. If unspecified, the server will pick an appropriate default.
           */
          @com.google.api.client.util.Key
          private java.lang.Integer pageSize;

          /** Optional. Maximum number of paths to return. The server may return fewer items than requested. If
         unspecified, the server will pick an appropriate default.
           */
          public java.lang.Integer getPageSize() {
            return pageSize;
          }

          /**
           * Optional. Maximum number of paths to return. The server may return fewer items than
           * requested. If unspecified, the server will pick an appropriate default.
           */
          public QueryDirectoryContents setPageSize(java.lang.Integer pageSize) {
            this.pageSize = pageSize;
            return this;
          }

          /**
           * Optional. Page token received from a previous `QueryRepositoryDirectoryContents` call.
           * Provide this to retrieve the subsequent page. When paginating, all other parameters
           * provided to `QueryRepositoryDirectoryContents` must match the call that provided the
           * page token.
           */
          @com.google.api.client.util.Key
          private java.lang.String pageToken;

          /** Optional. Page token received from a previous `QueryRepositoryDirectoryContents` call. Provide this
         to retrieve the subsequent page. When paginating, all other parameters provided to
         `QueryRepositoryDirectoryContents` must match the call that provided the page token.
           */
          public java.lang.String getPageToken() {
            return pageToken;
          }

          /**
           * Optional. Page token received from a previous `QueryRepositoryDirectoryContents` call.
           * Provide this to retrieve the subsequent page. When paginating, all other parameters
           * provided to `QueryRepositoryDirectoryContents` must match the call that provided the
           * page token.
           */
          public QueryDirectoryContents setPageToken(java.lang.String pageToken) {
            this.pageToken = pageToken;
            return this;
          }

          /**
           * Optional. The directory's full path including directory name, relative to root. If left
           * unset, the root is used.
           */
          @com.google.api.client.util.Key
          private java.lang.String path;

          /** Optional. The directory's full path including directory name, relative to root. If left unset, the
         root is used.
           */
          public java.lang.String getPath() {
            return path;
          }

          /**
           * Optional. The directory's full path including directory name, relative to root. If left
           * unset, the root is used.
           */
          public QueryDirectoryContents setPath(java.lang.String path) {
            this.path = path;
            return this;
          }

          @Override
          public QueryDirectoryContents set(String parameterName, Object value) {
            return (QueryDirectoryContents) super.set(parameterName, value);
          }
        }
        /**
         * Returns the contents of a file (inside a Repository). The Repository must not have a value for
         * `git_remote_settings.url`.
         *
         * Create a request for the method "repositories.readFile".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link ReadFile#execute()} method to invoke the remote operation.
         *
         * @param name Required. The repository's name.
         * @return the request
         */
        public ReadFile readFile(java.lang.String name) throws java.io.IOException {
          ReadFile result = new ReadFile(name);
          initialize(result);
          return result;
        }

        public class ReadFile extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ReadRepositoryFileResponse> {

          private static final String REST_PATH = "v1beta1/{+name}:readFile";

          private final java.util.regex.Pattern NAME_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Returns the contents of a file (inside a Repository). The Repository must not have a value for
           * `git_remote_settings.url`.
           *
           * Create a request for the method "repositories.readFile".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link ReadFile#execute()} method to invoke the remote operation.
           * <p> {@link
           * ReadFile#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
           * must be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param name Required. The repository's name.
           * @since 1.13
           */
          protected ReadFile(java.lang.String name) {
            super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ReadRepositoryFileResponse.class);
            this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @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 ReadFile set$Xgafv(java.lang.String $Xgafv) {
            return (ReadFile) super.set$Xgafv($Xgafv);
          }

          @Override
          public ReadFile setAccessToken(java.lang.String accessToken) {
            return (ReadFile) super.setAccessToken(accessToken);
          }

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

          @Override
          public ReadFile setCallback(java.lang.String callback) {
            return (ReadFile) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public ReadFile setUploadType(java.lang.String uploadType) {
            return (ReadFile) super.setUploadType(uploadType);
          }

          @Override
          public ReadFile setUploadProtocol(java.lang.String uploadProtocol) {
            return (ReadFile) super.setUploadProtocol(uploadProtocol);
          }

          /** Required. The repository's name. */
          @com.google.api.client.util.Key
          private java.lang.String name;

          /** Required. The repository's name.
           */
          public java.lang.String getName() {
            return name;
          }

          /** Required. The repository's name. */
          public ReadFile setName(java.lang.String name) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                  "Parameter name must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.name = name;
            return this;
          }

          /**
           * Optional. The commit SHA for the commit to read from. If unset, the file will be read
           * from HEAD.
           */
          @com.google.api.client.util.Key
          private java.lang.String commitSha;

          /** Optional. The commit SHA for the commit to read from. If unset, the file will be read from HEAD.
           */
          public java.lang.String getCommitSha() {
            return commitSha;
          }

          /**
           * Optional. The commit SHA for the commit to read from. If unset, the file will be read
           * from HEAD.
           */
          public ReadFile setCommitSha(java.lang.String commitSha) {
            this.commitSha = commitSha;
            return this;
          }

          /** Required. Full file path to read including filename, from repository root. */
          @com.google.api.client.util.Key
          private java.lang.String path;

          /** Required. Full file path to read including filename, from repository root.
           */
          public java.lang.String getPath() {
            return path;
          }

          /** Required. Full file path to read including filename, from repository root. */
          public ReadFile setPath(java.lang.String path) {
            this.path = path;
            return this;
          }

          @Override
          public ReadFile set(String parameterName, Object value) {
            return (ReadFile) super.set(parameterName, value);
          }
        }
        /**
         * Sets the access control policy on the specified resource. Replaces any existing policy. Can
         * return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
         *
         * Create a request for the method "repositories.setIamPolicy".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link SetIamPolicy#execute()} method to invoke the remote operation.
         *
         * @param resource REQUIRED: The resource for which the policy is being specified. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
         * @param content the {@link com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest}
         * @return the request
         */
        public SetIamPolicy setIamPolicy(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest content) throws java.io.IOException {
          SetIamPolicy result = new SetIamPolicy(resource, content);
          initialize(result);
          return result;
        }

        public class SetIamPolicy extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Policy> {

          private static final String REST_PATH = "v1beta1/{+resource}:setIamPolicy";

          private final java.util.regex.Pattern RESOURCE_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Sets the access control policy on the specified resource. Replaces any existing policy. Can
           * return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
           *
           * Create a request for the method "repositories.setIamPolicy".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link SetIamPolicy#execute()} method to invoke the remote
           * operation. <p> {@link
           * SetIamPolicy#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
           * must be called to initialize this instance immediately after invoking the constructor. </p>
           *
           * @param resource REQUIRED: The resource for which the policy is being specified. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest}
           * @since 1.13
           */
          protected SetIamPolicy(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest content) {
            super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Policy.class);
            this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @Override
          public SetIamPolicy set$Xgafv(java.lang.String $Xgafv) {
            return (SetIamPolicy) super.set$Xgafv($Xgafv);
          }

          @Override
          public SetIamPolicy setAccessToken(java.lang.String accessToken) {
            return (SetIamPolicy) super.setAccessToken(accessToken);
          }

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

          @Override
          public SetIamPolicy setCallback(java.lang.String callback) {
            return (SetIamPolicy) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public SetIamPolicy setUploadType(java.lang.String uploadType) {
            return (SetIamPolicy) super.setUploadType(uploadType);
          }

          @Override
          public SetIamPolicy setUploadProtocol(java.lang.String uploadProtocol) {
            return (SetIamPolicy) super.setUploadProtocol(uploadProtocol);
          }

          /**
           * REQUIRED: The resource for which the policy is being specified. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          @com.google.api.client.util.Key
          private java.lang.String resource;

          /** REQUIRED: The resource for which the policy is being specified. See [Resource
         names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
         field.
           */
          public java.lang.String getResource() {
            return resource;
          }

          /**
           * REQUIRED: The resource for which the policy is being specified. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          public SetIamPolicy setResource(java.lang.String resource) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.resource = resource;
            return this;
          }

          @Override
          public SetIamPolicy set(String parameterName, Object value) {
            return (SetIamPolicy) super.set(parameterName, value);
          }
        }
        /**
         * Returns permissions that a caller has on the specified resource. If the resource does not exist,
         * this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is
         * designed to be used for building permission-aware UIs and command-line tools, not for
         * authorization checking. This operation may "fail open" without warning.
         *
         * Create a request for the method "repositories.testIamPermissions".
         *
         * This request holds the parameters needed by the dataform server.  After setting any optional
         * parameters, call the {@link TestIamPermissions#execute()} method to invoke the remote operation.
         *
         * @param resource REQUIRED: The resource for which the policy detail is being requested. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
         * @param content the {@link com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest}
         * @return the request
         */
        public TestIamPermissions testIamPermissions(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest content) throws java.io.IOException {
          TestIamPermissions result = new TestIamPermissions(resource, content);
          initialize(result);
          return result;
        }

        public class TestIamPermissions extends DataformRequest<com.google.api.services.dataform.v1beta1.model.TestIamPermissionsResponse> {

          private static final String REST_PATH = "v1beta1/{+resource}:testIamPermissions";

          private final java.util.regex.Pattern RESOURCE_PATTERN =
              java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

          /**
           * Returns permissions that a caller has on the specified resource. If the resource does not
           * exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This
           * operation is designed to be used for building permission-aware UIs and command-line tools, not
           * for authorization checking. This operation may "fail open" without warning.
           *
           * Create a request for the method "repositories.testIamPermissions".
           *
           * This request holds the parameters needed by the the dataform server.  After setting any
           * optional parameters, call the {@link TestIamPermissions#execute()} method to invoke the remote
           * operation. <p> {@link TestIamPermissions#initialize(com.google.api.client.googleapis.services.A
           * bstractGoogleClientRequest)} must be called to initialize this instance immediately after
           * invoking the constructor. </p>
           *
           * @param resource REQUIRED: The resource for which the policy detail is being requested. See [Resource
         *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
         *        this field.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest}
           * @since 1.13
           */
          protected TestIamPermissions(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest content) {
            super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsResponse.class);
            this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
          }

          @Override
          public TestIamPermissions set$Xgafv(java.lang.String $Xgafv) {
            return (TestIamPermissions) super.set$Xgafv($Xgafv);
          }

          @Override
          public TestIamPermissions setAccessToken(java.lang.String accessToken) {
            return (TestIamPermissions) super.setAccessToken(accessToken);
          }

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

          @Override
          public TestIamPermissions setCallback(java.lang.String callback) {
            return (TestIamPermissions) super.setCallback(callback);
          }

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

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

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

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

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

          @Override
          public TestIamPermissions setUploadType(java.lang.String uploadType) {
            return (TestIamPermissions) super.setUploadType(uploadType);
          }

          @Override
          public TestIamPermissions setUploadProtocol(java.lang.String uploadProtocol) {
            return (TestIamPermissions) super.setUploadProtocol(uploadProtocol);
          }

          /**
           * REQUIRED: The resource for which the policy detail is being requested. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          @com.google.api.client.util.Key
          private java.lang.String resource;

          /** REQUIRED: The resource for which the policy detail is being requested. See [Resource
         names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
         field.
           */
          public java.lang.String getResource() {
            return resource;
          }

          /**
           * REQUIRED: The resource for which the policy detail is being requested. See [Resource
           * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
           * for this field.
           */
          public TestIamPermissions setResource(java.lang.String resource) {
            if (!getSuppressPatternChecks()) {
              com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                  "Parameter resource must conform to the pattern " +
                  "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
            }
            this.resource = resource;
            return this;
          }

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

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

        /**
         * The "compilationResults" collection of methods.
         */
        public class CompilationResults {

          /**
           * Creates a new CompilationResult in a given project and location.
           *
           * Create a request for the method "compilationResults.create".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Create#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to create the compilation result. Must be in the format
           *        `projects/locations/repositories`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.CompilationResult}
           * @return the request
           */
          public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.CompilationResult content) throws java.io.IOException {
            Create result = new Create(parent, content);
            initialize(result);
            return result;
          }

          public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.CompilationResult> {

            private static final String REST_PATH = "v1beta1/{+parent}/compilationResults";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Creates a new CompilationResult in a given project and location.
             *
             * Create a request for the method "compilationResults.create".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
             * <p> {@link
             * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param parent Required. The repository in which to create the compilation result. Must be in the format
           *        `projects/locations/repositories`.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.CompilationResult}
             * @since 1.13
             */
            protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.CompilationResult content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.CompilationResult.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @Override
            public Create set$Xgafv(java.lang.String $Xgafv) {
              return (Create) super.set$Xgafv($Xgafv);
            }

            @Override
            public Create setAccessToken(java.lang.String accessToken) {
              return (Create) super.setAccessToken(accessToken);
            }

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

            @Override
            public Create setCallback(java.lang.String callback) {
              return (Create) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Create setUploadType(java.lang.String uploadType) {
              return (Create) super.setUploadType(uploadType);
            }

            @Override
            public Create setUploadProtocol(java.lang.String uploadProtocol) {
              return (Create) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to create the compilation result. Must be in the
             * format `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to create the compilation result. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to create the compilation result. Must be in the
             * format `projects/locations/repositories`.
             */
            public Create setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            @Override
            public Create set(String parameterName, Object value) {
              return (Create) super.set(parameterName, value);
            }
          }
          /**
           * Fetches a single CompilationResult.
           *
           * Create a request for the method "compilationResults.get".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Get#execute()} method to invoke the remote operation.
           *
           * @param name Required. The compilation result's name.
           * @return the request
           */
          public Get get(java.lang.String name) throws java.io.IOException {
            Get result = new Get(name);
            initialize(result);
            return result;
          }

          public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.CompilationResult> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");

            /**
             * Fetches a single CompilationResult.
             *
             * Create a request for the method "compilationResults.get".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The compilation result's name.
             * @since 1.13
             */
            protected Get(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.CompilationResult.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (Get) super.set$Xgafv($Xgafv);
            }

            @Override
            public Get setAccessToken(java.lang.String accessToken) {
              return (Get) super.setAccessToken(accessToken);
            }

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

            @Override
            public Get setCallback(java.lang.String callback) {
              return (Get) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Get) super.setUploadType(uploadType);
            }

            @Override
            public Get setUploadProtocol(java.lang.String uploadProtocol) {
              return (Get) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The compilation result's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The compilation result's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The compilation result's name. */
            public Get setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Get set(String parameterName, Object value) {
              return (Get) super.set(parameterName, value);
            }
          }
          /**
           * Lists CompilationResults in a given Repository.
           *
           * Create a request for the method "compilationResults.list".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link List#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to list compilation results. Must be in the format
           *        `projects/locations/repositories`.
           * @return the request
           */
          public List list(java.lang.String parent) throws java.io.IOException {
            List result = new List(parent);
            initialize(result);
            return result;
          }

          public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListCompilationResultsResponse> {

            private static final String REST_PATH = "v1beta1/{+parent}/compilationResults";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Lists CompilationResults in a given Repository.
             *
             * Create a request for the method "compilationResults.list".
             *
             * This request holds the parameters needed by the the dataform 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 parent Required. The repository in which to list compilation results. Must be in the format
           *        `projects/locations/repositories`.
             * @since 1.13
             */
            protected List(java.lang.String parent) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListCompilationResultsResponse.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (List) super.set$Xgafv($Xgafv);
            }

            @Override
            public List setAccessToken(java.lang.String accessToken) {
              return (List) super.setAccessToken(accessToken);
            }

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

            @Override
            public List setCallback(java.lang.String callback) {
              return (List) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (List) super.setUploadType(uploadType);
            }

            @Override
            public List setUploadProtocol(java.lang.String uploadProtocol) {
              return (List) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to list compilation results. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to list compilation results. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to list compilation results. Must be in the format
             * `projects/locations/repositories`.
             */
            public List setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Optional. Maximum number of compilation results to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of compilation results to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of compilation results to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            public List setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `ListCompilationResults` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListCompilationResults` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `ListCompilationResults` call. Provide this to
           retrieve the subsequent page. When paginating, all other parameters provided to
           `ListCompilationResults` must match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `ListCompilationResults` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListCompilationResults` must match the call that provided the page token.
             */
            public List setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            @Override
            public List set(String parameterName, Object value) {
              return (List) super.set(parameterName, value);
            }
          }
          /**
           * Returns CompilationResultActions in a given CompilationResult.
           *
           * Create a request for the method "compilationResults.query".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Query#execute()} method to invoke the remote operation.
           *
           * @param name Required. The compilation result's name.
           * @return the request
           */
          public Query query(java.lang.String name) throws java.io.IOException {
            Query result = new Query(name);
            initialize(result);
            return result;
          }

          public class Query extends DataformRequest<com.google.api.services.dataform.v1beta1.model.QueryCompilationResultActionsResponse> {

            private static final String REST_PATH = "v1beta1/{+name}:query";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");

            /**
             * Returns CompilationResultActions in a given CompilationResult.
             *
             * Create a request for the method "compilationResults.query".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Query#execute()} method to invoke the remote operation.
             * <p> {@link
             * Query#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The compilation result's name.
             * @since 1.13
             */
            protected Query(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.QueryCompilationResultActionsResponse.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");
              }
            }

            @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 Query set$Xgafv(java.lang.String $Xgafv) {
              return (Query) super.set$Xgafv($Xgafv);
            }

            @Override
            public Query setAccessToken(java.lang.String accessToken) {
              return (Query) super.setAccessToken(accessToken);
            }

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

            @Override
            public Query setCallback(java.lang.String callback) {
              return (Query) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Query setUploadType(java.lang.String uploadType) {
              return (Query) super.setUploadType(uploadType);
            }

            @Override
            public Query setUploadProtocol(java.lang.String uploadProtocol) {
              return (Query) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The compilation result's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The compilation result's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The compilation result's name. */
            public Query setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/compilationResults/[^/]+$");
              }
              this.name = name;
              return this;
            }

            /**
             * Optional. Optional filter for the returned list. Filtering is only currently
             * supported on the `file_path` field.
             */
            @com.google.api.client.util.Key
            private java.lang.String filter;

            /** Optional. Optional filter for the returned list. Filtering is only currently supported on the
           `file_path` field.
             */
            public java.lang.String getFilter() {
              return filter;
            }

            /**
             * Optional. Optional filter for the returned list. Filtering is only currently
             * supported on the `file_path` field.
             */
            public Query setFilter(java.lang.String filter) {
              this.filter = filter;
              return this;
            }

            /**
             * Optional. Maximum number of compilation results to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of compilation results to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of compilation results to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            public Query setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `QueryCompilationResultActions` call.
             * Provide this to retrieve the subsequent page. When paginating, all other parameters
             * provided to `QueryCompilationResultActions` must match the call that provided the
             * page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `QueryCompilationResultActions` call. Provide this to
           retrieve the subsequent page. When paginating, all other parameters provided to
           `QueryCompilationResultActions` must match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `QueryCompilationResultActions` call.
             * Provide this to retrieve the subsequent page. When paginating, all other parameters
             * provided to `QueryCompilationResultActions` must match the call that provided the
             * page token.
             */
            public Query setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

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

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

        /**
         * The "releaseConfigs" collection of methods.
         */
        public class ReleaseConfigs {

          /**
           * Creates a new ReleaseConfig in a given Repository.
           *
           * Create a request for the method "releaseConfigs.create".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Create#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to create the release config. Must be in the format
           *        `projects/locations/repositories`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.ReleaseConfig}
           * @return the request
           */
          public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.ReleaseConfig content) throws java.io.IOException {
            Create result = new Create(parent, content);
            initialize(result);
            return result;
          }

          public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ReleaseConfig> {

            private static final String REST_PATH = "v1beta1/{+parent}/releaseConfigs";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Creates a new ReleaseConfig in a given Repository.
             *
             * Create a request for the method "releaseConfigs.create".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
             * <p> {@link
             * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param parent Required. The repository in which to create the release config. Must be in the format
           *        `projects/locations/repositories`.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.ReleaseConfig}
             * @since 1.13
             */
            protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.ReleaseConfig content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.ReleaseConfig.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @Override
            public Create set$Xgafv(java.lang.String $Xgafv) {
              return (Create) super.set$Xgafv($Xgafv);
            }

            @Override
            public Create setAccessToken(java.lang.String accessToken) {
              return (Create) super.setAccessToken(accessToken);
            }

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

            @Override
            public Create setCallback(java.lang.String callback) {
              return (Create) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Create setUploadType(java.lang.String uploadType) {
              return (Create) super.setUploadType(uploadType);
            }

            @Override
            public Create setUploadProtocol(java.lang.String uploadProtocol) {
              return (Create) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to create the release config. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to create the release config. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to create the release config. Must be in the format
             * `projects/locations/repositories`.
             */
            public Create setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Required. The ID to use for the release config, which will become the final component
             * of the release config's resource name.
             */
            @com.google.api.client.util.Key
            private java.lang.String releaseConfigId;

            /** Required. The ID to use for the release config, which will become the final component of the
           release config's resource name.
             */
            public java.lang.String getReleaseConfigId() {
              return releaseConfigId;
            }

            /**
             * Required. The ID to use for the release config, which will become the final component
             * of the release config's resource name.
             */
            public Create setReleaseConfigId(java.lang.String releaseConfigId) {
              this.releaseConfigId = releaseConfigId;
              return this;
            }

            @Override
            public Create set(String parameterName, Object value) {
              return (Create) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a single ReleaseConfig.
           *
           * Create a request for the method "releaseConfigs.delete".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
           *
           * @param name Required. The release config's name.
           * @return the request
           */
          public Delete delete(java.lang.String name) throws java.io.IOException {
            Delete result = new Delete(name);
            initialize(result);
            return result;
          }

          public class Delete extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");

            /**
             * Deletes a single ReleaseConfig.
             *
             * Create a request for the method "releaseConfigs.delete".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The release config's name.
             * @since 1.13
             */
            protected Delete(java.lang.String name) {
              super(Dataform.this, "DELETE", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
            }

            @Override
            public Delete set$Xgafv(java.lang.String $Xgafv) {
              return (Delete) super.set$Xgafv($Xgafv);
            }

            @Override
            public Delete setAccessToken(java.lang.String accessToken) {
              return (Delete) super.setAccessToken(accessToken);
            }

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

            @Override
            public Delete setCallback(java.lang.String callback) {
              return (Delete) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Delete) super.setUploadType(uploadType);
            }

            @Override
            public Delete setUploadProtocol(java.lang.String uploadProtocol) {
              return (Delete) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The release config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The release config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The release config's name. */
            public Delete setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Delete set(String parameterName, Object value) {
              return (Delete) super.set(parameterName, value);
            }
          }
          /**
           * Fetches a single ReleaseConfig.
           *
           * Create a request for the method "releaseConfigs.get".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Get#execute()} method to invoke the remote operation.
           *
           * @param name Required. The release config's name.
           * @return the request
           */
          public Get get(java.lang.String name) throws java.io.IOException {
            Get result = new Get(name);
            initialize(result);
            return result;
          }

          public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ReleaseConfig> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");

            /**
             * Fetches a single ReleaseConfig.
             *
             * Create a request for the method "releaseConfigs.get".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The release config's name.
             * @since 1.13
             */
            protected Get(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ReleaseConfig.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (Get) super.set$Xgafv($Xgafv);
            }

            @Override
            public Get setAccessToken(java.lang.String accessToken) {
              return (Get) super.setAccessToken(accessToken);
            }

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

            @Override
            public Get setCallback(java.lang.String callback) {
              return (Get) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Get) super.setUploadType(uploadType);
            }

            @Override
            public Get setUploadProtocol(java.lang.String uploadProtocol) {
              return (Get) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The release config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The release config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The release config's name. */
            public Get setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Get set(String parameterName, Object value) {
              return (Get) super.set(parameterName, value);
            }
          }
          /**
           * Lists ReleaseConfigs in a given Repository.
           *
           * Create a request for the method "releaseConfigs.list".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link List#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to list release configs. Must be in the format
           *        `projects/locations/repositories`.
           * @return the request
           */
          public List list(java.lang.String parent) throws java.io.IOException {
            List result = new List(parent);
            initialize(result);
            return result;
          }

          public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListReleaseConfigsResponse> {

            private static final String REST_PATH = "v1beta1/{+parent}/releaseConfigs";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Lists ReleaseConfigs in a given Repository.
             *
             * Create a request for the method "releaseConfigs.list".
             *
             * This request holds the parameters needed by the the dataform 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 parent Required. The repository in which to list release configs. Must be in the format
           *        `projects/locations/repositories`.
             * @since 1.13
             */
            protected List(java.lang.String parent) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListReleaseConfigsResponse.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (List) super.set$Xgafv($Xgafv);
            }

            @Override
            public List setAccessToken(java.lang.String accessToken) {
              return (List) super.setAccessToken(accessToken);
            }

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

            @Override
            public List setCallback(java.lang.String callback) {
              return (List) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (List) super.setUploadType(uploadType);
            }

            @Override
            public List setUploadProtocol(java.lang.String uploadProtocol) {
              return (List) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to list release configs. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to list release configs. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to list release configs. Must be in the format
             * `projects/locations/repositories`.
             */
            public List setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Optional. Maximum number of release configs to return. The server may return fewer
             * items than requested. If unspecified, the server will pick an appropriate default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of release configs to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of release configs to return. The server may return fewer
             * items than requested. If unspecified, the server will pick an appropriate default.
             */
            public List setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `ListReleaseConfigs` call. Provide this
             * to retrieve the subsequent page. When paginating, all other parameters provided to
             * `ListReleaseConfigs` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `ListReleaseConfigs` call. Provide this to retrieve
           the subsequent page. When paginating, all other parameters provided to `ListReleaseConfigs` must
           match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `ListReleaseConfigs` call. Provide this
             * to retrieve the subsequent page. When paginating, all other parameters provided to
             * `ListReleaseConfigs` must match the call that provided the page token.
             */
            public List setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            @Override
            public List set(String parameterName, Object value) {
              return (List) super.set(parameterName, value);
            }
          }
          /**
           * Updates a single ReleaseConfig.
           *
           * Create a request for the method "releaseConfigs.patch".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
           *
           * @param name Output only. The release config's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.ReleaseConfig}
           * @return the request
           */
          public Patch patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.ReleaseConfig content) throws java.io.IOException {
            Patch result = new Patch(name, content);
            initialize(result);
            return result;
          }

          public class Patch extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ReleaseConfig> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");

            /**
             * Updates a single ReleaseConfig.
             *
             * Create a request for the method "releaseConfigs.patch".
             *
             * This request holds the parameters needed by the the dataform 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 name Output only. The release config's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.ReleaseConfig}
             * @since 1.13
             */
            protected Patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.ReleaseConfig content) {
              super(Dataform.this, "PATCH", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.ReleaseConfig.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
            }

            @Override
            public Patch set$Xgafv(java.lang.String $Xgafv) {
              return (Patch) super.set$Xgafv($Xgafv);
            }

            @Override
            public Patch setAccessToken(java.lang.String accessToken) {
              return (Patch) super.setAccessToken(accessToken);
            }

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

            @Override
            public Patch setCallback(java.lang.String callback) {
              return (Patch) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Patch) super.setUploadType(uploadType);
            }

            @Override
            public Patch setUploadProtocol(java.lang.String uploadProtocol) {
              return (Patch) super.setUploadProtocol(uploadProtocol);
            }

            /** Output only. The release config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Output only. The release config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Output only. The release config's name. */
            public Patch setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/releaseConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            /**
             * Optional. Specifies the fields to be updated in the release config. If left unset,
             * all fields will be updated.
             */
            @com.google.api.client.util.Key
            private String updateMask;

            /** Optional. Specifies the fields to be updated in the release config. If left unset, all fields will
           be updated.
             */
            public String getUpdateMask() {
              return updateMask;
            }

            /**
             * Optional. Specifies the fields to be updated in the release config. If left unset,
             * all fields will be updated.
             */
            public Patch setUpdateMask(String updateMask) {
              this.updateMask = updateMask;
              return this;
            }

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

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

        /**
         * The "workflowConfigs" collection of methods.
         */
        public class WorkflowConfigs {

          /**
           * Creates a new WorkflowConfig in a given Repository.
           *
           * Create a request for the method "workflowConfigs.create".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Create#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to create the workflow config. Must be in the format
           *        `projects/locations/repositories`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowConfig}
           * @return the request
           */
          public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.WorkflowConfig content) throws java.io.IOException {
            Create result = new Create(parent, content);
            initialize(result);
            return result;
          }

          public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WorkflowConfig> {

            private static final String REST_PATH = "v1beta1/{+parent}/workflowConfigs";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Creates a new WorkflowConfig in a given Repository.
             *
             * Create a request for the method "workflowConfigs.create".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
             * <p> {@link
             * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param parent Required. The repository in which to create the workflow config. Must be in the format
           *        `projects/locations/repositories`.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowConfig}
             * @since 1.13
             */
            protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.WorkflowConfig content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.WorkflowConfig.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @Override
            public Create set$Xgafv(java.lang.String $Xgafv) {
              return (Create) super.set$Xgafv($Xgafv);
            }

            @Override
            public Create setAccessToken(java.lang.String accessToken) {
              return (Create) super.setAccessToken(accessToken);
            }

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

            @Override
            public Create setCallback(java.lang.String callback) {
              return (Create) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Create setUploadType(java.lang.String uploadType) {
              return (Create) super.setUploadType(uploadType);
            }

            @Override
            public Create setUploadProtocol(java.lang.String uploadProtocol) {
              return (Create) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to create the workflow config. Must be in the
             * format `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to create the workflow config. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to create the workflow config. Must be in the
             * format `projects/locations/repositories`.
             */
            public Create setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Required. The ID to use for the workflow config, which will become the final
             * component of the workflow config's resource name.
             */
            @com.google.api.client.util.Key
            private java.lang.String workflowConfigId;

            /** Required. The ID to use for the workflow config, which will become the final component of the
           workflow config's resource name.
             */
            public java.lang.String getWorkflowConfigId() {
              return workflowConfigId;
            }

            /**
             * Required. The ID to use for the workflow config, which will become the final
             * component of the workflow config's resource name.
             */
            public Create setWorkflowConfigId(java.lang.String workflowConfigId) {
              this.workflowConfigId = workflowConfigId;
              return this;
            }

            @Override
            public Create set(String parameterName, Object value) {
              return (Create) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a single WorkflowConfig.
           *
           * Create a request for the method "workflowConfigs.delete".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow config's name.
           * @return the request
           */
          public Delete delete(java.lang.String name) throws java.io.IOException {
            Delete result = new Delete(name);
            initialize(result);
            return result;
          }

          public class Delete extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");

            /**
             * Deletes a single WorkflowConfig.
             *
             * Create a request for the method "workflowConfigs.delete".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workflow config's name.
             * @since 1.13
             */
            protected Delete(java.lang.String name) {
              super(Dataform.this, "DELETE", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
            }

            @Override
            public Delete set$Xgafv(java.lang.String $Xgafv) {
              return (Delete) super.set$Xgafv($Xgafv);
            }

            @Override
            public Delete setAccessToken(java.lang.String accessToken) {
              return (Delete) super.setAccessToken(accessToken);
            }

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

            @Override
            public Delete setCallback(java.lang.String callback) {
              return (Delete) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Delete) super.setUploadType(uploadType);
            }

            @Override
            public Delete setUploadProtocol(java.lang.String uploadProtocol) {
              return (Delete) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow config's name. */
            public Delete setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Delete set(String parameterName, Object value) {
              return (Delete) super.set(parameterName, value);
            }
          }
          /**
           * Fetches a single WorkflowConfig.
           *
           * Create a request for the method "workflowConfigs.get".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Get#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow config's name.
           * @return the request
           */
          public Get get(java.lang.String name) throws java.io.IOException {
            Get result = new Get(name);
            initialize(result);
            return result;
          }

          public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WorkflowConfig> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");

            /**
             * Fetches a single WorkflowConfig.
             *
             * Create a request for the method "workflowConfigs.get".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workflow config's name.
             * @since 1.13
             */
            protected Get(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.WorkflowConfig.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (Get) super.set$Xgafv($Xgafv);
            }

            @Override
            public Get setAccessToken(java.lang.String accessToken) {
              return (Get) super.setAccessToken(accessToken);
            }

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

            @Override
            public Get setCallback(java.lang.String callback) {
              return (Get) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Get) super.setUploadType(uploadType);
            }

            @Override
            public Get setUploadProtocol(java.lang.String uploadProtocol) {
              return (Get) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow config's name. */
            public Get setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Get set(String parameterName, Object value) {
              return (Get) super.set(parameterName, value);
            }
          }
          /**
           * Lists WorkflowConfigs in a given Repository.
           *
           * Create a request for the method "workflowConfigs.list".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link List#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to list workflow configs. Must be in the format
           *        `projects/locations/repositories`.
           * @return the request
           */
          public List list(java.lang.String parent) throws java.io.IOException {
            List result = new List(parent);
            initialize(result);
            return result;
          }

          public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListWorkflowConfigsResponse> {

            private static final String REST_PATH = "v1beta1/{+parent}/workflowConfigs";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Lists WorkflowConfigs in a given Repository.
             *
             * Create a request for the method "workflowConfigs.list".
             *
             * This request holds the parameters needed by the the dataform 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 parent Required. The repository in which to list workflow configs. Must be in the format
           *        `projects/locations/repositories`.
             * @since 1.13
             */
            protected List(java.lang.String parent) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListWorkflowConfigsResponse.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (List) super.set$Xgafv($Xgafv);
            }

            @Override
            public List setAccessToken(java.lang.String accessToken) {
              return (List) super.setAccessToken(accessToken);
            }

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

            @Override
            public List setCallback(java.lang.String callback) {
              return (List) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (List) super.setUploadType(uploadType);
            }

            @Override
            public List setUploadProtocol(java.lang.String uploadProtocol) {
              return (List) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to list workflow configs. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to list workflow configs. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to list workflow configs. Must be in the format
             * `projects/locations/repositories`.
             */
            public List setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Optional. Maximum number of workflow configs to return. The server may return fewer
             * items than requested. If unspecified, the server will pick an appropriate default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of workflow configs to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of workflow configs to return. The server may return fewer
             * items than requested. If unspecified, the server will pick an appropriate default.
             */
            public List setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `ListWorkflowConfigs` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListWorkflowConfigs` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `ListWorkflowConfigs` call. Provide this to retrieve
           the subsequent page. When paginating, all other parameters provided to `ListWorkflowConfigs` must
           match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `ListWorkflowConfigs` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListWorkflowConfigs` must match the call that provided the page token.
             */
            public List setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            @Override
            public List set(String parameterName, Object value) {
              return (List) super.set(parameterName, value);
            }
          }
          /**
           * Updates a single WorkflowConfig.
           *
           * Create a request for the method "workflowConfigs.patch".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Patch#execute()} method to invoke the remote operation.
           *
           * @param name Output only. The workflow config's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowConfig}
           * @return the request
           */
          public Patch patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.WorkflowConfig content) throws java.io.IOException {
            Patch result = new Patch(name, content);
            initialize(result);
            return result;
          }

          public class Patch extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WorkflowConfig> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");

            /**
             * Updates a single WorkflowConfig.
             *
             * Create a request for the method "workflowConfigs.patch".
             *
             * This request holds the parameters needed by the the dataform 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 name Output only. The workflow config's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowConfig}
             * @since 1.13
             */
            protected Patch(java.lang.String name, com.google.api.services.dataform.v1beta1.model.WorkflowConfig content) {
              super(Dataform.this, "PATCH", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.WorkflowConfig.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
            }

            @Override
            public Patch set$Xgafv(java.lang.String $Xgafv) {
              return (Patch) super.set$Xgafv($Xgafv);
            }

            @Override
            public Patch setAccessToken(java.lang.String accessToken) {
              return (Patch) super.setAccessToken(accessToken);
            }

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

            @Override
            public Patch setCallback(java.lang.String callback) {
              return (Patch) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Patch) super.setUploadType(uploadType);
            }

            @Override
            public Patch setUploadProtocol(java.lang.String uploadProtocol) {
              return (Patch) super.setUploadProtocol(uploadProtocol);
            }

            /** Output only. The workflow config's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Output only. The workflow config's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Output only. The workflow config's name. */
            public Patch setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowConfigs/[^/]+$");
              }
              this.name = name;
              return this;
            }

            /**
             * Optional. Specifies the fields to be updated in the workflow config. If left unset,
             * all fields will be updated.
             */
            @com.google.api.client.util.Key
            private String updateMask;

            /** Optional. Specifies the fields to be updated in the workflow config. If left unset, all fields will
           be updated.
             */
            public String getUpdateMask() {
              return updateMask;
            }

            /**
             * Optional. Specifies the fields to be updated in the workflow config. If left unset,
             * all fields will be updated.
             */
            public Patch setUpdateMask(String updateMask) {
              this.updateMask = updateMask;
              return this;
            }

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

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

        /**
         * The "workflowInvocations" collection of methods.
         */
        public class WorkflowInvocations {

          /**
           * Requests cancellation of a running WorkflowInvocation.
           *
           * Create a request for the method "workflowInvocations.cancel".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Cancel#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow invocation resource's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.CancelWorkflowInvocationRequest}
           * @return the request
           */
          public Cancel cancel(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CancelWorkflowInvocationRequest content) throws java.io.IOException {
            Cancel result = new Cancel(name, content);
            initialize(result);
            return result;
          }

          public class Cancel extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}:cancel";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");

            /**
             * Requests cancellation of a running WorkflowInvocation.
             *
             * Create a request for the method "workflowInvocations.cancel".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Cancel#execute()} method to invoke the remote operation.
             * <p> {@link
             * Cancel#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workflow invocation resource's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.CancelWorkflowInvocationRequest}
             * @since 1.13
             */
            protected Cancel(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CancelWorkflowInvocationRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
            }

            @Override
            public Cancel set$Xgafv(java.lang.String $Xgafv) {
              return (Cancel) super.set$Xgafv($Xgafv);
            }

            @Override
            public Cancel setAccessToken(java.lang.String accessToken) {
              return (Cancel) super.setAccessToken(accessToken);
            }

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

            @Override
            public Cancel setCallback(java.lang.String callback) {
              return (Cancel) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Cancel setUploadType(java.lang.String uploadType) {
              return (Cancel) super.setUploadType(uploadType);
            }

            @Override
            public Cancel setUploadProtocol(java.lang.String uploadProtocol) {
              return (Cancel) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow invocation resource's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow invocation resource's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow invocation resource's name. */
            public Cancel setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Cancel set(String parameterName, Object value) {
              return (Cancel) super.set(parameterName, value);
            }
          }
          /**
           * Creates a new WorkflowInvocation in a given Repository.
           *
           * Create a request for the method "workflowInvocations.create".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Create#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to create the workflow invocation. Must be in the format
           *        `projects/locations/repositories`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowInvocation}
           * @return the request
           */
          public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.WorkflowInvocation content) throws java.io.IOException {
            Create result = new Create(parent, content);
            initialize(result);
            return result;
          }

          public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WorkflowInvocation> {

            private static final String REST_PATH = "v1beta1/{+parent}/workflowInvocations";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Creates a new WorkflowInvocation in a given Repository.
             *
             * Create a request for the method "workflowInvocations.create".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
             * <p> {@link
             * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param parent Required. The repository in which to create the workflow invocation. Must be in the format
           *        `projects/locations/repositories`.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.WorkflowInvocation}
             * @since 1.13
             */
            protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.WorkflowInvocation content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.WorkflowInvocation.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @Override
            public Create set$Xgafv(java.lang.String $Xgafv) {
              return (Create) super.set$Xgafv($Xgafv);
            }

            @Override
            public Create setAccessToken(java.lang.String accessToken) {
              return (Create) super.setAccessToken(accessToken);
            }

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

            @Override
            public Create setCallback(java.lang.String callback) {
              return (Create) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Create setUploadType(java.lang.String uploadType) {
              return (Create) super.setUploadType(uploadType);
            }

            @Override
            public Create setUploadProtocol(java.lang.String uploadProtocol) {
              return (Create) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to create the workflow invocation. Must be in the
             * format `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to create the workflow invocation. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to create the workflow invocation. Must be in the
             * format `projects/locations/repositories`.
             */
            public Create setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            @Override
            public Create set(String parameterName, Object value) {
              return (Create) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a single WorkflowInvocation.
           *
           * Create a request for the method "workflowInvocations.delete".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow invocation resource's name.
           * @return the request
           */
          public Delete delete(java.lang.String name) throws java.io.IOException {
            Delete result = new Delete(name);
            initialize(result);
            return result;
          }

          public class Delete extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");

            /**
             * Deletes a single WorkflowInvocation.
             *
             * Create a request for the method "workflowInvocations.delete".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workflow invocation resource's name.
             * @since 1.13
             */
            protected Delete(java.lang.String name) {
              super(Dataform.this, "DELETE", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
            }

            @Override
            public Delete set$Xgafv(java.lang.String $Xgafv) {
              return (Delete) super.set$Xgafv($Xgafv);
            }

            @Override
            public Delete setAccessToken(java.lang.String accessToken) {
              return (Delete) super.setAccessToken(accessToken);
            }

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

            @Override
            public Delete setCallback(java.lang.String callback) {
              return (Delete) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Delete) super.setUploadType(uploadType);
            }

            @Override
            public Delete setUploadProtocol(java.lang.String uploadProtocol) {
              return (Delete) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow invocation resource's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow invocation resource's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow invocation resource's name. */
            public Delete setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Delete set(String parameterName, Object value) {
              return (Delete) super.set(parameterName, value);
            }
          }
          /**
           * Fetches a single WorkflowInvocation.
           *
           * Create a request for the method "workflowInvocations.get".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Get#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow invocation resource's name.
           * @return the request
           */
          public Get get(java.lang.String name) throws java.io.IOException {
            Get result = new Get(name);
            initialize(result);
            return result;
          }

          public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WorkflowInvocation> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");

            /**
             * Fetches a single WorkflowInvocation.
             *
             * Create a request for the method "workflowInvocations.get".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workflow invocation resource's name.
             * @since 1.13
             */
            protected Get(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.WorkflowInvocation.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (Get) super.set$Xgafv($Xgafv);
            }

            @Override
            public Get setAccessToken(java.lang.String accessToken) {
              return (Get) super.setAccessToken(accessToken);
            }

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

            @Override
            public Get setCallback(java.lang.String callback) {
              return (Get) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Get) super.setUploadType(uploadType);
            }

            @Override
            public Get setUploadProtocol(java.lang.String uploadProtocol) {
              return (Get) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow invocation resource's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow invocation resource's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow invocation resource's name. */
            public Get setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Get set(String parameterName, Object value) {
              return (Get) super.set(parameterName, value);
            }
          }
          /**
           * Lists WorkflowInvocations in a given Repository.
           *
           * Create a request for the method "workflowInvocations.list".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link List#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The parent resource of the WorkflowInvocation type. Must be in the format
           *        `projects/locations/repositories`.
           * @return the request
           */
          public List list(java.lang.String parent) throws java.io.IOException {
            List result = new List(parent);
            initialize(result);
            return result;
          }

          public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListWorkflowInvocationsResponse> {

            private static final String REST_PATH = "v1beta1/{+parent}/workflowInvocations";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Lists WorkflowInvocations in a given Repository.
             *
             * Create a request for the method "workflowInvocations.list".
             *
             * This request holds the parameters needed by the the dataform 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 parent Required. The parent resource of the WorkflowInvocation type. Must be in the format
           *        `projects/locations/repositories`.
             * @since 1.13
             */
            protected List(java.lang.String parent) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListWorkflowInvocationsResponse.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (List) super.set$Xgafv($Xgafv);
            }

            @Override
            public List setAccessToken(java.lang.String accessToken) {
              return (List) super.setAccessToken(accessToken);
            }

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

            @Override
            public List setCallback(java.lang.String callback) {
              return (List) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (List) super.setUploadType(uploadType);
            }

            @Override
            public List setUploadProtocol(java.lang.String uploadProtocol) {
              return (List) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The parent resource of the WorkflowInvocation type. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The parent resource of the WorkflowInvocation type. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The parent resource of the WorkflowInvocation type. Must be in the format
             * `projects/locations/repositories`.
             */
            public List setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /** Optional. Filter for the returned list. */
            @com.google.api.client.util.Key
            private java.lang.String filter;

            /** Optional. Filter for the returned list.
             */
            public java.lang.String getFilter() {
              return filter;
            }

            /** Optional. Filter for the returned list. */
            public List setFilter(java.lang.String filter) {
              this.filter = filter;
              return this;
            }

            /**
             * Optional. This field only supports ordering by `name`. If unspecified, the server
             * will choose the ordering. If specified, the default order is ascending for the `name`
             * field.
             */
            @com.google.api.client.util.Key
            private java.lang.String orderBy;

            /** Optional. This field only supports ordering by `name`. If unspecified, the server will choose the
           ordering. If specified, the default order is ascending for the `name` field.
             */
            public java.lang.String getOrderBy() {
              return orderBy;
            }

            /**
             * Optional. This field only supports ordering by `name`. If unspecified, the server
             * will choose the ordering. If specified, the default order is ascending for the `name`
             * field.
             */
            public List setOrderBy(java.lang.String orderBy) {
              this.orderBy = orderBy;
              return this;
            }

            /**
             * Optional. Maximum number of workflow invocations to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of workflow invocations to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of workflow invocations to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            public List setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `ListWorkflowInvocations` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListWorkflowInvocations` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `ListWorkflowInvocations` call. Provide this to
           retrieve the subsequent page. When paginating, all other parameters provided to
           `ListWorkflowInvocations` must match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `ListWorkflowInvocations` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `ListWorkflowInvocations` must match the call that provided the page token.
             */
            public List setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            @Override
            public List set(String parameterName, Object value) {
              return (List) super.set(parameterName, value);
            }
          }
          /**
           * Returns WorkflowInvocationActions in a given WorkflowInvocation.
           *
           * Create a request for the method "workflowInvocations.query".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Query#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workflow invocation's name.
           * @return the request
           */
          public Query query(java.lang.String name) throws java.io.IOException {
            Query result = new Query(name);
            initialize(result);
            return result;
          }

          public class Query extends DataformRequest<com.google.api.services.dataform.v1beta1.model.QueryWorkflowInvocationActionsResponse> {

            private static final String REST_PATH = "v1beta1/{+name}:query";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");

            /**
             * Returns WorkflowInvocationActions in a given WorkflowInvocation.
             *
             * Create a request for the method "workflowInvocations.query".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Query#execute()} method to invoke the remote operation.
             * <p> {@link
             * Query#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workflow invocation's name.
             * @since 1.13
             */
            protected Query(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.QueryWorkflowInvocationActionsResponse.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
            }

            @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 Query set$Xgafv(java.lang.String $Xgafv) {
              return (Query) super.set$Xgafv($Xgafv);
            }

            @Override
            public Query setAccessToken(java.lang.String accessToken) {
              return (Query) super.setAccessToken(accessToken);
            }

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

            @Override
            public Query setCallback(java.lang.String callback) {
              return (Query) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Query setUploadType(java.lang.String uploadType) {
              return (Query) super.setUploadType(uploadType);
            }

            @Override
            public Query setUploadProtocol(java.lang.String uploadProtocol) {
              return (Query) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workflow invocation's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workflow invocation's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workflow invocation's name. */
            public Query setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workflowInvocations/[^/]+$");
              }
              this.name = name;
              return this;
            }

            /**
             * Optional. Maximum number of workflow invocations to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of workflow invocations to return. The server may return fewer items than
           requested. If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of workflow invocations to return. The server may return
             * fewer items than requested. If unspecified, the server will pick an appropriate
             * default.
             */
            public Query setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `QueryWorkflowInvocationActions` call.
             * Provide this to retrieve the subsequent page. When paginating, all other parameters
             * provided to `QueryWorkflowInvocationActions` must match the call that provided the
             * page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `QueryWorkflowInvocationActions` call. Provide this
           to retrieve the subsequent page. When paginating, all other parameters provided to
           `QueryWorkflowInvocationActions` must match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `QueryWorkflowInvocationActions` call.
             * Provide this to retrieve the subsequent page. When paginating, all other parameters
             * provided to `QueryWorkflowInvocationActions` must match the call that provided the
             * page token.
             */
            public Query setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

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

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

        /**
         * The "workspaces" collection of methods.
         */
        public class Workspaces {

          /**
           * Applies a Git commit for uncommitted files in a Workspace.
           *
           * Create a request for the method "workspaces.commit".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Commit#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.CommitWorkspaceChangesRequest}
           * @return the request
           */
          public Commit commit(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CommitWorkspaceChangesRequest content) throws java.io.IOException {
            Commit result = new Commit(name, content);
            initialize(result);
            return result;
          }

          public class Commit extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}:commit";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Applies a Git commit for uncommitted files in a Workspace.
             *
             * Create a request for the method "workspaces.commit".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Commit#execute()} method to invoke the remote operation.
             * <p> {@link
             * Commit#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.CommitWorkspaceChangesRequest}
             * @since 1.13
             */
            protected Commit(java.lang.String name, com.google.api.services.dataform.v1beta1.model.CommitWorkspaceChangesRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public Commit set$Xgafv(java.lang.String $Xgafv) {
              return (Commit) super.set$Xgafv($Xgafv);
            }

            @Override
            public Commit setAccessToken(java.lang.String accessToken) {
              return (Commit) super.setAccessToken(accessToken);
            }

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

            @Override
            public Commit setCallback(java.lang.String callback) {
              return (Commit) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Commit setUploadType(java.lang.String uploadType) {
              return (Commit) super.setUploadType(uploadType);
            }

            @Override
            public Commit setUploadProtocol(java.lang.String uploadProtocol) {
              return (Commit) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public Commit setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Commit set(String parameterName, Object value) {
              return (Commit) super.set(parameterName, value);
            }
          }
          /**
           * Creates a new Workspace in a given Repository.
           *
           * Create a request for the method "workspaces.create".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Create#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to create the workspace. Must be in the format
           *        `projects/locations/repositories`.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.Workspace}
           * @return the request
           */
          public Create create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.Workspace content) throws java.io.IOException {
            Create result = new Create(parent, content);
            initialize(result);
            return result;
          }

          public class Create extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Workspace> {

            private static final String REST_PATH = "v1beta1/{+parent}/workspaces";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Creates a new Workspace in a given Repository.
             *
             * Create a request for the method "workspaces.create".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Create#execute()} method to invoke the remote operation.
             * <p> {@link
             * Create#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param parent Required. The repository in which to create the workspace. Must be in the format
           *        `projects/locations/repositories`.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.Workspace}
             * @since 1.13
             */
            protected Create(java.lang.String parent, com.google.api.services.dataform.v1beta1.model.Workspace content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Workspace.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @Override
            public Create set$Xgafv(java.lang.String $Xgafv) {
              return (Create) super.set$Xgafv($Xgafv);
            }

            @Override
            public Create setAccessToken(java.lang.String accessToken) {
              return (Create) super.setAccessToken(accessToken);
            }

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

            @Override
            public Create setCallback(java.lang.String callback) {
              return (Create) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Create setUploadType(java.lang.String uploadType) {
              return (Create) super.setUploadType(uploadType);
            }

            @Override
            public Create setUploadProtocol(java.lang.String uploadProtocol) {
              return (Create) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to create the workspace. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to create the workspace. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to create the workspace. Must be in the format
             * `projects/locations/repositories`.
             */
            public Create setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /**
             * Required. The ID to use for the workspace, which will become the final component of
             * the workspace's resource name.
             */
            @com.google.api.client.util.Key
            private java.lang.String workspaceId;

            /** Required. The ID to use for the workspace, which will become the final component of the workspace's
           resource name.
             */
            public java.lang.String getWorkspaceId() {
              return workspaceId;
            }

            /**
             * Required. The ID to use for the workspace, which will become the final component of
             * the workspace's resource name.
             */
            public Create setWorkspaceId(java.lang.String workspaceId) {
              this.workspaceId = workspaceId;
              return this;
            }

            @Override
            public Create set(String parameterName, Object value) {
              return (Create) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a single Workspace.
           *
           * Create a request for the method "workspaces.delete".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace resource's name.
           * @return the request
           */
          public Delete delete(java.lang.String name) throws java.io.IOException {
            Delete result = new Delete(name);
            initialize(result);
            return result;
          }

          public class Delete extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Deletes a single Workspace.
             *
             * Create a request for the method "workspaces.delete".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workspace resource's name.
             * @since 1.13
             */
            protected Delete(java.lang.String name) {
              super(Dataform.this, "DELETE", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public Delete set$Xgafv(java.lang.String $Xgafv) {
              return (Delete) super.set$Xgafv($Xgafv);
            }

            @Override
            public Delete setAccessToken(java.lang.String accessToken) {
              return (Delete) super.setAccessToken(accessToken);
            }

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

            @Override
            public Delete setCallback(java.lang.String callback) {
              return (Delete) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Delete) super.setUploadType(uploadType);
            }

            @Override
            public Delete setUploadProtocol(java.lang.String uploadProtocol) {
              return (Delete) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace resource's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace resource's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace resource's name. */
            public Delete setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Delete set(String parameterName, Object value) {
              return (Delete) super.set(parameterName, value);
            }
          }
          /**
           * Fetches Git diff for an uncommitted file in a Workspace.
           *
           * Create a request for the method "workspaces.fetchFileDiff".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link FetchFileDiff#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @return the request
           */
          public FetchFileDiff fetchFileDiff(java.lang.String workspace) throws java.io.IOException {
            FetchFileDiff result = new FetchFileDiff(workspace);
            initialize(result);
            return result;
          }

          public class FetchFileDiff extends DataformRequest<com.google.api.services.dataform.v1beta1.model.FetchFileDiffResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:fetchFileDiff";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Fetches Git diff for an uncommitted file in a Workspace.
             *
             * Create a request for the method "workspaces.fetchFileDiff".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link FetchFileDiff#execute()} method to invoke the remote
             * operation. <p> {@link FetchFileDiff#initialize(com.google.api.client.googleapis.services.Abstra
             * ctGoogleClientRequest)} must be called to initialize this instance immediately after invoking
             * the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @since 1.13
             */
            protected FetchFileDiff(java.lang.String workspace) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.FetchFileDiffResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 FetchFileDiff set$Xgafv(java.lang.String $Xgafv) {
              return (FetchFileDiff) super.set$Xgafv($Xgafv);
            }

            @Override
            public FetchFileDiff setAccessToken(java.lang.String accessToken) {
              return (FetchFileDiff) super.setAccessToken(accessToken);
            }

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

            @Override
            public FetchFileDiff setCallback(java.lang.String callback) {
              return (FetchFileDiff) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public FetchFileDiff setUploadType(java.lang.String uploadType) {
              return (FetchFileDiff) super.setUploadType(uploadType);
            }

            @Override
            public FetchFileDiff setUploadProtocol(java.lang.String uploadProtocol) {
              return (FetchFileDiff) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public FetchFileDiff setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            /**
             * Required. The file's full path including filename, relative to the workspace root.
             */
            @com.google.api.client.util.Key
            private java.lang.String path;

            /** Required. The file's full path including filename, relative to the workspace root.
             */
            public java.lang.String getPath() {
              return path;
            }

            /**
             * Required. The file's full path including filename, relative to the workspace root.
             */
            public FetchFileDiff setPath(java.lang.String path) {
              this.path = path;
              return this;
            }

            @Override
            public FetchFileDiff set(String parameterName, Object value) {
              return (FetchFileDiff) super.set(parameterName, value);
            }
          }
          /**
           * Fetches Git statuses for the files in a Workspace.
           *
           * Create a request for the method "workspaces.fetchFileGitStatuses".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link FetchFileGitStatuses#execute()} method to invoke the remote
           * operation.
           *
           * @param name Required. The workspace's name.
           * @return the request
           */
          public FetchFileGitStatuses fetchFileGitStatuses(java.lang.String name) throws java.io.IOException {
            FetchFileGitStatuses result = new FetchFileGitStatuses(name);
            initialize(result);
            return result;
          }

          public class FetchFileGitStatuses extends DataformRequest<com.google.api.services.dataform.v1beta1.model.FetchFileGitStatusesResponse> {

            private static final String REST_PATH = "v1beta1/{+name}:fetchFileGitStatuses";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Fetches Git statuses for the files in a Workspace.
             *
             * Create a request for the method "workspaces.fetchFileGitStatuses".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link FetchFileGitStatuses#execute()} method to invoke the
             * remote operation. <p> {@link FetchFileGitStatuses#initialize(com.google.api.client.googleapis.s
             * ervices.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
             * after invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @since 1.13
             */
            protected FetchFileGitStatuses(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.FetchFileGitStatusesResponse.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 FetchFileGitStatuses set$Xgafv(java.lang.String $Xgafv) {
              return (FetchFileGitStatuses) super.set$Xgafv($Xgafv);
            }

            @Override
            public FetchFileGitStatuses setAccessToken(java.lang.String accessToken) {
              return (FetchFileGitStatuses) super.setAccessToken(accessToken);
            }

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

            @Override
            public FetchFileGitStatuses setCallback(java.lang.String callback) {
              return (FetchFileGitStatuses) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public FetchFileGitStatuses setUploadType(java.lang.String uploadType) {
              return (FetchFileGitStatuses) super.setUploadType(uploadType);
            }

            @Override
            public FetchFileGitStatuses setUploadProtocol(java.lang.String uploadProtocol) {
              return (FetchFileGitStatuses) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public FetchFileGitStatuses setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public FetchFileGitStatuses set(String parameterName, Object value) {
              return (FetchFileGitStatuses) super.set(parameterName, value);
            }
          }
          /**
           * Fetches Git ahead/behind against a remote branch.
           *
           * Create a request for the method "workspaces.fetchGitAheadBehind".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link FetchGitAheadBehind#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @return the request
           */
          public FetchGitAheadBehind fetchGitAheadBehind(java.lang.String name) throws java.io.IOException {
            FetchGitAheadBehind result = new FetchGitAheadBehind(name);
            initialize(result);
            return result;
          }

          public class FetchGitAheadBehind extends DataformRequest<com.google.api.services.dataform.v1beta1.model.FetchGitAheadBehindResponse> {

            private static final String REST_PATH = "v1beta1/{+name}:fetchGitAheadBehind";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Fetches Git ahead/behind against a remote branch.
             *
             * Create a request for the method "workspaces.fetchGitAheadBehind".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link FetchGitAheadBehind#execute()} method to invoke the remote
             * operation. <p> {@link FetchGitAheadBehind#initialize(com.google.api.client.googleapis.services.
             * AbstractGoogleClientRequest)} must be called to initialize this instance immediately after
             * invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @since 1.13
             */
            protected FetchGitAheadBehind(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.FetchGitAheadBehindResponse.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 FetchGitAheadBehind set$Xgafv(java.lang.String $Xgafv) {
              return (FetchGitAheadBehind) super.set$Xgafv($Xgafv);
            }

            @Override
            public FetchGitAheadBehind setAccessToken(java.lang.String accessToken) {
              return (FetchGitAheadBehind) super.setAccessToken(accessToken);
            }

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

            @Override
            public FetchGitAheadBehind setCallback(java.lang.String callback) {
              return (FetchGitAheadBehind) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public FetchGitAheadBehind setUploadType(java.lang.String uploadType) {
              return (FetchGitAheadBehind) super.setUploadType(uploadType);
            }

            @Override
            public FetchGitAheadBehind setUploadProtocol(java.lang.String uploadProtocol) {
              return (FetchGitAheadBehind) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public FetchGitAheadBehind setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            /**
             * Optional. The name of the branch in the Git remote against which this workspace
             * should be compared. If left unset, the repository's default branch name will be used.
             */
            @com.google.api.client.util.Key
            private java.lang.String remoteBranch;

            /** Optional. The name of the branch in the Git remote against which this workspace should be compared.
           If left unset, the repository's default branch name will be used.
             */
            public java.lang.String getRemoteBranch() {
              return remoteBranch;
            }

            /**
             * Optional. The name of the branch in the Git remote against which this workspace
             * should be compared. If left unset, the repository's default branch name will be used.
             */
            public FetchGitAheadBehind setRemoteBranch(java.lang.String remoteBranch) {
              this.remoteBranch = remoteBranch;
              return this;
            }

            @Override
            public FetchGitAheadBehind set(String parameterName, Object value) {
              return (FetchGitAheadBehind) super.set(parameterName, value);
            }
          }
          /**
           * Fetches a single Workspace.
           *
           * Create a request for the method "workspaces.get".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Get#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @return the request
           */
          public Get get(java.lang.String name) throws java.io.IOException {
            Get result = new Get(name);
            initialize(result);
            return result;
          }

          public class Get extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Workspace> {

            private static final String REST_PATH = "v1beta1/{+name}";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Fetches a single Workspace.
             *
             * Create a request for the method "workspaces.get".
             *
             * This request holds the parameters needed by the the dataform 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 name Required. The workspace's name.
             * @since 1.13
             */
            protected Get(java.lang.String name) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Workspace.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (Get) super.set$Xgafv($Xgafv);
            }

            @Override
            public Get setAccessToken(java.lang.String accessToken) {
              return (Get) super.setAccessToken(accessToken);
            }

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

            @Override
            public Get setCallback(java.lang.String callback) {
              return (Get) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (Get) super.setUploadType(uploadType);
            }

            @Override
            public Get setUploadProtocol(java.lang.String uploadProtocol) {
              return (Get) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public Get setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Get set(String parameterName, Object value) {
              return (Get) super.set(parameterName, value);
            }
          }
          /**
           * Gets the access control policy for a resource. Returns an empty policy if the resource exists and
           * does not have a policy set.
           *
           * Create a request for the method "workspaces.getIamPolicy".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link GetIamPolicy#execute()} method to invoke the remote operation.
           *
           * @param resource REQUIRED: The resource for which the policy is being requested. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
           * @return the request
           */
          public GetIamPolicy getIamPolicy(java.lang.String resource) throws java.io.IOException {
            GetIamPolicy result = new GetIamPolicy(resource);
            initialize(result);
            return result;
          }

          public class GetIamPolicy extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Policy> {

            private static final String REST_PATH = "v1beta1/{+resource}:getIamPolicy";

            private final java.util.regex.Pattern RESOURCE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Gets the access control policy for a resource. Returns an empty policy if the resource exists
             * and does not have a policy set.
             *
             * Create a request for the method "workspaces.getIamPolicy".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link GetIamPolicy#execute()} method to invoke the remote
             * operation. <p> {@link
             * GetIamPolicy#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param resource REQUIRED: The resource for which the policy is being requested. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
             * @since 1.13
             */
            protected GetIamPolicy(java.lang.String resource) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.Policy.class);
              this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 GetIamPolicy set$Xgafv(java.lang.String $Xgafv) {
              return (GetIamPolicy) super.set$Xgafv($Xgafv);
            }

            @Override
            public GetIamPolicy setAccessToken(java.lang.String accessToken) {
              return (GetIamPolicy) super.setAccessToken(accessToken);
            }

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

            @Override
            public GetIamPolicy setCallback(java.lang.String callback) {
              return (GetIamPolicy) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public GetIamPolicy setUploadType(java.lang.String uploadType) {
              return (GetIamPolicy) super.setUploadType(uploadType);
            }

            @Override
            public GetIamPolicy setUploadProtocol(java.lang.String uploadProtocol) {
              return (GetIamPolicy) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * REQUIRED: The resource for which the policy is being requested. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            @com.google.api.client.util.Key
            private java.lang.String resource;

            /** REQUIRED: The resource for which the policy is being requested. See [Resource
           names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
           field.
             */
            public java.lang.String getResource() {
              return resource;
            }

            /**
             * REQUIRED: The resource for which the policy is being requested. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            public GetIamPolicy setResource(java.lang.String resource) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.resource = resource;
              return this;
            }

            /**
             * Optional. The maximum policy version that will be used to format the policy. Valid
             * values are 0, 1, and 3. Requests specifying an invalid value will be rejected.
             * Requests for policies with any conditional role bindings must specify version 3.
             * Policies with no conditional role bindings may specify any valid value or leave the
             * field unset. The policy in the response might use the policy version that you
             * specified, or it might use a lower policy version. For example, if you specify
             * version 3, but the policy has no conditional role bindings, the response uses version
             * 1. To learn which resources support conditions in their IAM policies, see the [IAM
             * documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
             */
            @com.google.api.client.util.Key("options.requestedPolicyVersion")
            private java.lang.Integer optionsRequestedPolicyVersion;

            /** Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1,
           and 3. Requests specifying an invalid value will be rejected. Requests for policies with any
           conditional role bindings must specify version 3. Policies with no conditional role bindings may
           specify any valid value or leave the field unset. The policy in the response might use the policy
           version that you specified, or it might use a lower policy version. For example, if you specify
           version 3, but the policy has no conditional role bindings, the response uses version 1. To learn
           which resources support conditions in their IAM policies, see the [IAM
           documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
             */
            public java.lang.Integer getOptionsRequestedPolicyVersion() {
              return optionsRequestedPolicyVersion;
            }

            /**
             * Optional. The maximum policy version that will be used to format the policy. Valid
             * values are 0, 1, and 3. Requests specifying an invalid value will be rejected.
             * Requests for policies with any conditional role bindings must specify version 3.
             * Policies with no conditional role bindings may specify any valid value or leave the
             * field unset. The policy in the response might use the policy version that you
             * specified, or it might use a lower policy version. For example, if you specify
             * version 3, but the policy has no conditional role bindings, the response uses version
             * 1. To learn which resources support conditions in their IAM policies, see the [IAM
             * documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
             */
            public GetIamPolicy setOptionsRequestedPolicyVersion(java.lang.Integer optionsRequestedPolicyVersion) {
              this.optionsRequestedPolicyVersion = optionsRequestedPolicyVersion;
              return this;
            }

            @Override
            public GetIamPolicy set(String parameterName, Object value) {
              return (GetIamPolicy) super.set(parameterName, value);
            }
          }
          /**
           * Installs dependency NPM packages (inside a Workspace).
           *
           * Create a request for the method "workspaces.installNpmPackages".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link InstallNpmPackages#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesRequest}
           * @return the request
           */
          public InstallNpmPackages installNpmPackages(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesRequest content) throws java.io.IOException {
            InstallNpmPackages result = new InstallNpmPackages(workspace, content);
            initialize(result);
            return result;
          }

          public class InstallNpmPackages extends DataformRequest<com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:installNpmPackages";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Installs dependency NPM packages (inside a Workspace).
             *
             * Create a request for the method "workspaces.installNpmPackages".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link InstallNpmPackages#execute()} method to invoke the remote
             * operation. <p> {@link InstallNpmPackages#initialize(com.google.api.client.googleapis.services.A
             * bstractGoogleClientRequest)} must be called to initialize this instance immediately after
             * invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesRequest}
             * @since 1.13
             */
            protected InstallNpmPackages(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.InstallNpmPackagesResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public InstallNpmPackages set$Xgafv(java.lang.String $Xgafv) {
              return (InstallNpmPackages) super.set$Xgafv($Xgafv);
            }

            @Override
            public InstallNpmPackages setAccessToken(java.lang.String accessToken) {
              return (InstallNpmPackages) super.setAccessToken(accessToken);
            }

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

            @Override
            public InstallNpmPackages setCallback(java.lang.String callback) {
              return (InstallNpmPackages) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public InstallNpmPackages setUploadType(java.lang.String uploadType) {
              return (InstallNpmPackages) super.setUploadType(uploadType);
            }

            @Override
            public InstallNpmPackages setUploadProtocol(java.lang.String uploadProtocol) {
              return (InstallNpmPackages) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public InstallNpmPackages setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public InstallNpmPackages set(String parameterName, Object value) {
              return (InstallNpmPackages) super.set(parameterName, value);
            }
          }
          /**
           * Lists Workspaces in a given Repository.
           *
           * Create a request for the method "workspaces.list".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link List#execute()} method to invoke the remote operation.
           *
           * @param parent Required. The repository in which to list workspaces. Must be in the format
           *        `projects/locations/repositories`.
           * @return the request
           */
          public List list(java.lang.String parent) throws java.io.IOException {
            List result = new List(parent);
            initialize(result);
            return result;
          }

          public class List extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ListWorkspacesResponse> {

            private static final String REST_PATH = "v1beta1/{+parent}/workspaces";

            private final java.util.regex.Pattern PARENT_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");

            /**
             * Lists Workspaces in a given Repository.
             *
             * Create a request for the method "workspaces.list".
             *
             * This request holds the parameters needed by the the dataform 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 parent Required. The repository in which to list workspaces. Must be in the format
           *        `projects/locations/repositories`.
             * @since 1.13
             */
            protected List(java.lang.String parent) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ListWorkspacesResponse.class);
              this.parent = com.google.api.client.util.Preconditions.checkNotNull(parent, "Required parameter parent must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
            }

            @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 set$Xgafv(java.lang.String $Xgafv) {
              return (List) super.set$Xgafv($Xgafv);
            }

            @Override
            public List setAccessToken(java.lang.String accessToken) {
              return (List) super.setAccessToken(accessToken);
            }

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

            @Override
            public List setCallback(java.lang.String callback) {
              return (List) super.setCallback(callback);
            }

            @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 setUploadType(java.lang.String uploadType) {
              return (List) super.setUploadType(uploadType);
            }

            @Override
            public List setUploadProtocol(java.lang.String uploadProtocol) {
              return (List) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * Required. The repository in which to list workspaces. Must be in the format
             * `projects/locations/repositories`.
             */
            @com.google.api.client.util.Key
            private java.lang.String parent;

            /** Required. The repository in which to list workspaces. Must be in the format
           `projects/locations/repositories`.
             */
            public java.lang.String getParent() {
              return parent;
            }

            /**
             * Required. The repository in which to list workspaces. Must be in the format
             * `projects/locations/repositories`.
             */
            public List setParent(java.lang.String parent) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(PARENT_PATTERN.matcher(parent).matches(),
                    "Parameter parent must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$");
              }
              this.parent = parent;
              return this;
            }

            /** Optional. Filter for the returned list. */
            @com.google.api.client.util.Key
            private java.lang.String filter;

            /** Optional. Filter for the returned list.
             */
            public java.lang.String getFilter() {
              return filter;
            }

            /** Optional. Filter for the returned list. */
            public List setFilter(java.lang.String filter) {
              this.filter = filter;
              return this;
            }

            /**
             * Optional. This field only supports ordering by `name`. If unspecified, the server
             * will choose the ordering. If specified, the default order is ascending for the `name`
             * field.
             */
            @com.google.api.client.util.Key
            private java.lang.String orderBy;

            /** Optional. This field only supports ordering by `name`. If unspecified, the server will choose the
           ordering. If specified, the default order is ascending for the `name` field.
             */
            public java.lang.String getOrderBy() {
              return orderBy;
            }

            /**
             * Optional. This field only supports ordering by `name`. If unspecified, the server
             * will choose the ordering. If specified, the default order is ascending for the `name`
             * field.
             */
            public List setOrderBy(java.lang.String orderBy) {
              this.orderBy = orderBy;
              return this;
            }

            /**
             * Optional. Maximum number of workspaces to return. The server may return fewer items
             * than requested. If unspecified, the server will pick an appropriate default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of workspaces to return. The server may return fewer items than requested.
           If unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of workspaces to return. The server may return fewer items
             * than requested. If unspecified, the server will pick an appropriate default.
             */
            public List setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `ListWorkspaces` call. Provide this to
             * retrieve the subsequent page. When paginating, all other parameters provided to
             * `ListWorkspaces` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `ListWorkspaces` call. Provide this to retrieve the
           subsequent page. When paginating, all other parameters provided to `ListWorkspaces` must match the
           call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `ListWorkspaces` call. Provide this to
             * retrieve the subsequent page. When paginating, all other parameters provided to
             * `ListWorkspaces` must match the call that provided the page token.
             */
            public List setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            @Override
            public List set(String parameterName, Object value) {
              return (List) super.set(parameterName, value);
            }
          }
          /**
           * Creates a directory inside a Workspace.
           *
           * Create a request for the method "workspaces.makeDirectory".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link MakeDirectory#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.MakeDirectoryRequest}
           * @return the request
           */
          public MakeDirectory makeDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MakeDirectoryRequest content) throws java.io.IOException {
            MakeDirectory result = new MakeDirectory(workspace, content);
            initialize(result);
            return result;
          }

          public class MakeDirectory extends DataformRequest<com.google.api.services.dataform.v1beta1.model.MakeDirectoryResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:makeDirectory";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Creates a directory inside a Workspace.
             *
             * Create a request for the method "workspaces.makeDirectory".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link MakeDirectory#execute()} method to invoke the remote
             * operation. <p> {@link MakeDirectory#initialize(com.google.api.client.googleapis.services.Abstra
             * ctGoogleClientRequest)} must be called to initialize this instance immediately after invoking
             * the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.MakeDirectoryRequest}
             * @since 1.13
             */
            protected MakeDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MakeDirectoryRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.MakeDirectoryResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public MakeDirectory set$Xgafv(java.lang.String $Xgafv) {
              return (MakeDirectory) super.set$Xgafv($Xgafv);
            }

            @Override
            public MakeDirectory setAccessToken(java.lang.String accessToken) {
              return (MakeDirectory) super.setAccessToken(accessToken);
            }

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

            @Override
            public MakeDirectory setCallback(java.lang.String callback) {
              return (MakeDirectory) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public MakeDirectory setUploadType(java.lang.String uploadType) {
              return (MakeDirectory) super.setUploadType(uploadType);
            }

            @Override
            public MakeDirectory setUploadProtocol(java.lang.String uploadProtocol) {
              return (MakeDirectory) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public MakeDirectory setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public MakeDirectory set(String parameterName, Object value) {
              return (MakeDirectory) super.set(parameterName, value);
            }
          }
          /**
           * Moves a directory (inside a Workspace), and all of its contents, to a new location.
           *
           * Create a request for the method "workspaces.moveDirectory".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link MoveDirectory#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.MoveDirectoryRequest}
           * @return the request
           */
          public MoveDirectory moveDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MoveDirectoryRequest content) throws java.io.IOException {
            MoveDirectory result = new MoveDirectory(workspace, content);
            initialize(result);
            return result;
          }

          public class MoveDirectory extends DataformRequest<com.google.api.services.dataform.v1beta1.model.MoveDirectoryResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:moveDirectory";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Moves a directory (inside a Workspace), and all of its contents, to a new location.
             *
             * Create a request for the method "workspaces.moveDirectory".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link MoveDirectory#execute()} method to invoke the remote
             * operation. <p> {@link MoveDirectory#initialize(com.google.api.client.googleapis.services.Abstra
             * ctGoogleClientRequest)} must be called to initialize this instance immediately after invoking
             * the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.MoveDirectoryRequest}
             * @since 1.13
             */
            protected MoveDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MoveDirectoryRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.MoveDirectoryResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public MoveDirectory set$Xgafv(java.lang.String $Xgafv) {
              return (MoveDirectory) super.set$Xgafv($Xgafv);
            }

            @Override
            public MoveDirectory setAccessToken(java.lang.String accessToken) {
              return (MoveDirectory) super.setAccessToken(accessToken);
            }

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

            @Override
            public MoveDirectory setCallback(java.lang.String callback) {
              return (MoveDirectory) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public MoveDirectory setUploadType(java.lang.String uploadType) {
              return (MoveDirectory) super.setUploadType(uploadType);
            }

            @Override
            public MoveDirectory setUploadProtocol(java.lang.String uploadProtocol) {
              return (MoveDirectory) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public MoveDirectory setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public MoveDirectory set(String parameterName, Object value) {
              return (MoveDirectory) super.set(parameterName, value);
            }
          }
          /**
           * Moves a file (inside a Workspace) to a new location.
           *
           * Create a request for the method "workspaces.moveFile".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link MoveFile#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.MoveFileRequest}
           * @return the request
           */
          public MoveFile moveFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MoveFileRequest content) throws java.io.IOException {
            MoveFile result = new MoveFile(workspace, content);
            initialize(result);
            return result;
          }

          public class MoveFile extends DataformRequest<com.google.api.services.dataform.v1beta1.model.MoveFileResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:moveFile";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Moves a file (inside a Workspace) to a new location.
             *
             * Create a request for the method "workspaces.moveFile".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link MoveFile#execute()} method to invoke the remote operation.
             * <p> {@link
             * MoveFile#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.MoveFileRequest}
             * @since 1.13
             */
            protected MoveFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.MoveFileRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.MoveFileResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public MoveFile set$Xgafv(java.lang.String $Xgafv) {
              return (MoveFile) super.set$Xgafv($Xgafv);
            }

            @Override
            public MoveFile setAccessToken(java.lang.String accessToken) {
              return (MoveFile) super.setAccessToken(accessToken);
            }

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

            @Override
            public MoveFile setCallback(java.lang.String callback) {
              return (MoveFile) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public MoveFile setUploadType(java.lang.String uploadType) {
              return (MoveFile) super.setUploadType(uploadType);
            }

            @Override
            public MoveFile setUploadProtocol(java.lang.String uploadProtocol) {
              return (MoveFile) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public MoveFile setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public MoveFile set(String parameterName, Object value) {
              return (MoveFile) super.set(parameterName, value);
            }
          }
          /**
           * Pulls Git commits from the Repository's remote into a Workspace.
           *
           * Create a request for the method "workspaces.pull".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Pull#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.PullGitCommitsRequest}
           * @return the request
           */
          public Pull pull(java.lang.String name, com.google.api.services.dataform.v1beta1.model.PullGitCommitsRequest content) throws java.io.IOException {
            Pull result = new Pull(name, content);
            initialize(result);
            return result;
          }

          public class Pull extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}:pull";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Pulls Git commits from the Repository's remote into a Workspace.
             *
             * Create a request for the method "workspaces.pull".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Pull#execute()} method to invoke the remote operation. <p>
             * {@link Pull#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.PullGitCommitsRequest}
             * @since 1.13
             */
            protected Pull(java.lang.String name, com.google.api.services.dataform.v1beta1.model.PullGitCommitsRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public Pull set$Xgafv(java.lang.String $Xgafv) {
              return (Pull) super.set$Xgafv($Xgafv);
            }

            @Override
            public Pull setAccessToken(java.lang.String accessToken) {
              return (Pull) super.setAccessToken(accessToken);
            }

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

            @Override
            public Pull setCallback(java.lang.String callback) {
              return (Pull) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Pull setUploadType(java.lang.String uploadType) {
              return (Pull) super.setUploadType(uploadType);
            }

            @Override
            public Pull setUploadProtocol(java.lang.String uploadProtocol) {
              return (Pull) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public Pull setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Pull set(String parameterName, Object value) {
              return (Pull) super.set(parameterName, value);
            }
          }
          /**
           * Pushes Git commits from a Workspace to the Repository's remote.
           *
           * Create a request for the method "workspaces.push".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Push#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.PushGitCommitsRequest}
           * @return the request
           */
          public Push push(java.lang.String name, com.google.api.services.dataform.v1beta1.model.PushGitCommitsRequest content) throws java.io.IOException {
            Push result = new Push(name, content);
            initialize(result);
            return result;
          }

          public class Push extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}:push";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Pushes Git commits from a Workspace to the Repository's remote.
             *
             * Create a request for the method "workspaces.push".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Push#execute()} method to invoke the remote operation. <p>
             * {@link Push#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.PushGitCommitsRequest}
             * @since 1.13
             */
            protected Push(java.lang.String name, com.google.api.services.dataform.v1beta1.model.PushGitCommitsRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public Push set$Xgafv(java.lang.String $Xgafv) {
              return (Push) super.set$Xgafv($Xgafv);
            }

            @Override
            public Push setAccessToken(java.lang.String accessToken) {
              return (Push) super.setAccessToken(accessToken);
            }

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

            @Override
            public Push setCallback(java.lang.String callback) {
              return (Push) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Push setUploadType(java.lang.String uploadType) {
              return (Push) super.setUploadType(uploadType);
            }

            @Override
            public Push setUploadProtocol(java.lang.String uploadProtocol) {
              return (Push) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public Push setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Push set(String parameterName, Object value) {
              return (Push) super.set(parameterName, value);
            }
          }
          /**
           * Returns the contents of a given Workspace directory.
           *
           * Create a request for the method "workspaces.queryDirectoryContents".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link QueryDirectoryContents#execute()} method to invoke the remote
           * operation.
           *
           * @param workspace Required. The workspace's name.
           * @return the request
           */
          public QueryDirectoryContents queryDirectoryContents(java.lang.String workspace) throws java.io.IOException {
            QueryDirectoryContents result = new QueryDirectoryContents(workspace);
            initialize(result);
            return result;
          }

          public class QueryDirectoryContents extends DataformRequest<com.google.api.services.dataform.v1beta1.model.QueryDirectoryContentsResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:queryDirectoryContents";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Returns the contents of a given Workspace directory.
             *
             * Create a request for the method "workspaces.queryDirectoryContents".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link QueryDirectoryContents#execute()} method to invoke the
             * remote operation. <p> {@link QueryDirectoryContents#initialize(com.google.api.client.googleapis
             * .services.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
             * after invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @since 1.13
             */
            protected QueryDirectoryContents(java.lang.String workspace) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.QueryDirectoryContentsResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 QueryDirectoryContents set$Xgafv(java.lang.String $Xgafv) {
              return (QueryDirectoryContents) super.set$Xgafv($Xgafv);
            }

            @Override
            public QueryDirectoryContents setAccessToken(java.lang.String accessToken) {
              return (QueryDirectoryContents) super.setAccessToken(accessToken);
            }

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

            @Override
            public QueryDirectoryContents setCallback(java.lang.String callback) {
              return (QueryDirectoryContents) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public QueryDirectoryContents setUploadType(java.lang.String uploadType) {
              return (QueryDirectoryContents) super.setUploadType(uploadType);
            }

            @Override
            public QueryDirectoryContents setUploadProtocol(java.lang.String uploadProtocol) {
              return (QueryDirectoryContents) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public QueryDirectoryContents setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            /**
             * Optional. Maximum number of paths to return. The server may return fewer items than
             * requested. If unspecified, the server will pick an appropriate default.
             */
            @com.google.api.client.util.Key
            private java.lang.Integer pageSize;

            /** Optional. Maximum number of paths to return. The server may return fewer items than requested. If
           unspecified, the server will pick an appropriate default.
             */
            public java.lang.Integer getPageSize() {
              return pageSize;
            }

            /**
             * Optional. Maximum number of paths to return. The server may return fewer items than
             * requested. If unspecified, the server will pick an appropriate default.
             */
            public QueryDirectoryContents setPageSize(java.lang.Integer pageSize) {
              this.pageSize = pageSize;
              return this;
            }

            /**
             * Optional. Page token received from a previous `QueryDirectoryContents` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `QueryDirectoryContents` must match the call that provided the page token.
             */
            @com.google.api.client.util.Key
            private java.lang.String pageToken;

            /** Optional. Page token received from a previous `QueryDirectoryContents` call. Provide this to
           retrieve the subsequent page. When paginating, all other parameters provided to
           `QueryDirectoryContents` must match the call that provided the page token.
             */
            public java.lang.String getPageToken() {
              return pageToken;
            }

            /**
             * Optional. Page token received from a previous `QueryDirectoryContents` call. Provide
             * this to retrieve the subsequent page. When paginating, all other parameters provided
             * to `QueryDirectoryContents` must match the call that provided the page token.
             */
            public QueryDirectoryContents setPageToken(java.lang.String pageToken) {
              this.pageToken = pageToken;
              return this;
            }

            /**
             * Optional. The directory's full path including directory name, relative to the
             * workspace root. If left unset, the workspace root is used.
             */
            @com.google.api.client.util.Key
            private java.lang.String path;

            /** Optional. The directory's full path including directory name, relative to the workspace root. If
           left unset, the workspace root is used.
             */
            public java.lang.String getPath() {
              return path;
            }

            /**
             * Optional. The directory's full path including directory name, relative to the
             * workspace root. If left unset, the workspace root is used.
             */
            public QueryDirectoryContents setPath(java.lang.String path) {
              this.path = path;
              return this;
            }

            @Override
            public QueryDirectoryContents set(String parameterName, Object value) {
              return (QueryDirectoryContents) super.set(parameterName, value);
            }
          }
          /**
           * Returns the contents of a file (inside a Workspace).
           *
           * Create a request for the method "workspaces.readFile".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link ReadFile#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @return the request
           */
          public ReadFile readFile(java.lang.String workspace) throws java.io.IOException {
            ReadFile result = new ReadFile(workspace);
            initialize(result);
            return result;
          }

          public class ReadFile extends DataformRequest<com.google.api.services.dataform.v1beta1.model.ReadFileResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:readFile";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Returns the contents of a file (inside a Workspace).
             *
             * Create a request for the method "workspaces.readFile".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link ReadFile#execute()} method to invoke the remote operation.
             * <p> {@link
             * ReadFile#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @since 1.13
             */
            protected ReadFile(java.lang.String workspace) {
              super(Dataform.this, "GET", REST_PATH, null, com.google.api.services.dataform.v1beta1.model.ReadFileResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @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 ReadFile set$Xgafv(java.lang.String $Xgafv) {
              return (ReadFile) super.set$Xgafv($Xgafv);
            }

            @Override
            public ReadFile setAccessToken(java.lang.String accessToken) {
              return (ReadFile) super.setAccessToken(accessToken);
            }

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

            @Override
            public ReadFile setCallback(java.lang.String callback) {
              return (ReadFile) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public ReadFile setUploadType(java.lang.String uploadType) {
              return (ReadFile) super.setUploadType(uploadType);
            }

            @Override
            public ReadFile setUploadProtocol(java.lang.String uploadProtocol) {
              return (ReadFile) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public ReadFile setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            /**
             * Required. The file's full path including filename, relative to the workspace root.
             */
            @com.google.api.client.util.Key
            private java.lang.String path;

            /** Required. The file's full path including filename, relative to the workspace root.
             */
            public java.lang.String getPath() {
              return path;
            }

            /**
             * Required. The file's full path including filename, relative to the workspace root.
             */
            public ReadFile setPath(java.lang.String path) {
              this.path = path;
              return this;
            }

            @Override
            public ReadFile set(String parameterName, Object value) {
              return (ReadFile) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a directory (inside a Workspace) and all of its contents.
           *
           * Create a request for the method "workspaces.removeDirectory".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link RemoveDirectory#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.RemoveDirectoryRequest}
           * @return the request
           */
          public RemoveDirectory removeDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.RemoveDirectoryRequest content) throws java.io.IOException {
            RemoveDirectory result = new RemoveDirectory(workspace, content);
            initialize(result);
            return result;
          }

          public class RemoveDirectory extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+workspace}:removeDirectory";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Deletes a directory (inside a Workspace) and all of its contents.
             *
             * Create a request for the method "workspaces.removeDirectory".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link RemoveDirectory#execute()} method to invoke the remote
             * operation. <p> {@link RemoveDirectory#initialize(com.google.api.client.googleapis.services.Abst
             * ractGoogleClientRequest)} must be called to initialize this instance immediately after invoking
             * the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.RemoveDirectoryRequest}
             * @since 1.13
             */
            protected RemoveDirectory(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.RemoveDirectoryRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public RemoveDirectory set$Xgafv(java.lang.String $Xgafv) {
              return (RemoveDirectory) super.set$Xgafv($Xgafv);
            }

            @Override
            public RemoveDirectory setAccessToken(java.lang.String accessToken) {
              return (RemoveDirectory) super.setAccessToken(accessToken);
            }

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

            @Override
            public RemoveDirectory setCallback(java.lang.String callback) {
              return (RemoveDirectory) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public RemoveDirectory setUploadType(java.lang.String uploadType) {
              return (RemoveDirectory) super.setUploadType(uploadType);
            }

            @Override
            public RemoveDirectory setUploadProtocol(java.lang.String uploadProtocol) {
              return (RemoveDirectory) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public RemoveDirectory setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public RemoveDirectory set(String parameterName, Object value) {
              return (RemoveDirectory) super.set(parameterName, value);
            }
          }
          /**
           * Deletes a file (inside a Workspace).
           *
           * Create a request for the method "workspaces.removeFile".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link RemoveFile#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.RemoveFileRequest}
           * @return the request
           */
          public RemoveFile removeFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.RemoveFileRequest content) throws java.io.IOException {
            RemoveFile result = new RemoveFile(workspace, content);
            initialize(result);
            return result;
          }

          public class RemoveFile extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+workspace}:removeFile";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Deletes a file (inside a Workspace).
             *
             * Create a request for the method "workspaces.removeFile".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link RemoveFile#execute()} method to invoke the remote
             * operation. <p> {@link
             * RemoveFile#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.RemoveFileRequest}
             * @since 1.13
             */
            protected RemoveFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.RemoveFileRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public RemoveFile set$Xgafv(java.lang.String $Xgafv) {
              return (RemoveFile) super.set$Xgafv($Xgafv);
            }

            @Override
            public RemoveFile setAccessToken(java.lang.String accessToken) {
              return (RemoveFile) super.setAccessToken(accessToken);
            }

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

            @Override
            public RemoveFile setCallback(java.lang.String callback) {
              return (RemoveFile) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public RemoveFile setUploadType(java.lang.String uploadType) {
              return (RemoveFile) super.setUploadType(uploadType);
            }

            @Override
            public RemoveFile setUploadProtocol(java.lang.String uploadProtocol) {
              return (RemoveFile) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public RemoveFile setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

            @Override
            public RemoveFile set(String parameterName, Object value) {
              return (RemoveFile) super.set(parameterName, value);
            }
          }
          /**
           * Performs a Git reset for uncommitted files in a Workspace.
           *
           * Create a request for the method "workspaces.reset".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link Reset#execute()} method to invoke the remote operation.
           *
           * @param name Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.ResetWorkspaceChangesRequest}
           * @return the request
           */
          public Reset reset(java.lang.String name, com.google.api.services.dataform.v1beta1.model.ResetWorkspaceChangesRequest content) throws java.io.IOException {
            Reset result = new Reset(name, content);
            initialize(result);
            return result;
          }

          public class Reset extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Empty> {

            private static final String REST_PATH = "v1beta1/{+name}:reset";

            private final java.util.regex.Pattern NAME_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Performs a Git reset for uncommitted files in a Workspace.
             *
             * Create a request for the method "workspaces.reset".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link Reset#execute()} method to invoke the remote operation.
             * <p> {@link
             * Reset#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
             * be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param name Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.ResetWorkspaceChangesRequest}
             * @since 1.13
             */
            protected Reset(java.lang.String name, com.google.api.services.dataform.v1beta1.model.ResetWorkspaceChangesRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Empty.class);
              this.name = com.google.api.client.util.Preconditions.checkNotNull(name, "Required parameter name must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public Reset set$Xgafv(java.lang.String $Xgafv) {
              return (Reset) super.set$Xgafv($Xgafv);
            }

            @Override
            public Reset setAccessToken(java.lang.String accessToken) {
              return (Reset) super.setAccessToken(accessToken);
            }

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

            @Override
            public Reset setCallback(java.lang.String callback) {
              return (Reset) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public Reset setUploadType(java.lang.String uploadType) {
              return (Reset) super.setUploadType(uploadType);
            }

            @Override
            public Reset setUploadProtocol(java.lang.String uploadProtocol) {
              return (Reset) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String name;

            /** Required. The workspace's name.
             */
            public java.lang.String getName() {
              return name;
            }

            /** Required. The workspace's name. */
            public Reset setName(java.lang.String name) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(NAME_PATTERN.matcher(name).matches(),
                    "Parameter name must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.name = name;
              return this;
            }

            @Override
            public Reset set(String parameterName, Object value) {
              return (Reset) super.set(parameterName, value);
            }
          }
          /**
           * Sets the access control policy on the specified resource. Replaces any existing policy. Can
           * return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
           *
           * Create a request for the method "workspaces.setIamPolicy".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link SetIamPolicy#execute()} method to invoke the remote operation.
           *
           * @param resource REQUIRED: The resource for which the policy is being specified. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest}
           * @return the request
           */
          public SetIamPolicy setIamPolicy(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest content) throws java.io.IOException {
            SetIamPolicy result = new SetIamPolicy(resource, content);
            initialize(result);
            return result;
          }

          public class SetIamPolicy extends DataformRequest<com.google.api.services.dataform.v1beta1.model.Policy> {

            private static final String REST_PATH = "v1beta1/{+resource}:setIamPolicy";

            private final java.util.regex.Pattern RESOURCE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Sets the access control policy on the specified resource. Replaces any existing policy. Can
             * return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
             *
             * Create a request for the method "workspaces.setIamPolicy".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link SetIamPolicy#execute()} method to invoke the remote
             * operation. <p> {@link
             * SetIamPolicy#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param resource REQUIRED: The resource for which the policy is being specified. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest}
             * @since 1.13
             */
            protected SetIamPolicy(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.SetIamPolicyRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.Policy.class);
              this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public SetIamPolicy set$Xgafv(java.lang.String $Xgafv) {
              return (SetIamPolicy) super.set$Xgafv($Xgafv);
            }

            @Override
            public SetIamPolicy setAccessToken(java.lang.String accessToken) {
              return (SetIamPolicy) super.setAccessToken(accessToken);
            }

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

            @Override
            public SetIamPolicy setCallback(java.lang.String callback) {
              return (SetIamPolicy) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public SetIamPolicy setUploadType(java.lang.String uploadType) {
              return (SetIamPolicy) super.setUploadType(uploadType);
            }

            @Override
            public SetIamPolicy setUploadProtocol(java.lang.String uploadProtocol) {
              return (SetIamPolicy) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * REQUIRED: The resource for which the policy is being specified. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            @com.google.api.client.util.Key
            private java.lang.String resource;

            /** REQUIRED: The resource for which the policy is being specified. See [Resource
           names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
           field.
             */
            public java.lang.String getResource() {
              return resource;
            }

            /**
             * REQUIRED: The resource for which the policy is being specified. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            public SetIamPolicy setResource(java.lang.String resource) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.resource = resource;
              return this;
            }

            @Override
            public SetIamPolicy set(String parameterName, Object value) {
              return (SetIamPolicy) super.set(parameterName, value);
            }
          }
          /**
           * Returns permissions that a caller has on the specified resource. If the resource does not exist,
           * this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is
           * designed to be used for building permission-aware UIs and command-line tools, not for
           * authorization checking. This operation may "fail open" without warning.
           *
           * Create a request for the method "workspaces.testIamPermissions".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link TestIamPermissions#execute()} method to invoke the remote operation.
           *
           * @param resource REQUIRED: The resource for which the policy detail is being requested. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest}
           * @return the request
           */
          public TestIamPermissions testIamPermissions(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest content) throws java.io.IOException {
            TestIamPermissions result = new TestIamPermissions(resource, content);
            initialize(result);
            return result;
          }

          public class TestIamPermissions extends DataformRequest<com.google.api.services.dataform.v1beta1.model.TestIamPermissionsResponse> {

            private static final String REST_PATH = "v1beta1/{+resource}:testIamPermissions";

            private final java.util.regex.Pattern RESOURCE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Returns permissions that a caller has on the specified resource. If the resource does not
             * exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This
             * operation is designed to be used for building permission-aware UIs and command-line tools, not
             * for authorization checking. This operation may "fail open" without warning.
             *
             * Create a request for the method "workspaces.testIamPermissions".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link TestIamPermissions#execute()} method to invoke the remote
             * operation. <p> {@link TestIamPermissions#initialize(com.google.api.client.googleapis.services.A
             * bstractGoogleClientRequest)} must be called to initialize this instance immediately after
             * invoking the constructor. </p>
             *
             * @param resource REQUIRED: The resource for which the policy detail is being requested. See [Resource
           *        names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for
           *        this field.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest}
             * @since 1.13
             */
            protected TestIamPermissions(java.lang.String resource, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.TestIamPermissionsResponse.class);
              this.resource = com.google.api.client.util.Preconditions.checkNotNull(resource, "Required parameter resource must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public TestIamPermissions set$Xgafv(java.lang.String $Xgafv) {
              return (TestIamPermissions) super.set$Xgafv($Xgafv);
            }

            @Override
            public TestIamPermissions setAccessToken(java.lang.String accessToken) {
              return (TestIamPermissions) super.setAccessToken(accessToken);
            }

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

            @Override
            public TestIamPermissions setCallback(java.lang.String callback) {
              return (TestIamPermissions) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public TestIamPermissions setUploadType(java.lang.String uploadType) {
              return (TestIamPermissions) super.setUploadType(uploadType);
            }

            @Override
            public TestIamPermissions setUploadProtocol(java.lang.String uploadProtocol) {
              return (TestIamPermissions) super.setUploadProtocol(uploadProtocol);
            }

            /**
             * REQUIRED: The resource for which the policy detail is being requested. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            @com.google.api.client.util.Key
            private java.lang.String resource;

            /** REQUIRED: The resource for which the policy detail is being requested. See [Resource
           names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
           field.
             */
            public java.lang.String getResource() {
              return resource;
            }

            /**
             * REQUIRED: The resource for which the policy detail is being requested. See [Resource
             * names](https://cloud.google.com/apis/design/resource_names) for the appropriate value
             * for this field.
             */
            public TestIamPermissions setResource(java.lang.String resource) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(RESOURCE_PATTERN.matcher(resource).matches(),
                    "Parameter resource must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.resource = resource;
              return this;
            }

            @Override
            public TestIamPermissions set(String parameterName, Object value) {
              return (TestIamPermissions) super.set(parameterName, value);
            }
          }
          /**
           * Writes to a file (inside a Workspace).
           *
           * Create a request for the method "workspaces.writeFile".
           *
           * This request holds the parameters needed by the dataform server.  After setting any optional
           * parameters, call the {@link WriteFile#execute()} method to invoke the remote operation.
           *
           * @param workspace Required. The workspace's name.
           * @param content the {@link com.google.api.services.dataform.v1beta1.model.WriteFileRequest}
           * @return the request
           */
          public WriteFile writeFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.WriteFileRequest content) throws java.io.IOException {
            WriteFile result = new WriteFile(workspace, content);
            initialize(result);
            return result;
          }

          public class WriteFile extends DataformRequest<com.google.api.services.dataform.v1beta1.model.WriteFileResponse> {

            private static final String REST_PATH = "v1beta1/{+workspace}:writeFile";

            private final java.util.regex.Pattern WORKSPACE_PATTERN =
                java.util.regex.Pattern.compile("^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");

            /**
             * Writes to a file (inside a Workspace).
             *
             * Create a request for the method "workspaces.writeFile".
             *
             * This request holds the parameters needed by the the dataform server.  After setting any
             * optional parameters, call the {@link WriteFile#execute()} method to invoke the remote
             * operation. <p> {@link
             * WriteFile#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
             * must be called to initialize this instance immediately after invoking the constructor. </p>
             *
             * @param workspace Required. The workspace's name.
             * @param content the {@link com.google.api.services.dataform.v1beta1.model.WriteFileRequest}
             * @since 1.13
             */
            protected WriteFile(java.lang.String workspace, com.google.api.services.dataform.v1beta1.model.WriteFileRequest content) {
              super(Dataform.this, "POST", REST_PATH, content, com.google.api.services.dataform.v1beta1.model.WriteFileResponse.class);
              this.workspace = com.google.api.client.util.Preconditions.checkNotNull(workspace, "Required parameter workspace must be specified.");
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
            }

            @Override
            public WriteFile set$Xgafv(java.lang.String $Xgafv) {
              return (WriteFile) super.set$Xgafv($Xgafv);
            }

            @Override
            public WriteFile setAccessToken(java.lang.String accessToken) {
              return (WriteFile) super.setAccessToken(accessToken);
            }

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

            @Override
            public WriteFile setCallback(java.lang.String callback) {
              return (WriteFile) super.setCallback(callback);
            }

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

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

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

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

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

            @Override
            public WriteFile setUploadType(java.lang.String uploadType) {
              return (WriteFile) super.setUploadType(uploadType);
            }

            @Override
            public WriteFile setUploadProtocol(java.lang.String uploadProtocol) {
              return (WriteFile) super.setUploadProtocol(uploadProtocol);
            }

            /** Required. The workspace's name. */
            @com.google.api.client.util.Key
            private java.lang.String workspace;

            /** Required. The workspace's name.
             */
            public java.lang.String getWorkspace() {
              return workspace;
            }

            /** Required. The workspace's name. */
            public WriteFile setWorkspace(java.lang.String workspace) {
              if (!getSuppressPatternChecks()) {
                com.google.api.client.util.Preconditions.checkArgument(WORKSPACE_PATTERN.matcher(workspace).matches(),
                    "Parameter workspace must conform to the pattern " +
                    "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/workspaces/[^/]+$");
              }
              this.workspace = workspace;
              return this;
            }

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

        }
      }
    }
  }

  /**
   * Builder for {@link Dataform}.
   *
   * <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 {

    private static String chooseEndpoint(com.google.api.client.http.HttpTransport transport) {
      // If the GOOGLE_API_USE_MTLS_ENDPOINT environment variable value is "always", use mTLS endpoint.
      // If the env variable is "auto", use mTLS endpoint if and only if the transport is mTLS.
      // Use the regular endpoint for all other cases.
      String useMtlsEndpoint = System.getenv("GOOGLE_API_USE_MTLS_ENDPOINT");
      useMtlsEndpoint = useMtlsEndpoint == null ? "auto" : useMtlsEndpoint;
      if ("always".equals(useMtlsEndpoint) || ("auto".equals(useMtlsEndpoint) && transport != null && transport.isMtls())) {
        return DEFAULT_MTLS_ROOT_URL;
      }
      return DEFAULT_ROOT_URL;
    }

    /**
     * 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,
          Builder.chooseEndpoint(transport),
          DEFAULT_SERVICE_PATH,
          httpRequestInitializer,
          false);
      setBatchPath(DEFAULT_BATCH_PATH);
    }

    /** Builds a new instance of {@link Dataform}. */
    @Override
    public Dataform build() {
      return new Dataform(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 setBatchPath(String batchPath) {
      return (Builder) super.setBatchPath(batchPath);
    }

    @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 DataformRequestInitializer}.
     *
     * @since 1.12
     */
    public Builder setDataformRequestInitializer(
        DataformRequestInitializer dataformRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(dataformRequestInitializer);
    }

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