// This file is @generated by prost-build.
/// Describes encryption state of a resource.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DataEncryptionState {
    /// Required. The KMS key version name with which data of a resource is
    /// encrypted.
    #[prost(string, tag = "1")]
    pub kms_key_version_name: ::prost::alloc::string::String,
}
/// Represents a Dataform Git repository.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Repository {
    /// Identifier. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The name of the containing folder of the repository.
    /// The field is immutable and it can be modified via a MoveRepository
    /// operation.
    /// Format: `projects/*/locations/*/folders/*`. or
    /// `projects/*/locations/*/teamFolders/*`.
    #[prost(string, optional, tag = "16")]
    pub containing_folder: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. The resource name of the TeamFolder that this Repository is
    /// associated with. This should take the format:
    /// projects/{project}/locations/{location}/teamFolders/{teamFolder}. If this
    /// is not set, the Repository is not associated with a TeamFolder.
    #[prost(string, optional, tag = "18")]
    pub team_folder_name: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. The timestamp of when the repository was created.
    #[prost(message, optional, tag = "13")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Optional. The repository's user-friendly name.
    #[prost(string, tag = "8")]
    pub display_name: ::prost::alloc::string::String,
    /// Optional. If set, configures this repository to be linked to a Git remote.
    #[prost(message, optional, tag = "2")]
    pub git_remote_settings: ::core::option::Option<repository::GitRemoteSettings>,
    /// Optional. The name of the Secret Manager secret version to be used to
    /// interpolate variables into the .npmrc file for package installation
    /// operations. Must be in the format `projects/*/secrets/*/versions/*`. The
    /// file itself must be in a JSON format.
    #[prost(string, tag = "3")]
    pub npmrc_environment_variables_secret_version: ::prost::alloc::string::String,
    /// Optional. If set, fields of `workspace_compilation_overrides` override the
    /// default compilation settings that are specified in dataform.json when
    /// creating workspace-scoped compilation results. See documentation for
    /// `WorkspaceCompilationOverrides` for more information.
    #[prost(message, optional, tag = "4")]
    pub workspace_compilation_overrides: ::core::option::Option<
        repository::WorkspaceCompilationOverrides,
    >,
    /// Optional. Repository user labels.
    #[prost(map = "string, string", tag = "5")]
    pub labels: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    /// Optional. Input only. If set to true, the authenticated user will be
    /// granted the roles/dataform.admin role on the created repository. To modify
    /// access to the created repository later apply setIamPolicy from
    /// <https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories>
    #[prost(bool, tag = "9")]
    pub set_authenticated_user_admin: bool,
    /// Optional. The service account to run workflow invocations under.
    #[prost(string, tag = "10")]
    pub service_account: ::prost::alloc::string::String,
    /// Optional. The reference to a KMS encryption key. If provided, it will be
    /// used to encrypt user data in the repository and all child resources. It is
    /// not possible to add or update the encryption key after the repository is
    /// created. Example:
    /// `projects/{kms_project}/locations/{location}/keyRings/{key_location}/cryptoKeys/{key}`
    #[prost(string, tag = "11")]
    pub kms_key_name: ::prost::alloc::string::String,
    /// Output only. A data encryption state of a Git repository if this Repository
    /// is protected by a KMS key.
    #[prost(message, optional, tag = "12")]
    pub data_encryption_state: ::core::option::Option<DataEncryptionState>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "15")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `Repository`.
pub mod repository {
    /// Controls Git remote configuration for a repository.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct GitRemoteSettings {
        /// Required. The Git remote's URL.
        #[prost(string, tag = "1")]
        pub url: ::prost::alloc::string::String,
        /// Required. The Git remote's default branch name.
        #[prost(string, tag = "2")]
        pub default_branch: ::prost::alloc::string::String,
        /// Optional. The name of the Secret Manager secret version to use as an
        /// authentication token for Git operations. Must be in the format
        /// `projects/*/secrets/*/versions/*`.
        #[prost(string, tag = "3")]
        pub authentication_token_secret_version: ::prost::alloc::string::String,
        /// Optional. Authentication fields for remote uris using SSH protocol.
        #[prost(message, optional, tag = "5")]
        pub ssh_authentication_config: ::core::option::Option<
            git_remote_settings::SshAuthenticationConfig,
        >,
        /// Output only. Deprecated: The field does not contain any token status
        /// information. Instead use
        /// <https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories/computeAccessTokenStatus>
        #[deprecated]
        #[prost(enumeration = "git_remote_settings::TokenStatus", tag = "4")]
        pub token_status: i32,
    }
    /// Nested message and enum types in `GitRemoteSettings`.
    pub mod git_remote_settings {
        /// Configures fields for performing SSH authentication.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct SshAuthenticationConfig {
            /// Required. The name of the Secret Manager secret version to use as a
            /// ssh private key for Git operations.
            /// Must be in the format `projects/*/secrets/*/versions/*`.
            #[prost(string, tag = "1")]
            pub user_private_key_secret_version: ::prost::alloc::string::String,
            /// Required. Content of a public SSH key to verify an identity of a remote
            /// Git host.
            #[prost(string, tag = "2")]
            pub host_public_key: ::prost::alloc::string::String,
        }
        /// The status of the authentication token.
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum TokenStatus {
            /// Default value. This value is unused.
            Unspecified = 0,
            /// The token could not be found in Secret Manager (or the Dataform
            /// Service Account did not have permission to access it).
            NotFound = 1,
            /// The token could not be used to authenticate against the Git remote.
            Invalid = 2,
            /// The token was used successfully to authenticate against the Git remote.
            Valid = 3,
        }
        impl TokenStatus {
            /// String value of the enum field names used in the ProtoBuf definition.
            ///
            /// The values are not transformed in any way and thus are considered stable
            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "TOKEN_STATUS_UNSPECIFIED",
                    Self::NotFound => "NOT_FOUND",
                    Self::Invalid => "INVALID",
                    Self::Valid => "VALID",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "TOKEN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
                    "NOT_FOUND" => Some(Self::NotFound),
                    "INVALID" => Some(Self::Invalid),
                    "VALID" => Some(Self::Valid),
                    _ => None,
                }
            }
        }
    }
    /// Configures workspace compilation overrides for a repository. Primarily used
    /// by the UI (`console.cloud.google.com`). `schema_suffix` and `table_prefix`
    /// can have a special expression - `${workspaceName}`, which refers to the
    /// workspace name from which the compilation results will be created. API
    /// callers are expected to resolve the expression in these overrides and
    /// provide them explicitly in `code_compilation_config`
    /// (<https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories.compilationResults#codecompilationconfig>)
    /// when creating workspace-scoped compilation results.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct WorkspaceCompilationOverrides {
        /// Optional. The default database (Google Cloud project ID).
        #[prost(string, tag = "1")]
        pub default_database: ::prost::alloc::string::String,
        /// Optional. The suffix that should be appended to all schema (BigQuery
        /// dataset ID) names.
        #[prost(string, tag = "2")]
        pub schema_suffix: ::prost::alloc::string::String,
        /// Optional. The prefix that should be prepended to all table names.
        #[prost(string, tag = "3")]
        pub table_prefix: ::prost::alloc::string::String,
    }
}
/// Metadata used to identify if a resource is user scoped.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PrivateResourceMetadata {
    /// Output only. If true, this resource is user-scoped, meaning it is either a
    /// workspace or sourced from a workspace.
    #[prost(bool, tag = "1")]
    pub user_scoped: bool,
}
/// `ListRepositories` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListRepositoriesRequest {
    /// Required. The location in which to list repositories. Must be in the format
    /// `projects/*/locations/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Optional. Maximum number of repositories to return. The server may return
    /// fewer items than requested. If unspecified, the server will pick an
    /// appropriate default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListRepositories` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `ListRepositories`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// 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.
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Filter for the returned list.
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `ListRepositories` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListRepositoriesResponse {
    /// List of repositories.
    #[prost(message, repeated, tag = "1")]
    pub repositories: ::prost::alloc::vec::Vec<Repository>,
    /// A token which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `MoveRepository` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveRepositoryRequest {
    /// Required. The full resource name of the repository to move.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The name of the Folder, TeamFolder, or root location to move the
    /// repository to. Can be in the format of: "" to move into the root User
    /// folder, `projects/*/locations/*/folders/*`,
    /// `projects/*/locations/*/teamFolders/*`
    #[prost(string, optional, tag = "2")]
    pub destination_containing_folder: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
}
/// `GetRepository` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetRepositoryRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateRepository` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateRepositoryRequest {
    /// Required. The location in which to create the repository. Must be in the
    /// format `projects/*/locations/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The repository to create.
    #[prost(message, optional, tag = "2")]
    pub repository: ::core::option::Option<Repository>,
    /// Required. The ID to use for the repository, which will become the final
    /// component of the repository's resource name.
    #[prost(string, tag = "3")]
    pub repository_id: ::prost::alloc::string::String,
}
/// `UpdateRepository` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateRepositoryRequest {
    /// Optional. Specifies the fields to be updated in the repository. If left
    /// unset, all fields will be updated.
    #[prost(message, optional, tag = "1")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
    /// Required. The repository to update.
    #[prost(message, optional, tag = "2")]
    pub repository: ::core::option::Option<Repository>,
}
/// `DeleteRepository` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteRepositoryRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. If set to true, child resources of this repository (compilation
    /// results and workflow invocations) will also be deleted. Otherwise, the
    /// request will only succeed if the repository has no child resources.
    ///
    /// **Note:** *This flag doesn't support deletion of workspaces, release
    /// configs or workflow configs. If any of such resources exists in the
    /// repository, the request will fail.*.
    #[prost(bool, tag = "2")]
    pub force: bool,
}
/// `CommitRepositoryChanges` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CommitRepositoryChangesRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The changes to commit to the repository.
    #[prost(message, optional, tag = "2")]
    pub commit_metadata: ::core::option::Option<CommitMetadata>,
    /// Optional. The commit SHA which must be the repository's current HEAD before
    /// applying this commit; otherwise this request will fail. If unset, no
    /// validation on the current HEAD commit SHA is performed.
    #[prost(string, tag = "4")]
    pub required_head_commit_sha: ::prost::alloc::string::String,
    /// Optional. A map to the path of the file to the operation. The path is the
    /// full file path including filename, from repository root.
    #[prost(map = "string, message", tag = "3")]
    pub file_operations: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        commit_repository_changes_request::FileOperation,
    >,
}
/// Nested message and enum types in `CommitRepositoryChangesRequest`.
pub mod commit_repository_changes_request {
    /// Represents a single file operation to the repository.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct FileOperation {
        /// The operation to perform on the file.
        #[prost(oneof = "file_operation::Operation", tags = "1, 2")]
        pub operation: ::core::option::Option<file_operation::Operation>,
    }
    /// Nested message and enum types in `FileOperation`.
    pub mod file_operation {
        /// Represents the write file operation (for files added or modified).
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct WriteFile {
            /// The file's contents.
            #[prost(bytes = "vec", tag = "1")]
            pub contents: ::prost::alloc::vec::Vec<u8>,
        }
        /// Represents the delete file operation.
        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct DeleteFile {}
        /// The operation to perform on the file.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
        pub enum Operation {
            /// Represents the write operation.
            #[prost(message, tag = "1")]
            WriteFile(WriteFile),
            /// Represents the delete operation.
            #[prost(message, tag = "2")]
            DeleteFile(DeleteFile),
        }
    }
}
/// `CommitRepositoryChanges` response message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitRepositoryChangesResponse {
    /// The commit SHA of the current commit.
    #[prost(string, tag = "1")]
    pub commit_sha: ::prost::alloc::string::String,
}
/// `ReadRepositoryFile` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReadRepositoryFileRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The commit SHA for the commit to read from. If unset, the file
    /// will be read from HEAD.
    #[prost(string, tag = "2")]
    pub commit_sha: ::prost::alloc::string::String,
    /// Required. Full file path to read including filename, from repository root.
    #[prost(string, tag = "3")]
    pub path: ::prost::alloc::string::String,
}
/// `ReadRepositoryFile` response message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReadRepositoryFileResponse {
    /// The file's contents.
    #[prost(bytes = "vec", tag = "1")]
    pub contents: ::prost::alloc::vec::Vec<u8>,
}
/// `QueryRepositoryDirectoryContents` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryRepositoryDirectoryContentsRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The Commit SHA for the commit to query from. If unset, the
    /// directory will be queried from HEAD.
    #[prost(string, tag = "2")]
    pub commit_sha: ::prost::alloc::string::String,
    /// Optional. The directory's full path including directory name, relative to
    /// root. If left unset, the root is used.
    #[prost(string, tag = "3")]
    pub path: ::prost::alloc::string::String,
    /// Optional. Maximum number of paths to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "4")]
    pub page_size: i32,
    /// Optional. Page token received from a previous
    /// `QueryRepositoryDirectoryContents` call. Provide this to retrieve the
    /// subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryRepositoryDirectoryContents`, with the exception of `page_size`, must
    /// match the call that provided the page token.
    #[prost(string, tag = "5")]
    pub page_token: ::prost::alloc::string::String,
}
/// `QueryRepositoryDirectoryContents` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryRepositoryDirectoryContentsResponse {
    /// List of entries in the directory.
    #[prost(message, repeated, tag = "1")]
    pub directory_entries: ::prost::alloc::vec::Vec<DirectoryEntry>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// `FetchRepositoryHistory` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchRepositoryHistoryRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. Maximum number of commits to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `FetchRepositoryHistory`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `FetchRepositoryHistory`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "5")]
    pub page_token: ::prost::alloc::string::String,
}
/// `FetchRepositoryHistory` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FetchRepositoryHistoryResponse {
    /// A list of commit logs, ordered by 'git log' default order.
    #[prost(message, repeated, tag = "1")]
    pub commits: ::prost::alloc::vec::Vec<CommitLogEntry>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Represents a single commit log.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitLogEntry {
    /// Commit timestamp.
    #[prost(message, optional, tag = "1")]
    pub commit_time: ::core::option::Option<::prost_types::Timestamp>,
    /// The commit SHA for this commit log entry.
    #[prost(string, tag = "2")]
    pub commit_sha: ::prost::alloc::string::String,
    /// The commit author for this commit log entry.
    #[prost(message, optional, tag = "3")]
    pub author: ::core::option::Option<CommitAuthor>,
    /// The commit message for this commit log entry.
    #[prost(string, tag = "4")]
    pub commit_message: ::prost::alloc::string::String,
}
/// Represents a Dataform Git commit.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitMetadata {
    /// Required. The commit's author.
    #[prost(message, optional, tag = "1")]
    pub author: ::core::option::Option<CommitAuthor>,
    /// Optional. The commit's message.
    #[prost(string, tag = "2")]
    pub commit_message: ::prost::alloc::string::String,
}
/// `ComputeRepositoryAccessTokenStatus` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ComputeRepositoryAccessTokenStatusRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `ComputeRepositoryAccessTokenStatus` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ComputeRepositoryAccessTokenStatusResponse {
    /// Indicates the status of the Git access token.
    #[prost(
        enumeration = "compute_repository_access_token_status_response::TokenStatus",
        tag = "1"
    )]
    pub token_status: i32,
}
/// Nested message and enum types in `ComputeRepositoryAccessTokenStatusResponse`.
pub mod compute_repository_access_token_status_response {
    /// Indicates the status of a Git authentication token.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum TokenStatus {
        /// Default value. This value is unused.
        Unspecified = 0,
        /// The token could not be found in Secret Manager (or the Dataform
        /// Service Account did not have permission to access it).
        NotFound = 1,
        /// The token could not be used to authenticate against the Git remote.
        Invalid = 2,
        /// The token was used successfully to authenticate against the Git remote.
        Valid = 3,
    }
    impl TokenStatus {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "TOKEN_STATUS_UNSPECIFIED",
                Self::NotFound => "NOT_FOUND",
                Self::Invalid => "INVALID",
                Self::Valid => "VALID",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "TOKEN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
                "NOT_FOUND" => Some(Self::NotFound),
                "INVALID" => Some(Self::Invalid),
                "VALID" => Some(Self::Valid),
                _ => None,
            }
        }
    }
}
/// `FetchRemoteBranches` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchRemoteBranchesRequest {
    /// Required. The repository's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `FetchRemoteBranches` response message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchRemoteBranchesResponse {
    /// The remote repository's branch names.
    #[prost(string, repeated, tag = "1")]
    pub branches: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Represents a Dataform Git workspace.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Workspace {
    /// Identifier. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Output only. The timestamp of when the workspace was created.
    #[prost(message, optional, tag = "4")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. A data encryption state of a Git repository if this Workspace
    /// is protected by a KMS key.
    #[prost(message, optional, tag = "2")]
    pub data_encryption_state: ::core::option::Option<DataEncryptionState>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "5")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// Optional. If set to true, workspaces will not be moved if its linked
    /// Repository is moved. Instead, it will be deleted.
    #[prost(bool, optional, tag = "6")]
    pub disable_moves: ::core::option::Option<bool>,
    /// Output only. Metadata indicating whether this resource is user-scoped. For
    /// `Workspace` resources, the `user_scoped` field is always `true`.
    #[prost(message, optional, tag = "8")]
    pub private_resource_metadata: ::core::option::Option<PrivateResourceMetadata>,
}
/// `ListWorkspaces` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListWorkspacesRequest {
    /// Required. The repository in which to list workspaces. Must be in the
    /// format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Optional. Maximum number of workspaces to return. The server may return
    /// fewer items than requested. If unspecified, the server will pick an
    /// appropriate default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListWorkspaces` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `ListWorkspaces`, with
    /// the exception of `page_size`, must match the call that provided the page
    /// token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// 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.
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Filter for the returned list.
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `ListWorkspaces` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListWorkspacesResponse {
    /// List of workspaces.
    #[prost(message, repeated, tag = "1")]
    pub workspaces: ::prost::alloc::vec::Vec<Workspace>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `GetWorkspace` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetWorkspaceRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateWorkspace` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateWorkspaceRequest {
    /// Required. The repository in which to create the workspace. Must be in the
    /// format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The workspace to create.
    #[prost(message, optional, tag = "2")]
    pub workspace: ::core::option::Option<Workspace>,
    /// Required. The ID to use for the workspace, which will become the final
    /// component of the workspace's resource name.
    #[prost(string, tag = "3")]
    pub workspace_id: ::prost::alloc::string::String,
}
/// `DeleteWorkspace` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteWorkspaceRequest {
    /// Required. The workspace resource's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// Represents the author of a Git commit.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitAuthor {
    /// Required. The commit author's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The commit author's email address.
    #[prost(string, tag = "2")]
    pub email_address: ::prost::alloc::string::String,
}
/// `PullGitCommits` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PullGitCommitsRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The name of the branch in the Git remote from which to pull
    /// commits. If left unset, the repository's default branch name will be used.
    #[prost(string, tag = "2")]
    pub remote_branch: ::prost::alloc::string::String,
    /// Required. The author of any merge commit which may be created as a result
    /// of merging fetched Git commits into this workspace.
    #[prost(message, optional, tag = "3")]
    pub author: ::core::option::Option<CommitAuthor>,
}
/// `PullGitCommits` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PullGitCommitsResponse {}
/// `PushGitCommits` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PushGitCommitsRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The name of the branch in the Git remote to which commits should
    /// be pushed. If left unset, the repository's default branch name will be
    /// used.
    #[prost(string, tag = "2")]
    pub remote_branch: ::prost::alloc::string::String,
}
/// `PushGitCommits` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PushGitCommitsResponse {}
/// `FetchFileGitStatuses` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchFileGitStatusesRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `FetchFileGitStatuses` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FetchFileGitStatusesResponse {
    /// A list of all files which have uncommitted Git changes. There will only be
    /// a single entry for any given file.
    #[prost(message, repeated, tag = "1")]
    pub uncommitted_file_changes: ::prost::alloc::vec::Vec<
        fetch_file_git_statuses_response::UncommittedFileChange,
    >,
}
/// Nested message and enum types in `FetchFileGitStatusesResponse`.
pub mod fetch_file_git_statuses_response {
    /// Represents the Git state of a file with uncommitted changes.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct UncommittedFileChange {
        /// The file's full path including filename, relative to the workspace root.
        #[prost(string, tag = "1")]
        pub path: ::prost::alloc::string::String,
        /// Output only. Indicates the status of the file.
        #[prost(enumeration = "uncommitted_file_change::State", tag = "2")]
        pub state: i32,
    }
    /// Nested message and enum types in `UncommittedFileChange`.
    pub mod uncommitted_file_change {
        /// Indicates the status of an uncommitted file change.
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum State {
            /// Default value. This value is unused.
            Unspecified = 0,
            /// The file has been newly added.
            Added = 1,
            /// The file has been deleted.
            Deleted = 2,
            /// The file has been modified.
            Modified = 3,
            /// The file contains merge conflicts.
            HasConflicts = 4,
        }
        impl State {
            /// String value of the enum field names used in the ProtoBuf definition.
            ///
            /// The values are not transformed in any way and thus are considered stable
            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "STATE_UNSPECIFIED",
                    Self::Added => "ADDED",
                    Self::Deleted => "DELETED",
                    Self::Modified => "MODIFIED",
                    Self::HasConflicts => "HAS_CONFLICTS",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "STATE_UNSPECIFIED" => Some(Self::Unspecified),
                    "ADDED" => Some(Self::Added),
                    "DELETED" => Some(Self::Deleted),
                    "MODIFIED" => Some(Self::Modified),
                    "HAS_CONFLICTS" => Some(Self::HasConflicts),
                    _ => None,
                }
            }
        }
    }
}
/// `FetchGitAheadBehind` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchGitAheadBehindRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// 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.
    #[prost(string, tag = "2")]
    pub remote_branch: ::prost::alloc::string::String,
}
/// `FetchGitAheadBehind` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchGitAheadBehindResponse {
    /// The number of commits in the remote branch that are not in the workspace.
    #[prost(int32, tag = "1")]
    pub commits_ahead: i32,
    /// The number of commits in the workspace that are not in the remote branch.
    #[prost(int32, tag = "2")]
    pub commits_behind: i32,
}
/// `CommitWorkspaceChanges` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitWorkspaceChangesRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The commit's author.
    #[prost(message, optional, tag = "4")]
    pub author: ::core::option::Option<CommitAuthor>,
    /// Optional. The commit's message.
    #[prost(string, tag = "2")]
    pub commit_message: ::prost::alloc::string::String,
    /// Optional. Full file paths to commit including filename, rooted at workspace
    /// root. If left empty, all files will be committed.
    #[prost(string, repeated, tag = "3")]
    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `CommitWorkspaceChanges` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitWorkspaceChangesResponse {}
/// `ResetWorkspaceChanges` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ResetWorkspaceChangesRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. Full file paths to reset back to their committed state including
    /// filename, rooted at workspace root. If left empty, all files will be reset.
    #[prost(string, repeated, tag = "2")]
    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Optional. If set to true, untracked files will be deleted.
    #[prost(bool, tag = "3")]
    pub clean: bool,
}
/// `ResetWorkspaceChanges` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ResetWorkspaceChangesResponse {}
/// `FetchFileDiff` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchFileDiffRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The file's full path including filename, relative to the
    /// workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
}
/// `FetchFileDiff` response message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchFileDiffResponse {
    /// The raw formatted Git diff for the file.
    #[prost(string, tag = "1")]
    pub formatted_diff: ::prost::alloc::string::String,
}
/// `QueryDirectoryContents` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryDirectoryContentsRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Optional. The directory's full path including directory name, relative to
    /// the workspace root. If left unset, the workspace root is used.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
    /// Optional. Maximum number of paths to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "3")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `QueryDirectoryContents`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryDirectoryContents`, with the exception of `page_size`, must match the
    /// call that provided the page token.
    #[prost(string, tag = "4")]
    pub page_token: ::prost::alloc::string::String,
}
/// `QueryDirectoryContents` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryDirectoryContentsResponse {
    /// List of entries in the directory.
    #[prost(message, repeated, tag = "1")]
    pub directory_entries: ::prost::alloc::vec::Vec<DirectoryEntry>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Represents a single entry in a directory.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DirectoryEntry {
    /// The entry's contents.
    #[prost(oneof = "directory_entry::Entry", tags = "1, 2")]
    pub entry: ::core::option::Option<directory_entry::Entry>,
}
/// Nested message and enum types in `DirectoryEntry`.
pub mod directory_entry {
    /// The entry's contents.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum Entry {
        /// A file in the directory.
        #[prost(string, tag = "1")]
        File(::prost::alloc::string::String),
        /// A child directory in the directory.
        #[prost(string, tag = "2")]
        Directory(::prost::alloc::string::String),
    }
}
/// Configuration containing file search request parameters.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SearchFilesRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Optional. Maximum number of search results to return. The server may return
    /// fewer items than requested. If unspecified, the server will pick an
    /// appropriate default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `SearchFilesRequest`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `SearchFilesRequest`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Optional filter for the returned list in filtering format.
    /// Filtering is only currently supported on the `path` field.
    /// See <https://google.aip.dev/160> for details.
    #[prost(string, tag = "4")]
    pub filter: ::prost::alloc::string::String,
}
/// Client-facing representation of a file search response.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchFilesResponse {
    /// List of matched results.
    #[prost(message, repeated, tag = "1")]
    pub search_results: ::prost::alloc::vec::Vec<SearchResult>,
    /// Optional. A token, which can be sent as `page_token` to retrieve the next
    /// page. If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Client-facing representation of a search result entry.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SearchResult {
    /// The entry's contents.
    #[prost(oneof = "search_result::Entry", tags = "1, 2")]
    pub entry: ::core::option::Option<search_result::Entry>,
}
/// Nested message and enum types in `SearchResult`.
pub mod search_result {
    /// The entry's contents.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum Entry {
        /// Details when search result is a file.
        #[prost(message, tag = "1")]
        File(super::FileSearchResult),
        /// Details when search result is a directory.
        #[prost(message, tag = "2")]
        Directory(super::DirectorySearchResult),
    }
}
/// Client-facing representation of a file entry in search results.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FileSearchResult {
    /// File system path relative to the workspace root.
    #[prost(string, tag = "1")]
    pub path: ::prost::alloc::string::String,
}
/// Client-facing representation of a directory entry in search results.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DirectorySearchResult {
    /// File system path relative to the workspace root.
    #[prost(string, tag = "1")]
    pub path: ::prost::alloc::string::String,
}
/// `MakeDirectory` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MakeDirectoryRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The directory's full path including directory name, relative to
    /// the workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
}
/// `MakeDirectory` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MakeDirectoryResponse {}
/// `RemoveDirectory` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveDirectoryRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The directory's full path including directory name, relative to
    /// the workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
}
/// `RemoveDirectory` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveDirectoryResponse {}
/// `MoveDirectory` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveDirectoryRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The directory's full path including directory name, relative to
    /// the workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
    /// Required. The new path for the directory including directory name, rooted
    /// at workspace root.
    #[prost(string, tag = "3")]
    pub new_path: ::prost::alloc::string::String,
}
/// `MoveDirectory` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveDirectoryResponse {}
/// `ReadFile` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReadFileRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The file's full path including filename, relative to the
    /// workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
    /// Optional. The Git revision of the file to return. If left empty, the
    /// current contents of `path` will be returned.
    #[prost(string, tag = "3")]
    pub revision: ::prost::alloc::string::String,
}
/// `ReadFile` response message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReadFileResponse {
    /// The file's contents.
    #[prost(bytes = "vec", tag = "1")]
    pub file_contents: ::prost::alloc::vec::Vec<u8>,
}
/// `RemoveFile` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveFileRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The file's full path including filename, relative to the
    /// workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
}
/// `RemoveFile` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveFileResponse {}
/// `MoveFile` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveFileRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The file's full path including filename, relative to the
    /// workspace root.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
    /// Required. The file's new path including filename, relative to the workspace
    /// root.
    #[prost(string, tag = "3")]
    pub new_path: ::prost::alloc::string::String,
}
/// `MoveFile` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveFileResponse {}
/// `WriteFile` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct WriteFileRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
    /// Required. The file.
    #[prost(string, tag = "2")]
    pub path: ::prost::alloc::string::String,
    /// Required. The file's contents.
    #[prost(bytes = "vec", tag = "3")]
    pub contents: ::prost::alloc::vec::Vec<u8>,
}
/// `WriteFile` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct WriteFileResponse {}
/// `InstallNpmPackages` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InstallNpmPackagesRequest {
    /// Required. The workspace's name.
    #[prost(string, tag = "1")]
    pub workspace: ::prost::alloc::string::String,
}
/// `InstallNpmPackages` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InstallNpmPackagesResponse {}
/// Represents a Dataform release configuration.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReleaseConfig {
    /// Identifier. The release config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. Git commit/tag/branch name at which the repository should be
    /// compiled. Must exist in the remote repository. Examples:
    ///
    /// * a commit SHA: `12ade345`
    /// * a tag: `tag1`
    /// * a branch name: `branch1`
    #[prost(string, tag = "2")]
    pub git_commitish: ::prost::alloc::string::String,
    /// Optional. If set, fields of `code_compilation_config` override the default
    /// compilation settings that are specified in dataform.json.
    #[prost(message, optional, tag = "3")]
    pub code_compilation_config: ::core::option::Option<CodeCompilationConfig>,
    /// Optional. Optional schedule (in cron format) for automatic creation of
    /// compilation results.
    #[prost(string, tag = "4")]
    pub cron_schedule: ::prost::alloc::string::String,
    /// Optional. Specifies the time zone to be used when interpreting
    /// cron_schedule. Must be a time zone name from the time zone database
    /// (<https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>). If left
    /// unspecified, the default is UTC.
    #[prost(string, tag = "7")]
    pub time_zone: ::prost::alloc::string::String,
    /// Output only. Records of the 10 most recent scheduled release attempts,
    /// ordered in descending order of `release_time`. Updated whenever automatic
    /// creation of a compilation result is triggered by cron_schedule.
    #[prost(message, repeated, tag = "5")]
    pub recent_scheduled_release_records: ::prost::alloc::vec::Vec<
        release_config::ScheduledReleaseRecord,
    >,
    /// Optional. The name of the currently released compilation result for this
    /// release config. This value is updated when a compilation result is
    /// automatically created from this release config (using cron_schedule), or
    /// when this resource is updated by API call (perhaps to roll back to an
    /// earlier release). The compilation result must have been created using this
    /// release config. Must be in the format
    /// `projects/*/locations/*/repositories/*/compilationResults/*`.
    #[prost(string, tag = "6")]
    pub release_compilation_result: ::prost::alloc::string::String,
    /// Optional. Disables automatic creation of compilation results.
    #[prost(bool, tag = "8")]
    pub disabled: bool,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "9")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `ReleaseConfig`.
pub mod release_config {
    /// A record of an attempt to create a compilation result for this release
    /// config.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ScheduledReleaseRecord {
        /// Output only. The timestamp of this release attempt.
        #[prost(message, optional, tag = "1")]
        pub release_time: ::core::option::Option<::prost_types::Timestamp>,
        /// The result of this release attempt.
        #[prost(oneof = "scheduled_release_record::Result", tags = "2, 3")]
        pub result: ::core::option::Option<scheduled_release_record::Result>,
    }
    /// Nested message and enum types in `ScheduledReleaseRecord`.
    pub mod scheduled_release_record {
        /// The result of this release attempt.
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Result {
            /// The name of the created compilation result, if one was successfully
            /// created. Must be in the format
            /// `projects/*/locations/*/repositories/*/compilationResults/*`.
            #[prost(string, tag = "2")]
            CompilationResult(::prost::alloc::string::String),
            /// The error status encountered upon this attempt to create the
            /// compilation result, if the attempt was unsuccessful.
            #[prost(message, tag = "3")]
            ErrorStatus(super::super::super::super::super::rpc::Status),
        }
    }
}
/// `ListReleaseConfigs` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListReleaseConfigsRequest {
    /// Required. The repository in which to list release configs. Must be in the
    /// format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListReleaseConfigs` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `ListReleaseConfigs`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
}
/// `ListReleaseConfigs` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListReleaseConfigsResponse {
    /// List of release configs.
    #[prost(message, repeated, tag = "1")]
    pub release_configs: ::prost::alloc::vec::Vec<ReleaseConfig>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `GetReleaseConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetReleaseConfigRequest {
    /// Required. The release config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateReleaseConfig` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateReleaseConfigRequest {
    /// Required. The repository in which to create the release config. Must be in
    /// the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The release config to create.
    #[prost(message, optional, tag = "2")]
    pub release_config: ::core::option::Option<ReleaseConfig>,
    /// Required. The ID to use for the release config, which will become the final
    /// component of the release config's resource name.
    #[prost(string, tag = "3")]
    pub release_config_id: ::prost::alloc::string::String,
}
/// `UpdateReleaseConfig` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateReleaseConfigRequest {
    /// Optional. Specifies the fields to be updated in the release config. If left
    /// unset, all fields will be updated.
    #[prost(message, optional, tag = "1")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
    /// Required. The release config to update.
    #[prost(message, optional, tag = "2")]
    pub release_config: ::core::option::Option<ReleaseConfig>,
}
/// `DeleteReleaseConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteReleaseConfigRequest {
    /// Required. The release config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// Represents the result of compiling a Dataform project.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CompilationResult {
    /// Output only. The compilation result's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Immutable. If set, fields of `code_compilation_config` override the default
    /// compilation settings that are specified in dataform.json.
    #[prost(message, optional, tag = "4")]
    pub code_compilation_config: ::core::option::Option<CodeCompilationConfig>,
    /// Output only. The fully resolved Git commit SHA of the code that was
    /// compiled. Not set for compilation results whose source is a workspace.
    #[prost(string, tag = "8")]
    pub resolved_git_commit_sha: ::prost::alloc::string::String,
    /// Output only. The version of `@dataform/core` that was used for compilation.
    #[prost(string, tag = "5")]
    pub dataform_core_version: ::prost::alloc::string::String,
    /// Output only. Errors encountered during project compilation.
    #[prost(message, repeated, tag = "6")]
    pub compilation_errors: ::prost::alloc::vec::Vec<
        compilation_result::CompilationError,
    >,
    /// Output only. Only set if the repository has a KMS Key.
    #[prost(message, optional, tag = "9")]
    pub data_encryption_state: ::core::option::Option<DataEncryptionState>,
    /// Output only. The timestamp of when the compilation result was created.
    #[prost(message, optional, tag = "10")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "11")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. Metadata indicating whether this resource is user-scoped.
    /// `CompilationResult` resource is `user_scoped` only if it is sourced
    /// from a workspace.
    #[prost(message, optional, tag = "12")]
    pub private_resource_metadata: ::core::option::Option<PrivateResourceMetadata>,
    /// The source of the compilation result.
    #[prost(oneof = "compilation_result::Source", tags = "2, 3, 7")]
    pub source: ::core::option::Option<compilation_result::Source>,
}
/// Nested message and enum types in `CompilationResult`.
pub mod compilation_result {
    /// An error encountered when attempting to compile a Dataform project.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct CompilationError {
        /// Output only. The error's top level message.
        #[prost(string, tag = "1")]
        pub message: ::prost::alloc::string::String,
        /// Output only. The error's full stack trace.
        #[prost(string, tag = "2")]
        pub stack: ::prost::alloc::string::String,
        /// Output only. The path of the file where this error occurred, if
        /// available, relative to the project root.
        #[prost(string, tag = "3")]
        pub path: ::prost::alloc::string::String,
        /// Output only. The identifier of the action where this error occurred, if
        /// available.
        #[prost(message, optional, tag = "4")]
        pub action_target: ::core::option::Option<super::Target>,
    }
    /// The source of the compilation result.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum Source {
        /// Immutable. Git commit/tag/branch name at which the repository should be
        /// compiled. Must exist in the remote repository. Examples:
        ///
        /// * a commit SHA: `12ade345`
        /// * a tag: `tag1`
        /// * a branch name: `branch1`
        #[prost(string, tag = "2")]
        GitCommitish(::prost::alloc::string::String),
        /// Immutable. The name of the workspace to compile. Must be in the format
        /// `projects/*/locations/*/repositories/*/workspaces/*`.
        #[prost(string, tag = "3")]
        Workspace(::prost::alloc::string::String),
        /// Immutable. The name of the release config to compile. Must be in the
        /// format `projects/*/locations/*/repositories/*/releaseConfigs/*`.
        #[prost(string, tag = "7")]
        ReleaseConfig(::prost::alloc::string::String),
    }
}
/// Configures various aspects of Dataform code compilation.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CodeCompilationConfig {
    /// Optional. The default database (Google Cloud project ID).
    #[prost(string, tag = "1")]
    pub default_database: ::prost::alloc::string::String,
    /// Optional. The default schema (BigQuery dataset ID).
    #[prost(string, tag = "2")]
    pub default_schema: ::prost::alloc::string::String,
    /// Optional. The default BigQuery location to use. Defaults to "US".
    /// See the BigQuery docs for a full list of locations:
    /// <https://cloud.google.com/bigquery/docs/locations.>
    #[prost(string, tag = "8")]
    pub default_location: ::prost::alloc::string::String,
    /// Optional. The default schema (BigQuery dataset ID) for assertions.
    #[prost(string, tag = "3")]
    pub assertion_schema: ::prost::alloc::string::String,
    /// Optional. User-defined variables that are made available to project code
    /// during compilation.
    #[prost(map = "string, string", tag = "4")]
    pub vars: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    /// Optional. The suffix that should be appended to all database (Google Cloud
    /// project ID) names.
    #[prost(string, tag = "5")]
    pub database_suffix: ::prost::alloc::string::String,
    /// Optional. The suffix that should be appended to all schema (BigQuery
    /// dataset ID) names.
    #[prost(string, tag = "6")]
    pub schema_suffix: ::prost::alloc::string::String,
    /// Optional. The prefix that should be prepended to all table names.
    #[prost(string, tag = "7")]
    pub table_prefix: ::prost::alloc::string::String,
    /// Optional. The prefix to prepend to built-in assertion names.
    #[prost(string, tag = "10")]
    pub builtin_assertion_name_prefix: ::prost::alloc::string::String,
    /// Optional. The default notebook runtime options.
    #[prost(message, optional, tag = "9")]
    pub default_notebook_runtime_options: ::core::option::Option<NotebookRuntimeOptions>,
}
/// Configures various aspects of Dataform notebook runtime.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NotebookRuntimeOptions {
    /// Optional. The resource name of the \[Colab runtime template\]
    /// (<https://cloud.google.com/colab/docs/runtimes>), from which a runtime is
    /// created for notebook executions. If not specified, a runtime is created
    /// with Colab's default specifications.
    #[prost(string, tag = "2")]
    pub ai_platform_notebook_runtime_template: ::prost::alloc::string::String,
    /// The location to store the notebook execution result.
    #[prost(oneof = "notebook_runtime_options::ExecutionSink", tags = "1")]
    pub execution_sink: ::core::option::Option<notebook_runtime_options::ExecutionSink>,
}
/// Nested message and enum types in `NotebookRuntimeOptions`.
pub mod notebook_runtime_options {
    /// The location to store the notebook execution result.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum ExecutionSink {
        /// Optional. The Google Cloud Storage location to upload the result to.
        /// Format: `gs://bucket-name`.
        #[prost(string, tag = "1")]
        GcsOutputBucket(::prost::alloc::string::String),
    }
}
/// `ListCompilationResults` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListCompilationResultsRequest {
    /// Required. The repository in which to list compilation results. Must be in
    /// the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListCompilationResults`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `ListCompilationResults`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. This field only supports ordering by `name` and `create_time`.
    /// If unspecified, the server will choose the ordering.
    /// If specified, the default order is ascending for the `name` field.
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Filter for the returned list.
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `ListCompilationResults` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListCompilationResultsResponse {
    /// List of compilation results.
    #[prost(message, repeated, tag = "1")]
    pub compilation_results: ::prost::alloc::vec::Vec<CompilationResult>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `GetCompilationResult` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetCompilationResultRequest {
    /// Required. The compilation result's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateCompilationResult` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateCompilationResultRequest {
    /// Required. The repository in which to create the compilation result. Must be
    /// in the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The compilation result to create.
    #[prost(message, optional, tag = "2")]
    pub compilation_result: ::core::option::Option<CompilationResult>,
}
/// Represents an action identifier. If the action writes output, the output
/// will be written to the referenced database object.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Target {
    /// Optional. The action's database (Google Cloud project ID) .
    #[prost(string, tag = "1")]
    pub database: ::prost::alloc::string::String,
    /// Optional. The action's schema (BigQuery dataset ID), within `database`.
    #[prost(string, tag = "2")]
    pub schema: ::prost::alloc::string::String,
    /// Optional. The action's name, within `database` and `schema`.
    #[prost(string, tag = "3")]
    pub name: ::prost::alloc::string::String,
}
/// Describes a relation and its columns.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RelationDescriptor {
    /// A text description of the relation.
    #[prost(string, tag = "1")]
    pub description: ::prost::alloc::string::String,
    /// A list of descriptions of columns within the relation.
    #[prost(message, repeated, tag = "2")]
    pub columns: ::prost::alloc::vec::Vec<relation_descriptor::ColumnDescriptor>,
    /// A set of BigQuery labels that should be applied to the relation.
    #[prost(map = "string, string", tag = "3")]
    pub bigquery_labels: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
}
/// Nested message and enum types in `RelationDescriptor`.
pub mod relation_descriptor {
    /// Describes a column.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct ColumnDescriptor {
        /// The identifier for the column. Each entry in `path` represents one level
        /// of nesting.
        #[prost(string, repeated, tag = "1")]
        pub path: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// A textual description of the column.
        #[prost(string, tag = "2")]
        pub description: ::prost::alloc::string::String,
        /// A list of BigQuery policy tags that will be applied to the column.
        #[prost(string, repeated, tag = "3")]
        pub bigquery_policy_tags: ::prost::alloc::vec::Vec<
            ::prost::alloc::string::String,
        >,
    }
}
/// Represents a single Dataform action in a compilation result.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CompilationResultAction {
    /// This action's identifier. Unique within the compilation result.
    #[prost(message, optional, tag = "1")]
    pub target: ::core::option::Option<Target>,
    /// The action's identifier if the project had been compiled without any
    /// overrides configured. Unique within the compilation result.
    #[prost(message, optional, tag = "2")]
    pub canonical_target: ::core::option::Option<Target>,
    /// The full path including filename in which this action is located, relative
    /// to the workspace root.
    #[prost(string, tag = "3")]
    pub file_path: ::prost::alloc::string::String,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "10")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// The compiled object.
    #[prost(
        oneof = "compilation_result_action::CompiledObject",
        tags = "4, 5, 6, 7, 8, 9"
    )]
    pub compiled_object: ::core::option::Option<
        compilation_result_action::CompiledObject,
    >,
}
/// Nested message and enum types in `CompilationResultAction`.
pub mod compilation_result_action {
    /// Represents a database relation.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Relation {
        /// A list of actions that this action depends on.
        #[prost(message, repeated, tag = "1")]
        pub dependency_targets: ::prost::alloc::vec::Vec<super::Target>,
        /// Whether this action is disabled (i.e. should not be run).
        #[prost(bool, tag = "2")]
        pub disabled: bool,
        /// Arbitrary, user-defined tags on this action.
        #[prost(string, repeated, tag = "3")]
        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// Descriptor for the relation and its columns.
        #[prost(message, optional, tag = "4")]
        pub relation_descriptor: ::core::option::Option<super::RelationDescriptor>,
        /// The type of this relation.
        #[prost(enumeration = "relation::RelationType", tag = "5")]
        pub relation_type: i32,
        /// The SELECT query which returns rows which this relation should contain.
        #[prost(string, tag = "6")]
        pub select_query: ::prost::alloc::string::String,
        /// SQL statements to be executed before creating the relation.
        #[prost(string, repeated, tag = "7")]
        pub pre_operations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// SQL statements to be executed after creating the relation.
        #[prost(string, repeated, tag = "8")]
        pub post_operations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// Configures `INCREMENTAL_TABLE` settings for this relation. Only set if
        /// `relation_type` is `INCREMENTAL_TABLE`.
        #[prost(message, optional, tag = "9")]
        pub incremental_table_config: ::core::option::Option<
            relation::IncrementalTableConfig,
        >,
        /// The SQL expression used to partition the relation.
        #[prost(string, tag = "10")]
        pub partition_expression: ::prost::alloc::string::String,
        /// A list of columns or SQL expressions used to cluster the table.
        #[prost(string, repeated, tag = "11")]
        pub cluster_expressions: ::prost::alloc::vec::Vec<
            ::prost::alloc::string::String,
        >,
        /// Sets the partition expiration in days.
        #[prost(int32, tag = "12")]
        pub partition_expiration_days: i32,
        /// Specifies whether queries on this table must include a predicate filter
        /// that filters on the partitioning column.
        #[prost(bool, tag = "13")]
        pub require_partition_filter: bool,
        /// Additional options that will be provided as key/value pairs into the
        /// options clause of a create table/view statement. See
        /// <https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language>
        /// for more information on which options are supported.
        #[prost(map = "string, string", tag = "14")]
        pub additional_options: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            ::prost::alloc::string::String,
        >,
        /// Optional. The connection specifying the credentials to be used to read
        /// and write to external storage, such as Cloud Storage. The connection can
        /// have the form `{project}.{location}.{connection_id}` or
        /// `projects/{project}/locations/{location}/connections/{connection_id}`,
        /// or be set to DEFAULT.
        #[prost(string, tag = "15")]
        pub connection: ::prost::alloc::string::String,
        /// Optional. The table format for the BigQuery table.
        #[prost(enumeration = "relation::TableFormat", tag = "16")]
        pub table_format: i32,
        /// Optional. The file format for the BigQuery table.
        #[prost(enumeration = "relation::FileFormat", tag = "17")]
        pub file_format: i32,
        /// Optional. The fully qualified location prefix of the external folder
        /// where table data is stored. The URI should be in the format
        /// `gs://bucket/path_to_table/`.
        #[prost(string, tag = "18")]
        pub storage_uri: ::prost::alloc::string::String,
    }
    /// Nested message and enum types in `Relation`.
    pub mod relation {
        /// Contains settings for relations of type `INCREMENTAL_TABLE`.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct IncrementalTableConfig {
            /// The SELECT query which returns rows which should be inserted into the
            /// relation if it already exists and is not being refreshed.
            #[prost(string, tag = "1")]
            pub incremental_select_query: ::prost::alloc::string::String,
            /// Whether this table should be protected from being refreshed.
            #[prost(bool, tag = "2")]
            pub refresh_disabled: bool,
            /// A set of columns or SQL expressions used to define row uniqueness.
            /// If any duplicates are discovered (as defined by `unique_key_parts`),
            /// only the newly selected rows (as defined by `incremental_select_query`)
            /// will be included in the relation.
            #[prost(string, repeated, tag = "3")]
            pub unique_key_parts: ::prost::alloc::vec::Vec<
                ::prost::alloc::string::String,
            >,
            /// A SQL expression conditional used to limit the set of existing rows
            /// considered for a merge operation (see `unique_key_parts` for more
            /// information).
            #[prost(string, tag = "4")]
            pub update_partition_filter: ::prost::alloc::string::String,
            /// SQL statements to be executed before inserting new rows into the
            /// relation.
            #[prost(string, repeated, tag = "5")]
            pub incremental_pre_operations: ::prost::alloc::vec::Vec<
                ::prost::alloc::string::String,
            >,
            /// SQL statements to be executed after inserting new rows into the
            /// relation.
            #[prost(string, repeated, tag = "6")]
            pub incremental_post_operations: ::prost::alloc::vec::Vec<
                ::prost::alloc::string::String,
            >,
        }
        /// Indicates the type of this relation.
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum RelationType {
            /// Default value. This value is unused.
            Unspecified = 0,
            /// The relation is a table.
            Table = 1,
            /// The relation is a view.
            View = 2,
            /// The relation is an incrementalized table.
            IncrementalTable = 3,
            /// The relation is a materialized view.
            MaterializedView = 4,
        }
        impl RelationType {
            /// String value of the enum field names used in the ProtoBuf definition.
            ///
            /// The values are not transformed in any way and thus are considered stable
            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "RELATION_TYPE_UNSPECIFIED",
                    Self::Table => "TABLE",
                    Self::View => "VIEW",
                    Self::IncrementalTable => "INCREMENTAL_TABLE",
                    Self::MaterializedView => "MATERIALIZED_VIEW",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "RELATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
                    "TABLE" => Some(Self::Table),
                    "VIEW" => Some(Self::View),
                    "INCREMENTAL_TABLE" => Some(Self::IncrementalTable),
                    "MATERIALIZED_VIEW" => Some(Self::MaterializedView),
                    _ => None,
                }
            }
        }
        /// Supported table formats for BigQuery tables.
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum TableFormat {
            /// Default value.
            Unspecified = 0,
            /// Apache Iceberg format.
            Iceberg = 1,
        }
        impl TableFormat {
            /// String value of the enum field names used in the ProtoBuf definition.
            ///
            /// The values are not transformed in any way and thus are considered stable
            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "TABLE_FORMAT_UNSPECIFIED",
                    Self::Iceberg => "ICEBERG",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "TABLE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
                    "ICEBERG" => Some(Self::Iceberg),
                    _ => None,
                }
            }
        }
        /// Supported file formats for BigQuery tables.
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum FileFormat {
            /// Default value.
            Unspecified = 0,
            /// Apache Parquet format.
            Parquet = 1,
        }
        impl FileFormat {
            /// String value of the enum field names used in the ProtoBuf definition.
            ///
            /// The values are not transformed in any way and thus are considered stable
            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
                    Self::Parquet => "PARQUET",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
                    "PARQUET" => Some(Self::Parquet),
                    _ => None,
                }
            }
        }
    }
    /// Represents a list of arbitrary database operations.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Operations {
        /// A list of actions that this action depends on.
        #[prost(message, repeated, tag = "1")]
        pub dependency_targets: ::prost::alloc::vec::Vec<super::Target>,
        /// Whether this action is disabled (i.e. should not be run).
        #[prost(bool, tag = "2")]
        pub disabled: bool,
        /// Arbitrary, user-defined tags on this action.
        #[prost(string, repeated, tag = "3")]
        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// Descriptor for any output relation and its columns. Only set if
        /// `has_output` is true.
        #[prost(message, optional, tag = "6")]
        pub relation_descriptor: ::core::option::Option<super::RelationDescriptor>,
        /// A list of arbitrary SQL statements that will be executed without
        /// alteration.
        #[prost(string, repeated, tag = "4")]
        pub queries: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// Whether these operations produce an output relation.
        #[prost(bool, tag = "5")]
        pub has_output: bool,
    }
    /// Represents an assertion upon a SQL query which is required return zero
    /// rows.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Assertion {
        /// A list of actions that this action depends on.
        #[prost(message, repeated, tag = "1")]
        pub dependency_targets: ::prost::alloc::vec::Vec<super::Target>,
        /// The parent action of this assertion. Only set if this assertion was
        /// automatically generated.
        #[prost(message, optional, tag = "5")]
        pub parent_action: ::core::option::Option<super::Target>,
        /// Whether this action is disabled (i.e. should not be run).
        #[prost(bool, tag = "2")]
        pub disabled: bool,
        /// Arbitrary, user-defined tags on this action.
        #[prost(string, repeated, tag = "3")]
        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// The SELECT query which must return zero rows in order for this assertion
        /// to succeed.
        #[prost(string, tag = "4")]
        pub select_query: ::prost::alloc::string::String,
        /// Descriptor for the assertion's automatically-generated view and its
        /// columns.
        #[prost(message, optional, tag = "6")]
        pub relation_descriptor: ::core::option::Option<super::RelationDescriptor>,
    }
    /// Represents a relation which is not managed by Dataform but which may be
    /// referenced by Dataform actions.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Declaration {
        /// Descriptor for the relation and its columns. Used as documentation only,
        /// i.e. values here will result in no changes to the relation's metadata.
        #[prost(message, optional, tag = "1")]
        pub relation_descriptor: ::core::option::Option<super::RelationDescriptor>,
    }
    /// Represents a notebook.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Notebook {
        /// A list of actions that this action depends on.
        #[prost(message, repeated, tag = "1")]
        pub dependency_targets: ::prost::alloc::vec::Vec<super::Target>,
        /// Whether this action is disabled (i.e. should not be run).
        #[prost(bool, tag = "2")]
        pub disabled: bool,
        /// The contents of the notebook.
        #[prost(string, tag = "3")]
        pub contents: ::prost::alloc::string::String,
        /// Arbitrary, user-defined tags on this action.
        #[prost(string, repeated, tag = "4")]
        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    }
    /// Defines a compiled Data Preparation entity
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct DataPreparation {
        /// A list of actions that this action depends on.
        #[prost(message, repeated, tag = "1")]
        pub dependency_targets: ::prost::alloc::vec::Vec<super::Target>,
        /// Whether this action is disabled (i.e. should not be run).
        #[prost(bool, tag = "2")]
        pub disabled: bool,
        /// Arbitrary, user-defined tags on this action.
        #[prost(string, repeated, tag = "4")]
        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        /// The definition for the data preparation.
        #[prost(oneof = "data_preparation::Definition", tags = "5, 6")]
        pub definition: ::core::option::Option<data_preparation::Definition>,
    }
    /// Nested message and enum types in `DataPreparation`.
    pub mod data_preparation {
        /// Definition of a SQL Data Preparation
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct SqlDefinition {
            /// The SQL query representing the data preparation steps. Formatted as a
            /// Pipe SQL query statement.
            #[prost(string, tag = "1")]
            pub query: ::prost::alloc::string::String,
            /// Error table configuration,
            #[prost(message, optional, tag = "2")]
            pub error_table: ::core::option::Option<ErrorTable>,
            /// Load configuration.
            #[prost(message, optional, tag = "3")]
            pub load: ::core::option::Option<super::LoadConfig>,
        }
        /// Error table information, used to write error data into a BigQuery
        /// table.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ErrorTable {
            /// Error Table target.
            #[prost(message, optional, tag = "1")]
            pub target: ::core::option::Option<super::super::Target>,
            /// Error table partition expiration in days. Only positive values are
            /// allowed.
            #[prost(int32, tag = "2")]
            pub retention_days: i32,
        }
        /// The definition for the data preparation.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
        pub enum Definition {
            /// The data preparation definition, stored as a YAML string.
            #[prost(string, tag = "5")]
            ContentsYaml(::prost::alloc::string::String),
            /// SQL definition for a Data Preparation. Contains a SQL query and
            /// additional context information.
            #[prost(message, tag = "6")]
            ContentsSql(SqlDefinition),
        }
    }
    /// Simplified load configuration for actions
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct LoadConfig {
        /// Load mode
        #[prost(oneof = "load_config::Mode", tags = "1, 2, 3, 4")]
        pub mode: ::core::option::Option<load_config::Mode>,
    }
    /// Nested message and enum types in `LoadConfig`.
    pub mod load_config {
        /// Load mode
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
        pub enum Mode {
            /// Replace destination table
            #[prost(message, tag = "1")]
            Replace(super::SimpleLoadMode),
            /// Append into destination table
            #[prost(message, tag = "2")]
            Append(super::SimpleLoadMode),
            /// Insert records where the value exceeds the previous maximum value for a
            /// column in the destination table
            #[prost(message, tag = "3")]
            Maximum(super::IncrementalLoadMode),
            /// Insert records where the value of a column is not already present in
            /// the destination table
            #[prost(message, tag = "4")]
            Unique(super::IncrementalLoadMode),
        }
    }
    /// Simple load definition
    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct SimpleLoadMode {}
    /// Load definition for incremental load modes
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct IncrementalLoadMode {
        /// Column name for incremental load modes
        #[prost(string, tag = "1")]
        pub column: ::prost::alloc::string::String,
    }
    /// The compiled object.
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum CompiledObject {
        /// The database relation created/updated by this action.
        #[prost(message, tag = "4")]
        Relation(Relation),
        /// The database operations executed by this action.
        #[prost(message, tag = "5")]
        Operations(Operations),
        /// The assertion executed by this action.
        #[prost(message, tag = "6")]
        Assertion(Assertion),
        /// The declaration declared by this action.
        #[prost(message, tag = "7")]
        Declaration(Declaration),
        /// The notebook executed by this action.
        #[prost(message, tag = "8")]
        Notebook(Notebook),
        /// The data preparation executed by this action.
        #[prost(message, tag = "9")]
        DataPreparation(DataPreparation),
    }
}
/// `QueryCompilationResultActions` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryCompilationResultActionsRequest {
    /// Required. The compilation result's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous
    /// `QueryCompilationResultActions` call. Provide this to retrieve the
    /// subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryCompilationResultActions`, with the exception of `page_size`, must
    /// match the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Optional filter for the returned list. Filtering is only
    /// currently supported on the `file_path` field.
    #[prost(string, tag = "4")]
    pub filter: ::prost::alloc::string::String,
}
/// `QueryCompilationResultActions` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryCompilationResultActionsResponse {
    /// List of compilation result actions.
    #[prost(message, repeated, tag = "1")]
    pub compilation_result_actions: ::prost::alloc::vec::Vec<CompilationResultAction>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Represents a Dataform workflow configuration.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkflowConfig {
    /// Identifier. The workflow config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The name of the release config whose release_compilation_result
    /// should be executed. Must be in the format
    /// `projects/*/locations/*/repositories/*/releaseConfigs/*`.
    #[prost(string, tag = "2")]
    pub release_config: ::prost::alloc::string::String,
    /// Optional. If left unset, a default InvocationConfig will be used.
    #[prost(message, optional, tag = "3")]
    pub invocation_config: ::core::option::Option<InvocationConfig>,
    /// Optional. Optional schedule (in cron format) for automatic execution of
    /// this workflow config.
    #[prost(string, tag = "4")]
    pub cron_schedule: ::prost::alloc::string::String,
    /// Optional. Specifies the time zone to be used when interpreting
    /// cron_schedule. Must be a time zone name from the time zone database
    /// (<https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>). If left
    /// unspecified, the default is UTC.
    #[prost(string, tag = "7")]
    pub time_zone: ::prost::alloc::string::String,
    /// Output only. Records of the 10 most recent scheduled execution attempts,
    /// ordered in descending order of `execution_time`. Updated whenever automatic
    /// creation of a workflow invocation is triggered by cron_schedule.
    #[prost(message, repeated, tag = "5")]
    pub recent_scheduled_execution_records: ::prost::alloc::vec::Vec<
        workflow_config::ScheduledExecutionRecord,
    >,
    /// Optional. Disables automatic creation of workflow invocations.
    #[prost(bool, tag = "8")]
    pub disabled: bool,
    /// Output only. The timestamp of when the WorkflowConfig was created.
    #[prost(message, optional, tag = "9")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. The timestamp of when the WorkflowConfig was last updated.
    #[prost(message, optional, tag = "10")]
    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "11")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `WorkflowConfig`.
pub mod workflow_config {
    /// A record of an attempt to create a workflow invocation for this workflow
    /// config.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ScheduledExecutionRecord {
        /// Output only. The timestamp of this execution attempt.
        #[prost(message, optional, tag = "1")]
        pub execution_time: ::core::option::Option<::prost_types::Timestamp>,
        /// The result of this execution attempt.
        #[prost(oneof = "scheduled_execution_record::Result", tags = "2, 3")]
        pub result: ::core::option::Option<scheduled_execution_record::Result>,
    }
    /// Nested message and enum types in `ScheduledExecutionRecord`.
    pub mod scheduled_execution_record {
        /// The result of this execution attempt.
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Result {
            /// The name of the created workflow invocation, if one was successfully
            /// created. Must be in the format
            /// `projects/*/locations/*/repositories/*/workflowInvocations/*`.
            #[prost(string, tag = "2")]
            WorkflowInvocation(::prost::alloc::string::String),
            /// The error status encountered upon this attempt to create the
            /// workflow invocation, if the attempt was unsuccessful.
            #[prost(message, tag = "3")]
            ErrorStatus(super::super::super::super::super::rpc::Status),
        }
    }
}
/// Includes various configuration options for a workflow invocation.
/// If both `included_targets` and `included_tags` are unset, all actions
/// will be included.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InvocationConfig {
    /// Optional. The set of action identifiers to include.
    #[prost(message, repeated, tag = "1")]
    pub included_targets: ::prost::alloc::vec::Vec<Target>,
    /// Optional. The set of tags to include.
    #[prost(string, repeated, tag = "2")]
    pub included_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Optional. When set to true, transitive dependencies of included actions
    /// will be executed.
    #[prost(bool, tag = "3")]
    pub transitive_dependencies_included: bool,
    /// Optional. When set to true, transitive dependents of included actions will
    /// be executed.
    #[prost(bool, tag = "4")]
    pub transitive_dependents_included: bool,
    /// Optional. When set to true, any incremental tables will be fully refreshed.
    #[prost(bool, tag = "5")]
    pub fully_refresh_incremental_tables_enabled: bool,
    /// Optional. The service account to run workflow invocations under.
    #[prost(string, tag = "6")]
    pub service_account: ::prost::alloc::string::String,
    /// Optional. Specifies the priority for query execution in BigQuery.
    /// More information can be found at
    /// <https://cloud.google.com/bigquery/docs/running-queries#queries.>
    #[prost(enumeration = "invocation_config::QueryPriority", optional, tag = "9")]
    pub query_priority: ::core::option::Option<i32>,
}
/// Nested message and enum types in `InvocationConfig`.
pub mod invocation_config {
    /// Types of priority for query execution in BigQuery.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum QueryPriority {
        /// Default value. This value is unused.
        Unspecified = 0,
        /// Query will be executed in BigQuery with interactive priority.
        /// More information can be found at
        /// <https://cloud.google.com/bigquery/docs/running-queries#queries.>
        Interactive = 1,
        /// Query will be executed in BigQuery with batch priority.
        /// More information can be found at
        /// <https://cloud.google.com/bigquery/docs/running-queries#batchqueries.>
        Batch = 2,
    }
    impl QueryPriority {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "QUERY_PRIORITY_UNSPECIFIED",
                Self::Interactive => "INTERACTIVE",
                Self::Batch => "BATCH",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "QUERY_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
                "INTERACTIVE" => Some(Self::Interactive),
                "BATCH" => Some(Self::Batch),
                _ => None,
            }
        }
    }
}
/// `ListWorkflowConfigs` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListWorkflowConfigsRequest {
    /// Required. The repository in which to list workflow configs. Must be in the
    /// format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListWorkflowConfigs` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to `ListWorkflowConfigs`,
    /// with the exception of `page_size`, must match the call that provided the
    /// page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
}
/// `ListWorkflowConfigs` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListWorkflowConfigsResponse {
    /// List of workflow configs.
    #[prost(message, repeated, tag = "1")]
    pub workflow_configs: ::prost::alloc::vec::Vec<WorkflowConfig>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `GetWorkflowConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetWorkflowConfigRequest {
    /// Required. The workflow config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateWorkflowConfig` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateWorkflowConfigRequest {
    /// Required. The repository in which to create the workflow config. Must be in
    /// the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The workflow config to create.
    #[prost(message, optional, tag = "2")]
    pub workflow_config: ::core::option::Option<WorkflowConfig>,
    /// Required. The ID to use for the workflow config, which will become the
    /// final component of the workflow config's resource name.
    #[prost(string, tag = "3")]
    pub workflow_config_id: ::prost::alloc::string::String,
}
/// `UpdateWorkflowConfig` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateWorkflowConfigRequest {
    /// Optional. Specifies the fields to be updated in the workflow config. If
    /// left unset, all fields will be updated.
    #[prost(message, optional, tag = "1")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
    /// Required. The workflow config to update.
    #[prost(message, optional, tag = "2")]
    pub workflow_config: ::core::option::Option<WorkflowConfig>,
}
/// `DeleteWorkflowConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteWorkflowConfigRequest {
    /// Required. The workflow config's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// Represents a single invocation of a compilation result.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkflowInvocation {
    /// Output only. The workflow invocation's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Immutable. If left unset, a default InvocationConfig will be used.
    #[prost(message, optional, tag = "3")]
    pub invocation_config: ::core::option::Option<InvocationConfig>,
    /// Output only. This workflow invocation's current state.
    #[prost(enumeration = "workflow_invocation::State", tag = "4")]
    pub state: i32,
    /// Output only. This workflow invocation's timing details.
    #[prost(message, optional, tag = "5")]
    pub invocation_timing: ::core::option::Option<super::super::super::r#type::Interval>,
    /// Output only. The resolved compilation result that was used to create this
    /// invocation. Will be in the format
    /// `projects/*/locations/*/repositories/*/compilationResults/*`.
    #[prost(string, tag = "7")]
    pub resolved_compilation_result: ::prost::alloc::string::String,
    /// Output only. Only set if the repository has a KMS Key.
    #[prost(message, optional, tag = "8")]
    pub data_encryption_state: ::core::option::Option<DataEncryptionState>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "9")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. Metadata indicating whether this resource is user-scoped.
    /// `WorkflowInvocation` resource is `user_scoped` only if it is sourced
    /// from a compilation result and the compilation result is user-scoped.
    #[prost(message, optional, tag = "10")]
    pub private_resource_metadata: ::core::option::Option<PrivateResourceMetadata>,
    /// The source of the compilation result to use for this invocation.
    #[prost(oneof = "workflow_invocation::CompilationSource", tags = "2, 6")]
    pub compilation_source: ::core::option::Option<
        workflow_invocation::CompilationSource,
    >,
}
/// Nested message and enum types in `WorkflowInvocation`.
pub mod workflow_invocation {
    /// Represents the current state of a workflow invocation.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum State {
        /// Default value. This value is unused.
        Unspecified = 0,
        /// The workflow invocation is currently running.
        Running = 1,
        /// The workflow invocation succeeded. A terminal state.
        Succeeded = 2,
        /// The workflow invocation was cancelled. A terminal state.
        Cancelled = 3,
        /// The workflow invocation failed. A terminal state.
        Failed = 4,
        /// The workflow invocation is being cancelled, but some actions are still
        /// running.
        Canceling = 5,
    }
    impl State {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "STATE_UNSPECIFIED",
                Self::Running => "RUNNING",
                Self::Succeeded => "SUCCEEDED",
                Self::Cancelled => "CANCELLED",
                Self::Failed => "FAILED",
                Self::Canceling => "CANCELING",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
                "RUNNING" => Some(Self::Running),
                "SUCCEEDED" => Some(Self::Succeeded),
                "CANCELLED" => Some(Self::Cancelled),
                "FAILED" => Some(Self::Failed),
                "CANCELING" => Some(Self::Canceling),
                _ => None,
            }
        }
    }
    /// The source of the compilation result to use for this invocation.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum CompilationSource {
        /// Immutable. The name of the compilation result to use for this invocation.
        /// Must be in the format
        /// `projects/*/locations/*/repositories/*/compilationResults/*`.
        #[prost(string, tag = "2")]
        CompilationResult(::prost::alloc::string::String),
        /// Immutable. The name of the workflow config to invoke. Must be in the
        /// format `projects/*/locations/*/repositories/*/workflowConfigs/*`.
        #[prost(string, tag = "6")]
        WorkflowConfig(::prost::alloc::string::String),
    }
}
/// `ListWorkflowInvocations` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListWorkflowInvocationsRequest {
    /// Required. The parent resource of the WorkflowInvocation type. Must be in
    /// the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `ListWorkflowInvocations`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `ListWorkflowInvocations`, with the exception of `page_size`, must match
    /// the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// 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.
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Filter for the returned list.
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `ListWorkflowInvocations` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListWorkflowInvocationsResponse {
    /// List of workflow invocations.
    #[prost(message, repeated, tag = "1")]
    pub workflow_invocations: ::prost::alloc::vec::Vec<WorkflowInvocation>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
    /// Locations which could not be reached.
    #[prost(string, repeated, tag = "3")]
    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// `GetWorkflowInvocation` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetWorkflowInvocationRequest {
    /// Required. The workflow invocation resource's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CreateWorkflowInvocation` request message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateWorkflowInvocationRequest {
    /// Required. The repository in which to create the workflow invocation. Must
    /// be in the format `projects/*/locations/*/repositories/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The workflow invocation resource to create.
    #[prost(message, optional, tag = "2")]
    pub workflow_invocation: ::core::option::Option<WorkflowInvocation>,
}
/// `DeleteWorkflowInvocation` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteWorkflowInvocationRequest {
    /// Required. The workflow invocation resource's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CancelWorkflowInvocation` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CancelWorkflowInvocationRequest {
    /// Required. The workflow invocation resource's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `CancelWorkflowInvocation` response message.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CancelWorkflowInvocationResponse {}
/// Represents a single action in a workflow invocation.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct WorkflowInvocationAction {
    /// Output only. This action's identifier. Unique within the workflow
    /// invocation.
    #[prost(message, optional, tag = "1")]
    pub target: ::core::option::Option<Target>,
    /// Output only. The action's identifier if the project had been compiled
    /// without any overrides configured. Unique within the compilation result.
    #[prost(message, optional, tag = "2")]
    pub canonical_target: ::core::option::Option<Target>,
    /// Output only. This action's current state.
    #[prost(enumeration = "workflow_invocation_action::State", tag = "4")]
    pub state: i32,
    /// Output only. If and only if action's state is FAILED a failure reason is
    /// set.
    #[prost(string, tag = "7")]
    pub failure_reason: ::prost::alloc::string::String,
    /// Output only. This action's timing details.
    /// `start_time` will be set if the action is in \[RUNNING, SUCCEEDED,
    /// CANCELLED, FAILED\] state.
    /// `end_time` will be set if the action is in \[SUCCEEDED, CANCELLED, FAILED\]
    /// state.
    #[prost(message, optional, tag = "5")]
    pub invocation_timing: ::core::option::Option<super::super::super::r#type::Interval>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "10")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// The action's details.
    #[prost(oneof = "workflow_invocation_action::Action", tags = "6, 8, 9")]
    pub action: ::core::option::Option<workflow_invocation_action::Action>,
}
/// Nested message and enum types in `WorkflowInvocationAction`.
pub mod workflow_invocation_action {
    /// Represents a workflow action that will run against BigQuery.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct BigQueryAction {
        /// Output only. The generated BigQuery SQL script that will be executed.
        #[prost(string, tag = "1")]
        pub sql_script: ::prost::alloc::string::String,
        /// Output only. The ID of the BigQuery job that executed the SQL in
        /// sql_script. Only set once the job has started to run.
        #[prost(string, tag = "2")]
        pub job_id: ::prost::alloc::string::String,
    }
    /// Represents a workflow action that will run against a Notebook runtime.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct NotebookAction {
        /// Output only. The code contents of a Notebook to be run.
        #[prost(string, tag = "1")]
        pub contents: ::prost::alloc::string::String,
        /// Output only. The ID of the Vertex job that executed the notebook in
        /// contents and also the ID used for the outputs created in Google Cloud
        /// Storage buckets. Only set once the job has started to run.
        #[prost(string, tag = "2")]
        pub job_id: ::prost::alloc::string::String,
    }
    /// Represents a workflow action that will run a Data Preparation.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct DataPreparationAction {
        /// Output only. The generated BigQuery SQL script that will be executed. For
        /// reference only.
        #[prost(string, tag = "3")]
        pub generated_sql: ::prost::alloc::string::String,
        /// Output only. The ID of the BigQuery job that executed the SQL in
        /// sql_script. Only set once the job has started to run.
        #[prost(string, tag = "4")]
        pub job_id: ::prost::alloc::string::String,
        /// The definition for the data preparation.
        #[prost(oneof = "data_preparation_action::Definition", tags = "2, 6")]
        pub definition: ::core::option::Option<data_preparation_action::Definition>,
    }
    /// Nested message and enum types in `DataPreparationAction`.
    pub mod data_preparation_action {
        /// Definition of a SQL Data Preparation
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ActionSqlDefinition {
            /// The SQL query representing the data preparation steps. Formatted as a
            /// Pipe SQL query statement.
            #[prost(string, tag = "1")]
            pub query: ::prost::alloc::string::String,
            /// Error table configuration,
            #[prost(message, optional, tag = "2")]
            pub error_table: ::core::option::Option<ActionErrorTable>,
            /// Load configuration.
            #[prost(message, optional, tag = "3")]
            pub load_config: ::core::option::Option<ActionLoadConfig>,
        }
        /// Error table information, used to write error data into a BigQuery
        /// table.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ActionErrorTable {
            /// Error Table target.
            #[prost(message, optional, tag = "1")]
            pub target: ::core::option::Option<super::super::Target>,
            /// Error table partition expiration in days. Only positive values are
            /// allowed.
            #[prost(int32, tag = "2")]
            pub retention_days: i32,
        }
        /// Simplified load configuration for actions
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ActionLoadConfig {
            /// Load mode
            #[prost(oneof = "action_load_config::Mode", tags = "1, 2, 3, 4")]
            pub mode: ::core::option::Option<action_load_config::Mode>,
        }
        /// Nested message and enum types in `ActionLoadConfig`.
        pub mod action_load_config {
            /// Load mode
            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
            pub enum Mode {
                /// Replace destination table
                #[prost(message, tag = "1")]
                Replace(super::ActionSimpleLoadMode),
                /// Append into destination table
                #[prost(message, tag = "2")]
                Append(super::ActionSimpleLoadMode),
                /// Insert records where the value exceeds the previous maximum value for
                /// a column in the destination table
                #[prost(message, tag = "3")]
                Maximum(super::ActionIncrementalLoadMode),
                /// Insert records where the value of a column is not already present in
                /// the destination table
                #[prost(message, tag = "4")]
                Unique(super::ActionIncrementalLoadMode),
            }
        }
        /// Simple load definition
        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ActionSimpleLoadMode {}
        /// Load definition for incremental load modes
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
        pub struct ActionIncrementalLoadMode {
            /// Column name for incremental load modes
            #[prost(string, tag = "1")]
            pub column: ::prost::alloc::string::String,
        }
        /// The definition for the data preparation.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
        pub enum Definition {
            /// Output only. YAML representing the contents of the data preparation.
            /// Can be used to show the customer what the input was to their workflow.
            #[prost(string, tag = "2")]
            ContentsYaml(::prost::alloc::string::String),
            /// SQL definition for a Data Preparation. Contains a SQL query and
            /// additional context information.
            #[prost(message, tag = "6")]
            ContentsSql(ActionSqlDefinition),
        }
    }
    /// Represents the current state of a workflow invocation action.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum State {
        /// The action has not yet been considered for invocation.
        Pending = 0,
        /// The action is currently running.
        Running = 1,
        /// Execution of the action was skipped because upstream dependencies did not
        /// all complete successfully. A terminal state.
        Skipped = 2,
        /// Execution of the action was disabled as per the configuration of the
        /// corresponding compilation result action. A terminal state.
        Disabled = 3,
        /// The action succeeded. A terminal state.
        Succeeded = 4,
        /// The action was cancelled. A terminal state.
        Cancelled = 5,
        /// The action failed. A terminal state.
        Failed = 6,
    }
    impl State {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Pending => "PENDING",
                Self::Running => "RUNNING",
                Self::Skipped => "SKIPPED",
                Self::Disabled => "DISABLED",
                Self::Succeeded => "SUCCEEDED",
                Self::Cancelled => "CANCELLED",
                Self::Failed => "FAILED",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "PENDING" => Some(Self::Pending),
                "RUNNING" => Some(Self::Running),
                "SKIPPED" => Some(Self::Skipped),
                "DISABLED" => Some(Self::Disabled),
                "SUCCEEDED" => Some(Self::Succeeded),
                "CANCELLED" => Some(Self::Cancelled),
                "FAILED" => Some(Self::Failed),
                _ => None,
            }
        }
    }
    /// The action's details.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
    pub enum Action {
        /// Output only. The workflow action's bigquery action details.
        #[prost(message, tag = "6")]
        BigqueryAction(BigQueryAction),
        /// Output only. The workflow action's notebook action details.
        #[prost(message, tag = "8")]
        NotebookAction(NotebookAction),
        /// Output only. The workflow action's data preparation action details.
        #[prost(message, tag = "9")]
        DataPreparationAction(DataPreparationAction),
    }
}
/// `QueryWorkflowInvocationActions` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryWorkflowInvocationActionsRequest {
    /// Required. The workflow invocation's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// 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.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous
    /// `QueryWorkflowInvocationActions` call. Provide this to retrieve the
    /// subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryWorkflowInvocationActions`, with the exception of `page_size`, must
    /// match the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
}
/// `QueryWorkflowInvocationActions` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryWorkflowInvocationActionsResponse {
    /// List of workflow invocation actions.
    #[prost(message, repeated, tag = "1")]
    pub workflow_invocation_actions: ::prost::alloc::vec::Vec<WorkflowInvocationAction>,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Config for all repositories in a given project and location.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Config {
    /// Identifier. The config name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The default KMS key that is used if no encryption key is provided
    /// when a repository is created.
    #[prost(string, tag = "2")]
    pub default_kms_key_name: ::prost::alloc::string::String,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "7")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
}
/// `GetConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetConfigRequest {
    /// Required. The config name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `UpdateConfig` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UpdateConfigRequest {
    /// Required. The config to update.
    #[prost(message, optional, tag = "1")]
    pub config: ::core::option::Option<Config>,
    /// Optional. Specifies the fields to be updated in the config.
    #[prost(message, optional, tag = "2")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
}
/// Represents a Dataform Folder. This is a resource that is used to organize
/// Files and other Folders and provide hierarchical access controls.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Folder {
    /// Identifier. The Folder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The Folder's user-friendly name.
    #[prost(string, tag = "2")]
    pub display_name: ::prost::alloc::string::String,
    /// Optional. The containing Folder resource name. This should take
    /// the format: projects/{project}/locations/{location}/folders/{folder},
    /// projects/{project}/locations/{location}/teamFolders/{teamFolder}, or just
    /// projects/{project}/locations/{location} if this is a root Folder. This
    /// field can only be updated through MoveFolder.
    #[prost(string, tag = "3")]
    pub containing_folder: ::prost::alloc::string::String,
    /// Output only. The resource name of the TeamFolder that this Folder is
    /// associated with. This should take the format:
    /// projects/{project}/locations/{location}/teamFolders/{teamFolder}. If this
    /// is not set, the Folder is not associated with a TeamFolder and is a
    /// UserFolder.
    #[prost(string, tag = "4")]
    pub team_folder_name: ::prost::alloc::string::String,
    /// Output only. The timestamp of when the Folder was created.
    #[prost(message, optional, tag = "5")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. The timestamp of when the Folder was last updated.
    #[prost(message, optional, tag = "6")]
    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "7")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. The IAM principal identifier of the creator of the Folder.
    #[prost(string, optional, tag = "8")]
    pub creator_iam_principal: ::core::option::Option<::prost::alloc::string::String>,
}
/// `CreateFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateFolderRequest {
    /// Required. The location in which to create the Folder. Must be in the format
    /// `projects/*/locations/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The Folder to create.
    #[prost(message, optional, tag = "2")]
    pub folder: ::core::option::Option<Folder>,
    /// The ID to use for the Folder, which will become the final component of
    /// the Folder's resource name.
    #[prost(string, tag = "3")]
    pub folder_id: ::prost::alloc::string::String,
}
/// `MoveFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveFolderRequest {
    /// Required. The full resource name of the Folder to move.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Optional. The name of the Folder, TeamFolder, or root location to move the
    /// Folder to. Can be in the format of: "" to move into the root User folder,
    /// `projects/*/locations/*/folders/*`, `projects/*/locations/*/teamFolders/*`
    #[prost(string, optional, tag = "2")]
    pub destination_containing_folder: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
}
/// `GetFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetFolderRequest {
    /// Required. The Folder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `UpdateFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UpdateFolderRequest {
    /// Optional. Specifies the fields to be updated in the Folder. If left unset,
    /// all fields that can be updated, will be updated. A few fields cannot be
    /// updated and will be ignored if specified in the update_mask (e.g.
    /// parent_name, team_folder_name).
    #[prost(message, optional, tag = "1")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
    /// Required. The updated Folder.
    #[prost(message, optional, tag = "2")]
    pub folder: ::core::option::Option<Folder>,
}
/// `DeleteFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteFolderRequest {
    /// Required. The Folder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `QueryFolderContents` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryFolderContentsRequest {
    /// Required. Name of the folder whose contents to list.
    /// Format: projects/*/locations/*/folders/\*
    #[prost(string, tag = "1")]
    pub folder: ::prost::alloc::string::String,
    /// Optional. Maximum number of paths to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `QueryFolderContents` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryFolderContents`, with the exception of `page_size`, must match the
    /// call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Field to additionally sort results by.
    /// Will order Folders before Repositories, and then by `order_by` in ascending
    /// order. Supported keywords: display_name (default), create_time,
    /// last_modified_time.
    /// Examples:
    ///
    /// * `orderBy="display_name"`
    /// * `orderBy="display_name desc"`
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Optional filtering for the returned list. Filtering is currently
    /// only supported on the `display_name` field.
    ///
    /// Example:
    ///
    /// * `filter="display_name="MyFolder""`
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `QueryFolderContents` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryFolderContentsResponse {
    /// List of entries in the folder.
    #[prost(message, repeated, tag = "1")]
    pub entries: ::prost::alloc::vec::Vec<
        query_folder_contents_response::FolderContentsEntry,
    >,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Nested message and enum types in `QueryFolderContentsResponse`.
pub mod query_folder_contents_response {
    /// Represents a single content entry.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct FolderContentsEntry {
        /// The content entry.
        #[prost(oneof = "folder_contents_entry::Entry", tags = "1, 2")]
        pub entry: ::core::option::Option<folder_contents_entry::Entry>,
    }
    /// Nested message and enum types in `FolderContentsEntry`.
    pub mod folder_contents_entry {
        /// The content entry.
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Entry {
            /// A subfolder.
            #[prost(message, tag = "1")]
            Folder(super::super::Folder),
            /// A repository.
            #[prost(message, tag = "2")]
            Repository(super::super::Repository),
        }
    }
}
/// `QueryUserRootContents` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryUserRootContentsRequest {
    /// Required. Location of the user root folder whose contents to list.
    /// Format: projects/*/locations/*
    #[prost(string, tag = "1")]
    pub location: ::prost::alloc::string::String,
    /// Optional. Maximum number of paths to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `QueryUserRootContents` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryUserRootFolderContents`, with the exception of `page_size`, must
    /// match the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Field to additionally sort results by.
    /// Will order Folders before Repositories, and then by `order_by` in ascending
    /// order. Supported keywords: display_name (default), created_at,
    /// last_modified_at. Examples:
    ///
    /// * `orderBy="display_name"`
    /// * `orderBy="display_name desc"`
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Optional filtering for the returned list. Filtering is currently
    /// only supported on the `display_name` field.
    ///
    /// Example:
    ///
    /// * `filter="display_name="MyFolder""`
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `QueryUserRootContents` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryUserRootContentsResponse {
    /// List of entries in the folder.
    #[prost(message, repeated, tag = "1")]
    pub entries: ::prost::alloc::vec::Vec<
        query_user_root_contents_response::RootContentsEntry,
    >,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Nested message and enum types in `QueryUserRootContentsResponse`.
pub mod query_user_root_contents_response {
    /// Represents a single content entry.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct RootContentsEntry {
        /// The content entry.
        #[prost(oneof = "root_contents_entry::Entry", tags = "1, 2")]
        pub entry: ::core::option::Option<root_contents_entry::Entry>,
    }
    /// Nested message and enum types in `RootContentsEntry`.
    pub mod root_contents_entry {
        /// The content entry.
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Entry {
            /// A subfolder.
            #[prost(message, tag = "1")]
            Folder(super::super::Folder),
            /// A repository.
            #[prost(message, tag = "2")]
            Repository(super::super::Repository),
        }
    }
}
/// Represents a Dataform TeamFolder. This is a resource that sits at the project
/// level and is used to organize Repositories and Folders with hierarchical
/// access controls. They provide a team context and stricter access controls.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TeamFolder {
    /// Identifier. The TeamFolder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Required. The TeamFolder's user-friendly name.
    #[prost(string, tag = "2")]
    pub display_name: ::prost::alloc::string::String,
    /// Output only. The timestamp of when the TeamFolder was created.
    #[prost(message, optional, tag = "3")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. The timestamp of when the TeamFolder was last updated.
    #[prost(message, optional, tag = "4")]
    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. All the metadata information that is used internally to serve
    /// the resource. For example: timestamps, flags, status fields, etc. The
    /// format of this field is a JSON string.
    #[prost(string, optional, tag = "5")]
    pub internal_metadata: ::core::option::Option<::prost::alloc::string::String>,
    /// Output only. The IAM principal identifier of the creator of the TeamFolder.
    #[prost(string, optional, tag = "6")]
    pub creator_iam_principal: ::core::option::Option<::prost::alloc::string::String>,
}
/// `CreateTeamFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateTeamFolderRequest {
    /// Required. The location in which to create the TeamFolder. Must be in the
    /// format `projects/*/locations/*`.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The TeamFolder to create.
    #[prost(message, optional, tag = "2")]
    pub team_folder: ::core::option::Option<TeamFolder>,
    /// The ID to use for the TeamFolder, which will become the final component of
    /// the TeamFolder's resource name.
    #[prost(string, tag = "3")]
    pub team_folder_id: ::prost::alloc::string::String,
}
/// `GetTeamFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetTeamFolderRequest {
    /// Required. The TeamFolder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `UpdateTeamFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UpdateTeamFolderRequest {
    /// Optional. Specifies the fields to be updated in the Folder. If left unset,
    /// all fields will be updated.
    #[prost(message, optional, tag = "1")]
    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
    /// Required. The updated TeamFolder.
    #[prost(message, optional, tag = "2")]
    pub team_folder: ::core::option::Option<TeamFolder>,
}
/// `DeleteTeamFolder` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeleteTeamFolderRequest {
    /// Required. The TeamFolder's name.
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
/// `QueryTeamFolderContents` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryTeamFolderContentsRequest {
    /// Required. Name of the team_folder whose contents to list.
    /// Format: `projects/*/locations/*/teamFolders/*`.
    #[prost(string, tag = "1")]
    pub team_folder: ::prost::alloc::string::String,
    /// Optional. Maximum number of paths to return. The server may return fewer
    /// items than requested. If unspecified, the server will pick an appropriate
    /// default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `QueryTeamFolderContents`
    /// call. Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `QueryTeamFolderContents`, with the exception of `page_size`, must match
    /// the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Field to additionally sort results by.
    /// Will order Folders before Repositories, and then by `order_by` in ascending
    /// order. Supported keywords: `display_name` (default), `create_time`,
    /// last_modified_time.
    /// Examples:
    ///
    /// * `orderBy="display_name"`
    /// * `orderBy="display_name desc"`
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Optional filtering for the returned list. Filtering is currently
    /// only supported on the `display_name` field.
    ///
    /// Example:
    ///
    /// * `filter="display_name="MyFolder""`
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `QueryTeamFolderContents` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryTeamFolderContentsResponse {
    /// List of entries in the TeamFolder.
    #[prost(message, repeated, tag = "1")]
    pub entries: ::prost::alloc::vec::Vec<
        query_team_folder_contents_response::TeamFolderContentsEntry,
    >,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Nested message and enum types in `QueryTeamFolderContentsResponse`.
pub mod query_team_folder_contents_response {
    /// Represents a single content entry.
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct TeamFolderContentsEntry {
        /// The content entry.
        #[prost(oneof = "team_folder_contents_entry::Entry", tags = "1, 2")]
        pub entry: ::core::option::Option<team_folder_contents_entry::Entry>,
    }
    /// Nested message and enum types in `TeamFolderContentsEntry`.
    pub mod team_folder_contents_entry {
        /// The content entry.
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Entry {
            /// A subfolder.
            #[prost(message, tag = "1")]
            Folder(super::super::Folder),
            /// A repository.
            #[prost(message, tag = "2")]
            Repository(super::super::Repository),
        }
    }
}
/// `SearchTeamFolders` request message.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SearchTeamFoldersRequest {
    /// Required. Location in which to query TeamFolders.
    /// Format: `projects/*/locations/*`.
    #[prost(string, tag = "1")]
    pub location: ::prost::alloc::string::String,
    /// Optional. Maximum number of TeamFolders to return. The server may return
    /// fewer items than requested. If unspecified, the server will pick an
    /// appropriate default.
    #[prost(int32, tag = "2")]
    pub page_size: i32,
    /// Optional. Page token received from a previous `SearchTeamFolders` call.
    /// Provide this to retrieve the subsequent page.
    ///
    /// When paginating, all other parameters provided to
    /// `SearchTeamFolders`, with the exception of `page_size`, must
    /// match the call that provided the page token.
    #[prost(string, tag = "3")]
    pub page_token: ::prost::alloc::string::String,
    /// Optional. Field to additionally sort results by.
    /// Supported keywords: `display_name` (default), `create_time`,
    /// `last_modified_time`. Examples:
    ///
    /// * `orderBy="display_name"`
    /// * `orderBy="display_name desc"`
    #[prost(string, tag = "4")]
    pub order_by: ::prost::alloc::string::String,
    /// Optional. Optional filtering for the returned list. Filtering is currently
    /// only supported on the `display_name` field.
    ///
    /// Example:
    ///
    /// * `filter="display_name="MyFolder""`
    #[prost(string, tag = "5")]
    pub filter: ::prost::alloc::string::String,
}
/// `SearchTeamFolders` response message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchTeamFoldersResponse {
    /// List of TeamFolders that match the search query.
    #[prost(message, repeated, tag = "1")]
    pub results: ::prost::alloc::vec::Vec<
        search_team_folders_response::TeamFolderSearchResult,
    >,
    /// A token, which can be sent as `page_token` to retrieve the next page.
    /// If this field is omitted, there are no subsequent pages.
    #[prost(string, tag = "2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// Nested message and enum types in `SearchTeamFoldersResponse`.
pub mod search_team_folders_response {
    /// Represents a single content entry.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct TeamFolderSearchResult {
        /// The content entry.
        #[prost(oneof = "team_folder_search_result::Entry", tags = "2")]
        pub entry: ::core::option::Option<team_folder_search_result::Entry>,
    }
    /// Nested message and enum types in `TeamFolderSearchResult`.
    pub mod team_folder_search_result {
        /// The content entry.
        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
        pub enum Entry {
            /// A TeamFolder resource that is in the project / location.
            #[prost(message, tag = "2")]
            TeamFolder(super::super::TeamFolder),
        }
    }
}
/// Contains metadata about the progress of the MoveFolder Long-running
/// operations.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveFolderMetadata {
    /// Output only. The time the operation was created.
    #[prost(message, optional, tag = "1")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. The time the operation finished running.
    #[prost(message, optional, tag = "2")]
    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. Server-defined resource path for the target of the operation.
    #[prost(string, tag = "3")]
    pub target: ::prost::alloc::string::String,
    /// The state of the move.
    #[prost(enumeration = "move_folder_metadata::State", tag = "4")]
    pub state: i32,
    /// Percent complete of the move \[0, 100\].
    #[prost(int32, tag = "5")]
    pub percent_complete: i32,
}
/// Nested message and enum types in `MoveFolderMetadata`.
pub mod move_folder_metadata {
    /// Different states of the move.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum State {
        /// The state is unspecified.
        Unspecified = 0,
        /// The move was initialized and recorded by the server, but not yet started.
        Initialized = 1,
        /// The move is in progress.
        InProgress = 2,
        /// The move has completed successfully.
        Success = 3,
        /// The move has failed.
        Failed = 4,
    }
    impl State {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "STATE_UNSPECIFIED",
                Self::Initialized => "INITIALIZED",
                Self::InProgress => "IN_PROGRESS",
                Self::Success => "SUCCESS",
                Self::Failed => "FAILED",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
                "INITIALIZED" => Some(Self::Initialized),
                "IN_PROGRESS" => Some(Self::InProgress),
                "SUCCESS" => Some(Self::Success),
                "FAILED" => Some(Self::Failed),
                _ => None,
            }
        }
    }
}
/// Contains metadata about the progress of the MoveRepository Long-running
/// operations.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MoveRepositoryMetadata {
    /// Output only. The time the operation was created.
    #[prost(message, optional, tag = "1")]
    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. The time the operation finished running.
    #[prost(message, optional, tag = "2")]
    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
    /// Output only. Server-defined resource path for the target of the operation.
    #[prost(string, tag = "3")]
    pub target: ::prost::alloc::string::String,
    /// The state of the move.
    #[prost(enumeration = "move_repository_metadata::State", tag = "4")]
    pub state: i32,
    /// Percent complete of the move \[0, 100\].
    #[prost(int32, tag = "5")]
    pub percent_complete: i32,
}
/// Nested message and enum types in `MoveRepositoryMetadata`.
pub mod move_repository_metadata {
    /// Different states of the move.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum State {
        /// The state is unspecified.
        Unspecified = 0,
        /// The move was initialized and recorded by the server, but not yet started.
        Initialized = 1,
        /// The move is in progress.
        InProgress = 2,
        /// The move has completed successfully.
        Success = 3,
        /// The move has failed.
        Failed = 4,
    }
    impl State {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "STATE_UNSPECIFIED",
                Self::Initialized => "INITIALIZED",
                Self::InProgress => "IN_PROGRESS",
                Self::Success => "SUCCESS",
                Self::Failed => "FAILED",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
                "INITIALIZED" => Some(Self::Initialized),
                "IN_PROGRESS" => Some(Self::InProgress),
                "SUCCESS" => Some(Self::Success),
                "FAILED" => Some(Self::Failed),
                _ => None,
            }
        }
    }
}
/// Generated client implementations.
pub mod dataform_client {
    #![allow(
        unused_variables,
        dead_code,
        missing_docs,
        clippy::wildcard_imports,
        clippy::let_unit_value,
    )]
    use tonic::codegen::*;
    use tonic::codegen::http::Uri;
    /// Dataform is a service to develop, create, document, test, and update curated
    /// tables in BigQuery.
    #[derive(Debug, Clone)]
    pub struct DataformClient<T> {
        inner: tonic::client::Grpc<T>,
    }
    impl DataformClient<tonic::transport::Channel> {
        /// Attempt to create a new client by connecting to a given endpoint.
        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
        where
            D: TryInto<tonic::transport::Endpoint>,
            D::Error: Into<StdError>,
        {
            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
            Ok(Self::new(conn))
        }
    }
    impl<T> DataformClient<T>
    where
        T: tonic::client::GrpcService<tonic::body::Body>,
        T::Error: Into<StdError>,
        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
    {
        pub fn new(inner: T) -> Self {
            let inner = tonic::client::Grpc::new(inner);
            Self { inner }
        }
        pub fn with_origin(inner: T, origin: Uri) -> Self {
            let inner = tonic::client::Grpc::with_origin(inner, origin);
            Self { inner }
        }
        pub fn with_interceptor<F>(
            inner: T,
            interceptor: F,
        ) -> DataformClient<InterceptedService<T, F>>
        where
            F: tonic::service::Interceptor,
            T::ResponseBody: Default,
            T: tonic::codegen::Service<
                http::Request<tonic::body::Body>,
                Response = http::Response<
                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
                >,
            >,
            <T as tonic::codegen::Service<
                http::Request<tonic::body::Body>,
            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
        {
            DataformClient::new(InterceptedService::new(inner, interceptor))
        }
        /// Compress requests with the given encoding.
        ///
        /// This requires the server to support it otherwise it might respond with an
        /// error.
        #[must_use]
        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.send_compressed(encoding);
            self
        }
        /// Enable decompressing responses.
        #[must_use]
        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.accept_compressed(encoding);
            self
        }
        /// Limits the maximum size of a decoded message.
        ///
        /// Default: `4MB`
        #[must_use]
        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_decoding_message_size(limit);
            self
        }
        /// Limits the maximum size of an encoded message.
        ///
        /// Default: `usize::MAX`
        #[must_use]
        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_encoding_message_size(limit);
            self
        }
        /// Fetches a single TeamFolder.
        pub async fn get_team_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::GetTeamFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::TeamFolder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetTeamFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetTeamFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new TeamFolder in a given project and location.
        pub async fn create_team_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateTeamFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::TeamFolder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateTeamFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateTeamFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Updates a single TeamFolder.
        pub async fn update_team_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateTeamFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::TeamFolder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateTeamFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateTeamFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single TeamFolder.
        pub async fn delete_team_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteTeamFolderRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteTeamFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteTeamFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a given TeamFolder.
        pub async fn query_team_folder_contents(
            &mut self,
            request: impl tonic::IntoRequest<super::QueryTeamFolderContentsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::QueryTeamFolderContentsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryTeamFolderContents",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryTeamFolderContents",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns all TeamFolders in a given location that the caller has access to
        /// and match the provided filter.
        pub async fn search_team_folders(
            &mut self,
            request: impl tonic::IntoRequest<super::SearchTeamFoldersRequest>,
        ) -> std::result::Result<
            tonic::Response<super::SearchTeamFoldersResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/SearchTeamFolders",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "SearchTeamFolders",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single Folder.
        pub async fn get_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::GetFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::Folder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new Folder in a given project and location.
        pub async fn create_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::Folder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Updates a single Folder.
        pub async fn update_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateFolderRequest>,
        ) -> std::result::Result<tonic::Response<super::Folder>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single Folder.
        pub async fn delete_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteFolderRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a given Folder.
        pub async fn query_folder_contents(
            &mut self,
            request: impl tonic::IntoRequest<super::QueryFolderContentsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::QueryFolderContentsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryFolderContents",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryFolderContents",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a caller's root folder in a given location.
        /// The root folder contains all resources that are created by the user and not
        /// contained in any other folder.
        pub async fn query_user_root_contents(
            &mut self,
            request: impl tonic::IntoRequest<super::QueryUserRootContentsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::QueryUserRootContentsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryUserRootContents",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryUserRootContents",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Moves a Folder to a new Folder, TeamFolder, or the root location.
        pub async fn move_folder(
            &mut self,
            request: impl tonic::IntoRequest<super::MoveFolderRequest>,
        ) -> std::result::Result<
            tonic::Response<super::super::super::super::longrunning::Operation>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/MoveFolder",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "MoveFolder",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists Repositories in a given project and location.
        ///
        /// **Note:** *This method can return repositories not shown in the [Dataform
        /// UI](https://console.cloud.google.com/bigquery/dataform)*.
        pub async fn list_repositories(
            &mut self,
            request: impl tonic::IntoRequest<super::ListRepositoriesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListRepositoriesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListRepositories",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListRepositories",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single Repository.
        pub async fn get_repository(
            &mut self,
            request: impl tonic::IntoRequest<super::GetRepositoryRequest>,
        ) -> std::result::Result<tonic::Response<super::Repository>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetRepository",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetRepository",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new Repository in a given project and location.
        pub async fn create_repository(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateRepositoryRequest>,
        ) -> std::result::Result<tonic::Response<super::Repository>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateRepository",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateRepository",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Updates a single Repository.
        ///
        /// **Note:** *This method does not fully implement
        /// [AIP/134](https://google.aip.dev/134). The wildcard entry (\*) is treated
        /// as a bad request, and when the `field_mask` is omitted, the request is
        /// treated as a full update on all modifiable fields.*
        pub async fn update_repository(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateRepositoryRequest>,
        ) -> std::result::Result<tonic::Response<super::Repository>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateRepository",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateRepository",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single Repository.
        pub async fn delete_repository(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteRepositoryRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteRepository",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteRepository",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Moves a Repository to a new location.
        pub async fn move_repository(
            &mut self,
            request: impl tonic::IntoRequest<super::MoveRepositoryRequest>,
        ) -> std::result::Result<
            tonic::Response<super::super::super::super::longrunning::Operation>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/MoveRepository",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "MoveRepository",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Applies a Git commit to a Repository. The Repository must not have a value
        /// for `git_remote_settings.url`.
        pub async fn commit_repository_changes(
            &mut self,
            request: impl tonic::IntoRequest<super::CommitRepositoryChangesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CommitRepositoryChangesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CommitRepositoryChanges",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CommitRepositoryChanges",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a file (inside a Repository). The Repository
        /// must not have a value for `git_remote_settings.url`.
        pub async fn read_repository_file(
            &mut self,
            request: impl tonic::IntoRequest<super::ReadRepositoryFileRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ReadRepositoryFileResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ReadRepositoryFile",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ReadRepositoryFile",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a given Repository directory. The Repository must
        /// not have a value for `git_remote_settings.url`.
        pub async fn query_repository_directory_contents(
            &mut self,
            request: impl tonic::IntoRequest<
                super::QueryRepositoryDirectoryContentsRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<super::QueryRepositoryDirectoryContentsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryRepositoryDirectoryContents",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryRepositoryDirectoryContents",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a Repository's history of commits.  The Repository must not have a
        /// value for `git_remote_settings.url`.
        pub async fn fetch_repository_history(
            &mut self,
            request: impl tonic::IntoRequest<super::FetchRepositoryHistoryRequest>,
        ) -> std::result::Result<
            tonic::Response<super::FetchRepositoryHistoryResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/FetchRepositoryHistory",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "FetchRepositoryHistory",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Computes a Repository's Git access token status.
        pub async fn compute_repository_access_token_status(
            &mut self,
            request: impl tonic::IntoRequest<
                super::ComputeRepositoryAccessTokenStatusRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<super::ComputeRepositoryAccessTokenStatusResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ComputeRepositoryAccessTokenStatus",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ComputeRepositoryAccessTokenStatus",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a Repository's remote branches.
        pub async fn fetch_remote_branches(
            &mut self,
            request: impl tonic::IntoRequest<super::FetchRemoteBranchesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::FetchRemoteBranchesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/FetchRemoteBranches",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "FetchRemoteBranches",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists Workspaces in a given Repository.
        pub async fn list_workspaces(
            &mut self,
            request: impl tonic::IntoRequest<super::ListWorkspacesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListWorkspacesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListWorkspaces",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListWorkspaces",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single Workspace.
        pub async fn get_workspace(
            &mut self,
            request: impl tonic::IntoRequest<super::GetWorkspaceRequest>,
        ) -> std::result::Result<tonic::Response<super::Workspace>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetWorkspace",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetWorkspace",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new Workspace in a given Repository.
        pub async fn create_workspace(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateWorkspaceRequest>,
        ) -> std::result::Result<tonic::Response<super::Workspace>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateWorkspace",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateWorkspace",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single Workspace.
        pub async fn delete_workspace(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteWorkspaceRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteWorkspace",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteWorkspace",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Installs dependency NPM packages (inside a Workspace).
        pub async fn install_npm_packages(
            &mut self,
            request: impl tonic::IntoRequest<super::InstallNpmPackagesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::InstallNpmPackagesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/InstallNpmPackages",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "InstallNpmPackages",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Pulls Git commits from the Repository's remote into a Workspace.
        pub async fn pull_git_commits(
            &mut self,
            request: impl tonic::IntoRequest<super::PullGitCommitsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::PullGitCommitsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/PullGitCommits",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "PullGitCommits",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Pushes Git commits from a Workspace to the Repository's remote.
        pub async fn push_git_commits(
            &mut self,
            request: impl tonic::IntoRequest<super::PushGitCommitsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::PushGitCommitsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/PushGitCommits",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "PushGitCommits",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches Git statuses for the files in a Workspace.
        pub async fn fetch_file_git_statuses(
            &mut self,
            request: impl tonic::IntoRequest<super::FetchFileGitStatusesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::FetchFileGitStatusesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/FetchFileGitStatuses",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "FetchFileGitStatuses",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches Git ahead/behind against a remote branch.
        pub async fn fetch_git_ahead_behind(
            &mut self,
            request: impl tonic::IntoRequest<super::FetchGitAheadBehindRequest>,
        ) -> std::result::Result<
            tonic::Response<super::FetchGitAheadBehindResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/FetchGitAheadBehind",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "FetchGitAheadBehind",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Applies a Git commit for uncommitted files in a Workspace.
        pub async fn commit_workspace_changes(
            &mut self,
            request: impl tonic::IntoRequest<super::CommitWorkspaceChangesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CommitWorkspaceChangesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CommitWorkspaceChanges",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CommitWorkspaceChanges",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Performs a Git reset for uncommitted files in a Workspace.
        pub async fn reset_workspace_changes(
            &mut self,
            request: impl tonic::IntoRequest<super::ResetWorkspaceChangesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ResetWorkspaceChangesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ResetWorkspaceChanges",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ResetWorkspaceChanges",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches Git diff for an uncommitted file in a Workspace.
        pub async fn fetch_file_diff(
            &mut self,
            request: impl tonic::IntoRequest<super::FetchFileDiffRequest>,
        ) -> std::result::Result<
            tonic::Response<super::FetchFileDiffResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/FetchFileDiff",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "FetchFileDiff",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a given Workspace directory.
        pub async fn query_directory_contents(
            &mut self,
            request: impl tonic::IntoRequest<super::QueryDirectoryContentsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::QueryDirectoryContentsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryDirectoryContents",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryDirectoryContents",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Finds the contents of a given Workspace directory by filter.
        pub async fn search_files(
            &mut self,
            request: impl tonic::IntoRequest<super::SearchFilesRequest>,
        ) -> std::result::Result<
            tonic::Response<super::SearchFilesResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/SearchFiles",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "SearchFiles",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a directory inside a Workspace.
        pub async fn make_directory(
            &mut self,
            request: impl tonic::IntoRequest<super::MakeDirectoryRequest>,
        ) -> std::result::Result<
            tonic::Response<super::MakeDirectoryResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/MakeDirectory",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "MakeDirectory",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a directory (inside a Workspace) and all of its contents.
        pub async fn remove_directory(
            &mut self,
            request: impl tonic::IntoRequest<super::RemoveDirectoryRequest>,
        ) -> std::result::Result<
            tonic::Response<super::RemoveDirectoryResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/RemoveDirectory",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "RemoveDirectory",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Moves a directory (inside a Workspace), and all of its contents, to a new
        /// location.
        pub async fn move_directory(
            &mut self,
            request: impl tonic::IntoRequest<super::MoveDirectoryRequest>,
        ) -> std::result::Result<
            tonic::Response<super::MoveDirectoryResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/MoveDirectory",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "MoveDirectory",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns the contents of a file (inside a Workspace).
        pub async fn read_file(
            &mut self,
            request: impl tonic::IntoRequest<super::ReadFileRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ReadFileResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ReadFile",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new("google.cloud.dataform.v1beta1.Dataform", "ReadFile"),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a file (inside a Workspace).
        pub async fn remove_file(
            &mut self,
            request: impl tonic::IntoRequest<super::RemoveFileRequest>,
        ) -> std::result::Result<
            tonic::Response<super::RemoveFileResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/RemoveFile",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "RemoveFile",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Moves a file (inside a Workspace) to a new location.
        pub async fn move_file(
            &mut self,
            request: impl tonic::IntoRequest<super::MoveFileRequest>,
        ) -> std::result::Result<
            tonic::Response<super::MoveFileResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/MoveFile",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new("google.cloud.dataform.v1beta1.Dataform", "MoveFile"),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Writes to a file (inside a Workspace).
        pub async fn write_file(
            &mut self,
            request: impl tonic::IntoRequest<super::WriteFileRequest>,
        ) -> std::result::Result<
            tonic::Response<super::WriteFileResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/WriteFile",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "WriteFile",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists ReleaseConfigs in a given Repository.
        pub async fn list_release_configs(
            &mut self,
            request: impl tonic::IntoRequest<super::ListReleaseConfigsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListReleaseConfigsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListReleaseConfigs",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListReleaseConfigs",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single ReleaseConfig.
        pub async fn get_release_config(
            &mut self,
            request: impl tonic::IntoRequest<super::GetReleaseConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::ReleaseConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetReleaseConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetReleaseConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new ReleaseConfig in a given Repository.
        pub async fn create_release_config(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateReleaseConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::ReleaseConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateReleaseConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateReleaseConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Updates a single ReleaseConfig.
        ///
        /// **Note:** *This method does not fully implement
        /// [AIP/134](https://google.aip.dev/134). The wildcard entry (\*) is treated
        /// as a bad request, and when the `field_mask` is omitted, the request is
        /// treated as a full update on all modifiable fields.*
        pub async fn update_release_config(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateReleaseConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::ReleaseConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateReleaseConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateReleaseConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single ReleaseConfig.
        pub async fn delete_release_config(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteReleaseConfigRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteReleaseConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteReleaseConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists CompilationResults in a given Repository.
        pub async fn list_compilation_results(
            &mut self,
            request: impl tonic::IntoRequest<super::ListCompilationResultsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListCompilationResultsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListCompilationResults",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListCompilationResults",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single CompilationResult.
        pub async fn get_compilation_result(
            &mut self,
            request: impl tonic::IntoRequest<super::GetCompilationResultRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CompilationResult>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetCompilationResult",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetCompilationResult",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new CompilationResult in a given project and location.
        pub async fn create_compilation_result(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateCompilationResultRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CompilationResult>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateCompilationResult",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateCompilationResult",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns CompilationResultActions in a given CompilationResult.
        pub async fn query_compilation_result_actions(
            &mut self,
            request: impl tonic::IntoRequest<super::QueryCompilationResultActionsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::QueryCompilationResultActionsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryCompilationResultActions",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryCompilationResultActions",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists WorkflowConfigs in a given Repository.
        pub async fn list_workflow_configs(
            &mut self,
            request: impl tonic::IntoRequest<super::ListWorkflowConfigsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListWorkflowConfigsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListWorkflowConfigs",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListWorkflowConfigs",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single WorkflowConfig.
        pub async fn get_workflow_config(
            &mut self,
            request: impl tonic::IntoRequest<super::GetWorkflowConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::WorkflowConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetWorkflowConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetWorkflowConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new WorkflowConfig in a given Repository.
        pub async fn create_workflow_config(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateWorkflowConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::WorkflowConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateWorkflowConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateWorkflowConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Updates a single WorkflowConfig.
        ///
        /// **Note:** *This method does not fully implement
        /// [AIP/134](https://google.aip.dev/134). The wildcard entry (\*) is treated
        /// as a bad request, and when the `field_mask` is omitted, the request is
        /// treated as a full update on all modifiable fields.*
        pub async fn update_workflow_config(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateWorkflowConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::WorkflowConfig>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateWorkflowConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateWorkflowConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single WorkflowConfig.
        pub async fn delete_workflow_config(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteWorkflowConfigRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteWorkflowConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteWorkflowConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Lists WorkflowInvocations in a given Repository.
        pub async fn list_workflow_invocations(
            &mut self,
            request: impl tonic::IntoRequest<super::ListWorkflowInvocationsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ListWorkflowInvocationsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/ListWorkflowInvocations",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "ListWorkflowInvocations",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Fetches a single WorkflowInvocation.
        pub async fn get_workflow_invocation(
            &mut self,
            request: impl tonic::IntoRequest<super::GetWorkflowInvocationRequest>,
        ) -> std::result::Result<
            tonic::Response<super::WorkflowInvocation>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetWorkflowInvocation",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetWorkflowInvocation",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Creates a new WorkflowInvocation in a given Repository.
        pub async fn create_workflow_invocation(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateWorkflowInvocationRequest>,
        ) -> std::result::Result<
            tonic::Response<super::WorkflowInvocation>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CreateWorkflowInvocation",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CreateWorkflowInvocation",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Deletes a single WorkflowInvocation.
        pub async fn delete_workflow_invocation(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteWorkflowInvocationRequest>,
        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/DeleteWorkflowInvocation",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "DeleteWorkflowInvocation",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Requests cancellation of a running WorkflowInvocation.
        pub async fn cancel_workflow_invocation(
            &mut self,
            request: impl tonic::IntoRequest<super::CancelWorkflowInvocationRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CancelWorkflowInvocationResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/CancelWorkflowInvocation",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "CancelWorkflowInvocation",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Returns WorkflowInvocationActions in a given WorkflowInvocation.
        pub async fn query_workflow_invocation_actions(
            &mut self,
            request: impl tonic::IntoRequest<
                super::QueryWorkflowInvocationActionsRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<super::QueryWorkflowInvocationActionsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/QueryWorkflowInvocationActions",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "QueryWorkflowInvocationActions",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Get default config for a given project and location.
        pub async fn get_config(
            &mut self,
            request: impl tonic::IntoRequest<super::GetConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::Config>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Update default config for a given project and location.
        ///
        /// **Note:** *This method does not fully implement
        /// [AIP/134](https://google.aip.dev/134). The wildcard entry (\*) is treated
        /// as a bad request, and when the `field_mask` is omitted, the request is
        /// treated as a full update on all modifiable fields.*
        pub async fn update_config(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateConfigRequest>,
        ) -> std::result::Result<tonic::Response<super::Config>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/UpdateConfig",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "UpdateConfig",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Gets the access control policy for a resource.
        /// Returns an empty policy if the resource exists and does not have a policy
        /// set.
        pub async fn get_iam_policy(
            &mut self,
            request: impl tonic::IntoRequest<
                super::super::super::super::iam::v1::GetIamPolicyRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<super::super::super::super::iam::v1::Policy>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/GetIamPolicy",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "GetIamPolicy",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// Sets the access control policy on the specified resource. Replaces any
        /// existing policy.
        ///
        /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
        pub async fn set_iam_policy(
            &mut self,
            request: impl tonic::IntoRequest<
                super::super::super::super::iam::v1::SetIamPolicyRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<super::super::super::super::iam::v1::Policy>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/SetIamPolicy",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "SetIamPolicy",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        /// 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.
        pub async fn test_iam_permissions(
            &mut self,
            request: impl tonic::IntoRequest<
                super::super::super::super::iam::v1::TestIamPermissionsRequest,
            >,
        ) -> std::result::Result<
            tonic::Response<
                super::super::super::super::iam::v1::TestIamPermissionsResponse,
            >,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic_prost::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.dataform.v1beta1.Dataform/TestIamPermissions",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.dataform.v1beta1.Dataform",
                        "TestIamPermissions",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
    }
}
