From 5261728f2ee874bc9f14bfecc52e4a178acaf711 Mon Sep 17 00:00:00 2001 From: Google APIs Date: Tue, 26 Jul 2022 00:33:17 -0700 Subject: [PATCH] feat: Release API version v1beta1 (no changes to v1alpha2) PiperOrigin-RevId: 463269555 --- google/cloud/dataform/v1alpha2/BUILD.bazel | 50 +- google/cloud/dataform/v1beta1/BUILD.bazel | 369 ++++ google/cloud/dataform/v1beta1/dataform.proto | 1629 +++++++++++++++++ .../v1beta1/dataform_grpc_service_config.json | 26 + .../dataform/v1beta1/dataform_v1beta1.yaml | 77 + 5 files changed, 2148 insertions(+), 3 deletions(-) create mode 100644 google/cloud/dataform/v1beta1/BUILD.bazel create mode 100644 google/cloud/dataform/v1beta1/dataform.proto create mode 100644 google/cloud/dataform/v1beta1/dataform_grpc_service_config.json create mode 100644 google/cloud/dataform/v1beta1/dataform_v1beta1.yaml diff --git a/google/cloud/dataform/v1alpha2/BUILD.bazel b/google/cloud/dataform/v1alpha2/BUILD.bazel index 837b4d385..aa483f5b3 100644 --- a/google/cloud/dataform/v1alpha2/BUILD.bazel +++ b/google/cloud/dataform/v1alpha2/BUILD.bazel @@ -99,6 +99,7 @@ java_gapic_test( # Open Source Packages java_gapic_assembly_gradle_pkg( name = "google-cloud-dataform-v1alpha2-java", + include_samples = True, transport = "grpc+rest", deps = [ ":dataform_java_gapic", @@ -283,10 +284,9 @@ ruby_grpc_library( ruby_cloud_gapic_library( name = "dataform_ruby_gapic", srcs = [":dataform_proto_with_info"], - extra_protoc_parameters = [ - "ruby-cloud-gem-name=google-cloud-dataform-v1alpha2", - ], + extra_protoc_parameters = ["ruby-cloud-gem-name=google-cloud-dataform-v1alpha2"], grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1alpha2.yaml", deps = [ ":dataform_ruby_grpc", ":dataform_ruby_proto", @@ -303,6 +303,50 @@ ruby_gapic_assembly_pkg( ], ) +############################################################################## +# C# +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "csharp_gapic_assembly_pkg", + "csharp_gapic_library", + "csharp_grpc_library", + "csharp_proto_library", +) + +csharp_proto_library( + name = "dataform_csharp_proto", + deps = [":dataform_proto"], +) + +csharp_grpc_library( + name = "dataform_csharp_grpc", + srcs = [":dataform_proto"], + deps = [":dataform_csharp_proto"], +) + +csharp_gapic_library( + name = "dataform_csharp_gapic", + srcs = [":dataform_proto_with_info"], + common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json", + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1alpha2.yaml", + deps = [ + ":dataform_csharp_grpc", + ":dataform_csharp_proto", + ], +) + +# Open Source Packages +csharp_gapic_assembly_pkg( + name = "google-cloud-dataform-v1alpha2-csharp", + deps = [ + ":dataform_csharp_gapic", + ":dataform_csharp_grpc", + ":dataform_csharp_proto", + ], +) + ############################################################################## # C++ ############################################################################## diff --git a/google/cloud/dataform/v1beta1/BUILD.bazel b/google/cloud/dataform/v1beta1/BUILD.bazel new file mode 100644 index 000000000..8ae1836a0 --- /dev/null +++ b/google/cloud/dataform/v1beta1/BUILD.bazel @@ -0,0 +1,369 @@ +# This file was automatically generated by BuildFileGenerator +# https://github.com/googleapis/rules_gapic/tree/master/bazel + +# Most of the manual changes to this file will be overwritten. +# It's **only** allowed to change the following rule attribute values: +# - names of *_gapic_assembly_* rules +# - certain parameters of *_gapic_library rules, including but not limited to: +# * extra_protoc_parameters +# * extra_protoc_file_parameters +# The complete list of preserved parameters can be found in the source code. + +# This is an API workspace, having public visibility by default makes perfect sense. +package(default_visibility = ["//visibility:public"]) + +############################################################################## +# Common +############################################################################## +load("@rules_proto//proto:defs.bzl", "proto_library") +load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info") + +proto_library( + name = "dataform_proto", + srcs = [ + "dataform.proto", + ], + deps = [ + "//google/api:annotations_proto", + "//google/api:client_proto", + "//google/api:field_behavior_proto", + "//google/api:resource_proto", + "//google/type:interval_proto", + "@com_google_protobuf//:empty_proto", + "@com_google_protobuf//:field_mask_proto", + ], +) + +proto_library_with_info( + name = "dataform_proto_with_info", + deps = [ + ":dataform_proto", + "//google/cloud:common_resources_proto", + "//google/cloud/location:location_proto", + "//google/iam/v1:iam_policy_proto", + ], +) + +############################################################################## +# Java +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "java_gapic_assembly_gradle_pkg", + "java_gapic_library", + "java_gapic_test", + "java_grpc_library", + "java_proto_library", +) + +java_proto_library( + name = "dataform_java_proto", + deps = [":dataform_proto"], +) + +java_grpc_library( + name = "dataform_java_grpc", + srcs = [":dataform_proto"], + deps = [":dataform_java_proto"], +) + +java_gapic_library( + name = "dataform_java_gapic", + srcs = [":dataform_proto_with_info"], + gapic_yaml = None, + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1beta1.yaml", + test_deps = [ + ":dataform_java_grpc", + "//google/cloud/location:location_java_grpc", + "//google/iam/v1:iam_java_grpc", + ], + transport = "grpc+rest", + deps = [ + ":dataform_java_proto", + "//google/api:api_java_proto", + "//google/cloud/location:location_java_proto", + "//google/iam/v1:iam_java_proto", + ], +) + +java_gapic_test( + name = "dataform_java_gapic_test_suite", + test_classes = [ + "com.google.cloud.dataform.v1beta1.DataformClientHttpJsonTest", + "com.google.cloud.dataform.v1beta1.DataformClientTest", + ], + runtime_deps = [":dataform_java_gapic_test"], +) + +# Open Source Packages +java_gapic_assembly_gradle_pkg( + name = "google-cloud-dataform-v1beta1-java", + include_samples = True, + transport = "grpc+rest", + deps = [ + ":dataform_java_gapic", + ":dataform_java_grpc", + ":dataform_java_proto", + ":dataform_proto", + ], +) + +############################################################################## +# Go +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "go_gapic_assembly_pkg", + "go_gapic_library", + "go_proto_library", + "go_test", +) + +go_proto_library( + name = "dataform_go_proto", + compilers = ["@io_bazel_rules_go//proto:go_grpc"], + importpath = "google.golang.org/genproto/googleapis/cloud/dataform/v1beta1", + protos = [":dataform_proto"], + deps = [ + "//google/api:annotations_go_proto", + "//google/type:interval_go_proto", + ], +) + +go_gapic_library( + name = "dataform_go_gapic", + srcs = [":dataform_proto_with_info"], + grpc_service_config = "dataform_grpc_service_config.json", + importpath = "cloud.google.com/go/dataform/apiv1beta1;dataform", + metadata = True, + service_yaml = "dataform_v1beta1.yaml", + transport = "grpc+rest", + deps = [ + ":dataform_go_proto", + "//google/cloud/location:location_go_proto", + "//google/iam/v1:iam_go_proto", + ], +) + +go_test( + name = "dataform_go_gapic_test", + srcs = [":dataform_go_gapic_srcjar_test"], + embed = [":dataform_go_gapic"], + importpath = "cloud.google.com/go/dataform/apiv1beta1", +) + +# Open Source Packages +go_gapic_assembly_pkg( + name = "gapi-cloud-dataform-v1beta1-go", + deps = [ + ":dataform_go_gapic", + ":dataform_go_gapic_srcjar-metadata.srcjar", + ":dataform_go_gapic_srcjar-test.srcjar", + ":dataform_go_proto", + ], +) + +############################################################################## +# Python +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "py_gapic_assembly_pkg", + "py_gapic_library", +) + +py_gapic_library( + name = "dataform_py_gapic", + srcs = [":dataform_proto"], + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1beta1.yaml", +) + +# Open Source Packages +py_gapic_assembly_pkg( + name = "dataform-v1beta1-py", + deps = [ + ":dataform_py_gapic", + ], +) + +############################################################################## +# PHP +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "php_gapic_assembly_pkg", + "php_gapic_library", + "php_grpc_library", + "php_proto_library", +) + +php_proto_library( + name = "dataform_php_proto", + deps = [":dataform_proto"], +) + +php_grpc_library( + name = "dataform_php_grpc", + srcs = [":dataform_proto"], + deps = [":dataform_php_proto"], +) + +php_gapic_library( + name = "dataform_php_gapic", + srcs = [":dataform_proto_with_info"], + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1beta1.yaml", + deps = [ + ":dataform_php_grpc", + ":dataform_php_proto", + ], +) + +# Open Source Packages +php_gapic_assembly_pkg( + name = "google-cloud-dataform-v1beta1-php", + deps = [ + ":dataform_php_gapic", + ":dataform_php_grpc", + ":dataform_php_proto", + ], +) + +############################################################################## +# Node.js +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "nodejs_gapic_assembly_pkg", + "nodejs_gapic_library", +) + +nodejs_gapic_library( + name = "dataform_nodejs_gapic", + package_name = "@google-cloud/dataform", + src = ":dataform_proto_with_info", + extra_protoc_parameters = ["metadata"], + grpc_service_config = "dataform_grpc_service_config.json", + package = "google.cloud.dataform.v1beta1", + service_yaml = "dataform_v1beta1.yaml", + deps = [], +) + +nodejs_gapic_assembly_pkg( + name = "dataform-v1beta1-nodejs", + deps = [ + ":dataform_nodejs_gapic", + ":dataform_proto", + ], +) + +############################################################################## +# Ruby +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "ruby_cloud_gapic_library", + "ruby_gapic_assembly_pkg", + "ruby_grpc_library", + "ruby_proto_library", +) + +ruby_proto_library( + name = "dataform_ruby_proto", + deps = [":dataform_proto"], +) + +ruby_grpc_library( + name = "dataform_ruby_grpc", + srcs = [":dataform_proto"], + deps = [":dataform_ruby_proto"], +) + +ruby_cloud_gapic_library( + name = "dataform_ruby_gapic", + srcs = [":dataform_proto_with_info"], + extra_protoc_parameters = ["ruby-cloud-gem-name=google-cloud-dataform-v1beta1"], + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1beta1.yaml", + deps = [ + ":dataform_ruby_grpc", + ":dataform_ruby_proto", + ], +) + +# Open Source Packages +ruby_gapic_assembly_pkg( + name = "google-cloud-dataform-v1beta1-ruby", + deps = [ + ":dataform_ruby_gapic", + ":dataform_ruby_grpc", + ":dataform_ruby_proto", + ], +) + +############################################################################## +# C# +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "csharp_gapic_assembly_pkg", + "csharp_gapic_library", + "csharp_grpc_library", + "csharp_proto_library", +) + +csharp_proto_library( + name = "dataform_csharp_proto", + deps = [":dataform_proto"], +) + +csharp_grpc_library( + name = "dataform_csharp_grpc", + srcs = [":dataform_proto"], + deps = [":dataform_csharp_proto"], +) + +csharp_gapic_library( + name = "dataform_csharp_gapic", + srcs = [":dataform_proto_with_info"], + common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json", + grpc_service_config = "dataform_grpc_service_config.json", + service_yaml = "dataform_v1beta1.yaml", + deps = [ + ":dataform_csharp_grpc", + ":dataform_csharp_proto", + ], +) + +# Open Source Packages +csharp_gapic_assembly_pkg( + name = "google-cloud-dataform-v1beta1-csharp", + deps = [ + ":dataform_csharp_gapic", + ":dataform_csharp_grpc", + ":dataform_csharp_proto", + ], +) + +############################################################################## +# C++ +############################################################################## +load( + "@com_google_googleapis_imports//:imports.bzl", + "cc_grpc_library", + "cc_proto_library", +) + +cc_proto_library( + name = "dataform_cc_proto", + deps = [":dataform_proto"], +) + +cc_grpc_library( + name = "dataform_cc_grpc", + srcs = [":dataform_proto"], + grpc_only = True, + deps = [":dataform_cc_proto"], +) diff --git a/google/cloud/dataform/v1beta1/dataform.proto b/google/cloud/dataform/v1beta1/dataform.proto new file mode 100644 index 000000000..57d43c3e0 --- /dev/null +++ b/google/cloud/dataform/v1beta1/dataform.proto @@ -0,0 +1,1629 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.dataform.v1beta1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/type/interval.proto"; + +option csharp_namespace = "Google.Cloud.Dataform.V1Beta1"; +option go_package = "google.golang.org/genproto/googleapis/cloud/dataform/v1beta1;dataform"; +option java_multiple_files = true; +option java_outer_classname = "DataformProto"; +option java_package = "com.google.cloud.dataform.v1beta1"; +option php_namespace = "Google\\Cloud\\Dataform\\V1beta1"; +option ruby_package = "Google::Cloud::Dataform::V1beta1"; +option (google.api.resource_definition) = { + type: "secretmanager.googleapis.com/SecretVersion" + pattern: "projects/{project}/secrets/{secret}/versions/{version}" +}; + +// Dataform is a service to develop, create, document, test, and update curated +// tables in BigQuery. +service Dataform { + option (google.api.default_host) = "dataform.googleapis.com"; + option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + + // Lists Repositories in a given project and location. + rpc ListRepositories(ListRepositoriesRequest) returns (ListRepositoriesResponse) { + option (google.api.http) = { + get: "/v1beta1/{parent=projects/*/locations/*}/repositories" + }; + option (google.api.method_signature) = "parent"; + } + + // Fetches a single Repository. + rpc GetRepository(GetRepositoryRequest) returns (Repository) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new Repository in a given project and location. + rpc CreateRepository(CreateRepositoryRequest) returns (Repository) { + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/locations/*}/repositories" + body: "repository" + }; + option (google.api.method_signature) = "parent,repository,repository_id"; + } + + // Updates a single Repository. + rpc UpdateRepository(UpdateRepositoryRequest) returns (Repository) { + option (google.api.http) = { + patch: "/v1beta1/{repository.name=projects/*/locations/*/repositories/*}" + body: "repository" + }; + option (google.api.method_signature) = "repository,update_mask"; + } + + // Deletes a single Repository. + rpc DeleteRepository(DeleteRepositoryRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1beta1/{name=projects/*/locations/*/repositories/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Fetches a Repository's remote branches. + rpc FetchRemoteBranches(FetchRemoteBranchesRequest) returns (FetchRemoteBranchesResponse) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*}:fetchRemoteBranches" + }; + } + + // Lists Workspaces in a given Repository. + rpc ListWorkspaces(ListWorkspacesRequest) returns (ListWorkspacesResponse) { + option (google.api.http) = { + get: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/workspaces" + }; + option (google.api.method_signature) = "parent"; + } + + // Fetches a single Workspace. + rpc GetWorkspace(GetWorkspaceRequest) returns (Workspace) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new Workspace in a given Repository. + rpc CreateWorkspace(CreateWorkspaceRequest) returns (Workspace) { + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/workspaces" + body: "workspace" + }; + option (google.api.method_signature) = "parent,workspace,workspace_id"; + } + + // Deletes a single Workspace. + rpc DeleteWorkspace(DeleteWorkspaceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Installs dependency NPM packages (inside a Workspace). + rpc InstallNpmPackages(InstallNpmPackagesRequest) returns (InstallNpmPackagesResponse) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:installNpmPackages" + body: "*" + }; + } + + // Pulls Git commits from the Repository's remote into a Workspace. + rpc PullGitCommits(PullGitCommitsRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:pull" + body: "*" + }; + } + + // Pushes Git commits from a Workspace to the Repository's remote. + rpc PushGitCommits(PushGitCommitsRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:push" + body: "*" + }; + } + + // Fetches Git statuses for the files in a Workspace. + rpc FetchFileGitStatuses(FetchFileGitStatusesRequest) returns (FetchFileGitStatusesResponse) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:fetchFileGitStatuses" + }; + } + + // Fetches Git ahead/behind against a remote branch. + rpc FetchGitAheadBehind(FetchGitAheadBehindRequest) returns (FetchGitAheadBehindResponse) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:fetchGitAheadBehind" + }; + } + + // Applies a Git commit for uncommitted files in a Workspace. + rpc CommitWorkspaceChanges(CommitWorkspaceChangesRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:commit" + body: "*" + }; + } + + // Performs a Git reset for uncommitted files in a Workspace. + rpc ResetWorkspaceChanges(ResetWorkspaceChangesRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{name=projects/*/locations/*/repositories/*/workspaces/*}:reset" + body: "*" + }; + } + + // Fetches Git diff for an uncommitted file in a Workspace. + rpc FetchFileDiff(FetchFileDiffRequest) returns (FetchFileDiffResponse) { + option (google.api.http) = { + get: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:fetchFileDiff" + }; + } + + // Returns the contents of a given Workspace directory. + rpc QueryDirectoryContents(QueryDirectoryContentsRequest) returns (QueryDirectoryContentsResponse) { + option (google.api.http) = { + get: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:queryDirectoryContents" + }; + } + + // Creates a directory inside a Workspace. + rpc MakeDirectory(MakeDirectoryRequest) returns (MakeDirectoryResponse) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:makeDirectory" + body: "*" + }; + } + + // Deletes a directory (inside a Workspace) and all of its contents. + rpc RemoveDirectory(RemoveDirectoryRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:removeDirectory" + body: "*" + }; + } + + // Moves a directory (inside a Workspace), and all of its contents, to a new + // location. + rpc MoveDirectory(MoveDirectoryRequest) returns (MoveDirectoryResponse) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:moveDirectory" + body: "*" + }; + } + + // Returns the contents of a file (inside a Workspace). + rpc ReadFile(ReadFileRequest) returns (ReadFileResponse) { + option (google.api.http) = { + get: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:readFile" + }; + } + + // Deletes a file (inside a Workspace). + rpc RemoveFile(RemoveFileRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:removeFile" + body: "*" + }; + } + + // Moves a file (inside a Workspace) to a new location. + rpc MoveFile(MoveFileRequest) returns (MoveFileResponse) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:moveFile" + body: "*" + }; + } + + // Writes to a file (inside a Workspace). + rpc WriteFile(WriteFileRequest) returns (WriteFileResponse) { + option (google.api.http) = { + post: "/v1beta1/{workspace=projects/*/locations/*/repositories/*/workspaces/*}:writeFile" + body: "*" + }; + } + + // Lists CompilationResults in a given Repository. + rpc ListCompilationResults(ListCompilationResultsRequest) returns (ListCompilationResultsResponse) { + option (google.api.http) = { + get: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/compilationResults" + }; + option (google.api.method_signature) = "parent"; + } + + // Fetches a single CompilationResult. + rpc GetCompilationResult(GetCompilationResultRequest) returns (CompilationResult) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/compilationResults/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new CompilationResult in a given project and location. + rpc CreateCompilationResult(CreateCompilationResultRequest) returns (CompilationResult) { + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/compilationResults" + body: "compilation_result" + }; + option (google.api.method_signature) = "parent,compilation_result"; + } + + // Returns CompilationResultActions in a given CompilationResult. + rpc QueryCompilationResultActions(QueryCompilationResultActionsRequest) returns (QueryCompilationResultActionsResponse) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/compilationResults/*}:query" + }; + } + + // Lists WorkflowInvocations in a given Repository. + rpc ListWorkflowInvocations(ListWorkflowInvocationsRequest) returns (ListWorkflowInvocationsResponse) { + option (google.api.http) = { + get: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/workflowInvocations" + }; + option (google.api.method_signature) = "parent"; + } + + // Fetches a single WorkflowInvocation. + rpc GetWorkflowInvocation(GetWorkflowInvocationRequest) returns (WorkflowInvocation) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/workflowInvocations/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new WorkflowInvocation in a given Repository. + rpc CreateWorkflowInvocation(CreateWorkflowInvocationRequest) returns (WorkflowInvocation) { + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/locations/*/repositories/*}/workflowInvocations" + body: "workflow_invocation" + }; + option (google.api.method_signature) = "parent,workflow_invocation"; + } + + // Deletes a single WorkflowInvocation. + rpc DeleteWorkflowInvocation(DeleteWorkflowInvocationRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/v1beta1/{name=projects/*/locations/*/repositories/*/workflowInvocations/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Requests cancellation of a running WorkflowInvocation. + rpc CancelWorkflowInvocation(CancelWorkflowInvocationRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v1beta1/{name=projects/*/locations/*/repositories/*/workflowInvocations/*}:cancel" + body: "*" + }; + } + + // Returns WorkflowInvocationActions in a given WorkflowInvocation. + rpc QueryWorkflowInvocationActions(QueryWorkflowInvocationActionsRequest) returns (QueryWorkflowInvocationActionsResponse) { + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/locations/*/repositories/*/workflowInvocations/*}:query" + }; + } +} + +// Represents a Dataform Git repository. +message Repository { + option (google.api.resource) = { + type: "dataform.googleapis.com/Repository" + pattern: "projects/{project}/locations/{location}/repositories/{repository}" + }; + + // Controls Git remote configuration for a repository. + message GitRemoteSettings { + // Indicates the status of a Git authentication token. + enum TokenStatus { + // Default value. This value is unused. + TOKEN_STATUS_UNSPECIFIED = 0; + + // The token could not be found in Secret Manager (or the Dataform + // Service Account did not have permission to access it). + NOT_FOUND = 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; + } + + // Required. The Git remote's URL. + string url = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The Git remote's default branch name. + string default_branch = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. 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/*`. + string authentication_token_secret_version = 3 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "secretmanager.googleapis.com/SecretVersion" + } + ]; + + // Output only. Indicates the status of the Git access token. + TokenStatus token_status = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + } + + // Output only. The repository's name. + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. If set, configures this repository to be linked to a Git remote. + GitRemoteSettings git_remote_settings = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ListRepositories` request message. +message ListRepositoriesRequest { + // Required. The location in which to list repositories. Must be in the format + // `projects/*/locations/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Optional. Maximum number of repositories to return. The server may return fewer + // items than requested. If unspecified, the server will pick an appropriate + // default. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `ListRepositories` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to `ListRepositories` + // must match the call that provided the page token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // 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. + string order_by = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Filter for the returned list. + string filter = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ListRepositories` response message. +message ListRepositoriesResponse { + // List of repositories. + repeated Repository repositories = 1; + + // A token which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; + + // Locations which could not be reached. + repeated string unreachable = 3; +} + +// `GetRepository` request message. +message GetRepositoryRequest { + // Required. The repository's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; +} + +// `CreateRepository` request message. +message CreateRepositoryRequest { + // Required. The location in which to create the repository. Must be in the format + // `projects/*/locations/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "locations.googleapis.com/Location" + } + ]; + + // Required. The repository to create. + Repository repository = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The ID to use for the repository, which will become the final component of + // the repository's resource name. + string repository_id = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `UpdateRepository` request message. +message UpdateRepositoryRequest { + // Optional. Specifies the fields to be updated in the repository. If left unset, + // all fields will be updated. + google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL]; + + // Required. The repository to update. + Repository repository = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `DeleteRepository` request message. +message DeleteRepositoryRequest { + // Required. The repository's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // If set to true, any child resources of this repository will also be + // deleted. (Otherwise, the request will only succeed if the repository has no + // child resources.) + bool force = 2; +} + +// `FetchRemoteBranches` request message. +message FetchRemoteBranchesRequest { + // Required. The repository's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; +} + +// `FetchRemoteBranches` response message. +message FetchRemoteBranchesResponse { + // The remote repository's branch names. + repeated string branches = 1; +} + +// Represents a Dataform Git workspace. +message Workspace { + option (google.api.resource) = { + type: "dataform.googleapis.com/Workspace" + pattern: "projects/{project}/locations/{location}/repositories/{repository}/workspaces/{workspace}" + }; + + // Output only. The workspace's name. + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// `ListWorkspaces` request message. +message ListWorkspacesRequest { + // Required. The repository in which to list workspaces. Must be in the + // format `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // Optional. Maximum number of workspaces to return. The server may return fewer + // items than requested. If unspecified, the server will pick an appropriate + // default. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `ListWorkspaces` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to `ListWorkspaces` + // must match the call that provided the page token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // 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. + string order_by = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Filter for the returned list. + string filter = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ListWorkspaces` response message. +message ListWorkspacesResponse { + // List of workspaces. + repeated Workspace workspaces = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; + + // Locations which could not be reached. + repeated string unreachable = 3; +} + +// `GetWorkspace` request message. +message GetWorkspaceRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; +} + +// `CreateWorkspace` request message. +message CreateWorkspaceRequest { + // Required. The repository in which to create the workspace. Must be in the format + // `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // Required. The workspace to create. + Workspace workspace = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The ID to use for the workspace, which will become the final component of + // the workspace's resource name. + string workspace_id = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `DeleteWorkspace` request message. +message DeleteWorkspaceRequest { + // Required. The workspace resource's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; +} + +// Represents the author of a Git commit. +message CommitAuthor { + // Required. The commit author's name. + string name = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The commit author's email address. + string email_address = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `PullGitCommits` request message. +message PullGitCommitsRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // 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. + string remote_branch = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Required. The author of any merge commit which may be created as a result of merging + // fetched Git commits into this workspace. + CommitAuthor author = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `PushGitCommits` request message. +message PushGitCommitsRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // 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. + string remote_branch = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// `FetchFileGitStatuses` request message. +message FetchFileGitStatusesRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; +} + +// `FetchFileGitStatuses` response message. +message FetchFileGitStatusesResponse { + // Represents the Git state of a file with uncommitted changes. + message UncommittedFileChange { + // Indicates the status of an uncommitted file change. + enum State { + // Default value. This value is unused. + STATE_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. + HAS_CONFLICTS = 4; + } + + // The file's full path including filename, relative to the workspace root. + string path = 1; + + // Indicates the status of the file. + State state = 2; + } + + // A list of all files which have uncommitted Git changes. There will only be + // a single entry for any given file. + repeated UncommittedFileChange uncommitted_file_changes = 1; +} + +// `FetchGitAheadBehind` request message. +message FetchGitAheadBehindRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // 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. + string remote_branch = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// `FetchGitAheadBehind` response message. +message FetchGitAheadBehindResponse { + // The number of commits in the remote branch that are not in the workspace. + int32 commits_ahead = 1; + + // The number of commits in the workspace that are not in the remote branch. + int32 commits_behind = 2; +} + +// `CommitWorkspaceChanges` request message. +message CommitWorkspaceChangesRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The commit's author. + CommitAuthor author = 4 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The commit's message. + string commit_message = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Full file paths to commit including filename, rooted at workspace root. If + // left empty, all files will be committed. + repeated string paths = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ResetWorkspaceChanges` request message. +message ResetWorkspaceChangesRequest { + // Required. The workspace's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // 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. + repeated string paths = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. If set to true, untracked files will be deleted. + bool clean = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// `FetchFileDiff` request message. +message FetchFileDiffRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The file's full path including filename, relative to the workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `FetchFileDiff` response message. +message FetchFileDiffResponse { + // The raw formatted Git diff for the file. + string formatted_diff = 1; +} + +// `QueryDirectoryContents` request message. +message QueryDirectoryContentsRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Optional. The directory's full path including directory name, relative to the + // workspace root. If left unset, the workspace root is used. + string path = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Maximum number of paths to return. The server may return fewer + // items than requested. If unspecified, the server will pick an appropriate + // default. + int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `QueryDirectoryContents` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to + // `QueryDirectoryContents` must match the call that provided the page + // token. + string page_token = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// `QueryDirectoryContents` response message. +message QueryDirectoryContentsResponse { + // Represents a single entry in a workspace directory. + message DirectoryEntry { + oneof entry { + // A file in the directory. + string file = 1; + + // A child directory in the directory. + string directory = 2; + } + } + + // List of entries in the directory. + repeated DirectoryEntry directory_entries = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; +} + +// `MakeDirectory` request message. +message MakeDirectoryRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The directory's full path including directory name, relative to the + // workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `MakeDirectory` response message. +message MakeDirectoryResponse { + +} + +// `RemoveDirectory` request message. +message RemoveDirectoryRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The directory's full path including directory name, relative to the + // workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `MoveDirectory` request message. +message MoveDirectoryRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The directory's full path including directory name, relative to the + // workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The new path for the directory including directory name, rooted at + // workspace root. + string new_path = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `MoveDirectory` response message. +message MoveDirectoryResponse { + +} + +// `ReadFile` request message. +message ReadFileRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The file's full path including filename, relative to the workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `ReadFile` response message. +message ReadFileResponse { + // The file's contents. + bytes file_contents = 1; +} + +// `RemoveFile` request message. +message RemoveFileRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The file's full path including filename, relative to the workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `MoveFile` request message. +message MoveFileRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The file's full path including filename, relative to the workspace root. + string path = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The file's new path including filename, relative to the workspace root. + string new_path = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `MoveFile` response message. +message MoveFileResponse { + +} + +// `WriteFile` request message. +message WriteFileRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + + // Required. The file. + string path = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The file's contents. + bytes contents = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// `WriteFile` response message. +message WriteFileResponse { + +} + +// `InstallNpmPackages` request message. +message InstallNpmPackagesRequest { + // Required. The workspace's name. + string workspace = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; +} + +// `InstallNpmPackages` response message. +message InstallNpmPackagesResponse { + +} + +// Represents the result of compiling a Dataform project. +message CompilationResult { + option (google.api.resource) = { + type: "dataform.googleapis.com/CompilationResult" + pattern: "projects/{project}/locations/{location}/repositories/{repository}/compilationResults/{compilation_result}" + }; + + // Configures various aspects of Dataform code compilation. + message CodeCompilationConfig { + // Optional. The default database (Google Cloud project ID). + string default_database = 1 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The default schema (BigQuery dataset ID). + string default_schema = 2 [(google.api.field_behavior) = OPTIONAL]; + + // 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. + string default_location = 8 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The default schema (BigQuery dataset ID) for assertions. + string assertion_schema = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. User-defined variables that are made available to project code during + // compilation. + map vars = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The suffix that should be appended to all database (Google Cloud project + // ID) names. + string database_suffix = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The suffix that should be appended to all schema (BigQuery dataset ID) + // names. + string schema_suffix = 6 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The prefix that should be prepended to all table names. + string table_prefix = 7 [(google.api.field_behavior) = OPTIONAL]; + } + + // An error encountered when attempting to compile a Dataform project. + message CompilationError { + // Output only. The error's top level message. + string message = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The error's full stack trace. + string stack = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The path of the file where this error occurred, if available, relative to + // the project root. + string path = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The identifier of the action where this error occurred, if available. + Target action_target = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + } + + // Output only. The compilation result's name. + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + oneof 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` + string git_commitish = 2 [(google.api.field_behavior) = IMMUTABLE]; + + // Immutable. The name of the workspace to compile. Must be in the format + // `projects/*/locations/*/repositories/*/workspaces/*`. + string workspace = 3 [ + (google.api.field_behavior) = IMMUTABLE, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Workspace" + } + ]; + } + + // Immutable. If set, fields of `code_compilation_overrides` override the default + // compilation settings that are specified in dataform.json. + CodeCompilationConfig code_compilation_config = 4 [(google.api.field_behavior) = IMMUTABLE]; + + // Output only. The version of `@dataform/core` that was used for compilation. + string dataform_core_version = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Errors encountered during project compilation. + repeated CompilationError compilation_errors = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// `ListCompilationResults` request message. +message ListCompilationResultsRequest { + // Required. The repository in which to list compilation results. Must be in the + // format `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // 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. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `ListCompilationResults` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to `ListCompilationResults` + // must match the call that provided the page token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ListCompilationResults` response message. +message ListCompilationResultsResponse { + // List of compilation results. + repeated CompilationResult compilation_results = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; + + // Locations which could not be reached. + repeated string unreachable = 3; +} + +// `GetCompilationResult` request message. +message GetCompilationResultRequest { + // Required. The compilation result's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/CompilationResult" + } + ]; +} + +// `CreateCompilationResult` request message. +message CreateCompilationResultRequest { + // Required. The repository in which to create the compilation result. Must be in the + // format `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // Required. The compilation result to create. + CompilationResult compilation_result = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Represents an action identifier. If the action writes output, the output +// will be written to the referenced database object. +message Target { + // The action's database (Google Cloud project ID) . + string database = 1; + + // The action's schema (BigQuery dataset ID), within `database`. + string schema = 2; + + // The action's name, within `database` and `schema`. + string name = 3; +} + +// Describes a relation and its columns. +message RelationDescriptor { + // Describes a column. + message ColumnDescriptor { + // The identifier for the column. Each entry in `path` represents one level + // of nesting. + repeated string path = 1; + + // A textual description of the column. + string description = 2; + + // A list of BigQuery policy tags that will be applied to the column. + repeated string bigquery_policy_tags = 3; + } + + // A text description of the relation. + string description = 1; + + // A list of descriptions of columns within the relation. + repeated ColumnDescriptor columns = 2; + + // A set of BigQuery labels that should be applied to the relation. + map bigquery_labels = 3; +} + +// Represents a single Dataform action in a compilation result. +message CompilationResultAction { + // Represents a database relation. + message Relation { + // Indicates the type of this relation. + enum RelationType { + // Default value. This value is unused. + RELATION_TYPE_UNSPECIFIED = 0; + + // The relation is a table. + TABLE = 1; + + // The relation is a view. + VIEW = 2; + + // The relation is an incrementalized table. + INCREMENTAL_TABLE = 3; + + // The relation is a materialized view. + MATERIALIZED_VIEW = 4; + } + + // Contains settings for relations of type `INCREMENTAL_TABLE`. + message IncrementalTableConfig { + // The SELECT query which returns rows which should be inserted into the + // relation if it already exists and is not being refreshed. + string incremental_select_query = 1; + + // Whether this table should be protected from being refreshed. + bool refresh_disabled = 2; + + // 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. + repeated string unique_key_parts = 3; + + // A SQL expression conditional used to limit the set of existing rows + // considered for a merge operation (see `unique_key_parts` for more + // information). + string update_partition_filter = 4; + + // SQL statements to be executed before inserting new rows into the + // relation. + repeated string incremental_pre_operations = 5; + + // SQL statements to be executed after inserting new rows into the + // relation. + repeated string incremental_post_operations = 6; + } + + // A list of actions that this action depends on. + repeated Target dependency_targets = 1; + + // Whether this action is disabled (i.e. should not be run). + bool disabled = 2; + + // Arbitrary, user-defined tags on this action. + repeated string tags = 3; + + // Descriptor for the relation and its columns. + RelationDescriptor relation_descriptor = 4; + + // The type of this relation. + RelationType relation_type = 5; + + // The SELECT query which returns rows which this relation should contain. + string select_query = 6; + + // SQL statements to be executed before creating the relation. + repeated string pre_operations = 7; + + // SQL statements to be executed after creating the relation. + repeated string post_operations = 8; + + // Configures `INCREMENTAL_TABLE` settings for this relation. Only set if + // `relation_type` is `INCREMENTAL_TABLE`. + IncrementalTableConfig incremental_table_config = 9; + + // The SQL expression used to partition the relation. + string partition_expression = 10; + + // A list of columns or SQL expressions used to cluster the table. + repeated string cluster_expressions = 11; + + // Sets the partition expiration in days. + int32 partition_expiration_days = 12; + + // Specifies whether queries on this table must include a predicate filter + // that filters on the partitioning column. + bool require_partition_filter = 13; + + // 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. + map additional_options = 14; + } + + // Represents a list of arbitrary database operations. + message Operations { + // A list of actions that this action depends on. + repeated Target dependency_targets = 1; + + // Whether this action is disabled (i.e. should not be run). + bool disabled = 2; + + // Arbitrary, user-defined tags on this action. + repeated string tags = 3; + + // Descriptor for any output relation and its columns. Only set if + // `has_output` is true. + RelationDescriptor relation_descriptor = 6; + + // A list of arbitrary SQL statements that will be executed without + // alteration. + repeated string queries = 4; + + // Whether these operations produce an output relation. + bool has_output = 5; + } + + // Represents an assertion upon a SQL query which is required return zero + // rows. + message Assertion { + // A list of actions that this action depends on. + repeated Target dependency_targets = 1; + + // The parent action of this assertion. Only set if this assertion was + // automatically generated. + Target parent_action = 5; + + // Whether this action is disabled (i.e. should not be run). + bool disabled = 2; + + // Arbitrary, user-defined tags on this action. + repeated string tags = 3; + + // The SELECT query which must return zero rows in order for this assertion + // to succeed. + string select_query = 4; + + // Descriptor for the assertion's automatically-generated view and its + // columns. + RelationDescriptor relation_descriptor = 6; + } + + // Represents a relation which is not managed by Dataform but which may be + // referenced by Dataform actions. + message 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. + RelationDescriptor relation_descriptor = 1; + } + + // This action's identifier. Unique within the compilation result. + Target target = 1; + + // The action's identifier if the project had been compiled without any + // overrides configured. Unique within the compilation result. + Target canonical_target = 2; + + // The full path including filename in which this action is located, relative + // to the workspace root. + string file_path = 3; + + oneof compiled_object { + // The database relation created/updated by this action. + Relation relation = 4; + + // The database operations executed by this action. + Operations operations = 5; + + // The assertion executed by this action. + Assertion assertion = 6; + + // The declaration declared by this action. + Declaration declaration = 7; + } +} + +// `QueryCompilationResultActions` request message. +message QueryCompilationResultActionsRequest { + // Required. The compilation result's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/CompilationResult" + } + ]; + + // 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. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `QueryCompilationResultActions` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to + // `QueryCompilationResultActions` must match the call that provided the page + // token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Optional filter for the returned list. Filtering is only currently + // supported on the `file_path` field. + string filter = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// `QueryCompilationResultActions` response message. +message QueryCompilationResultActionsResponse { + // List of compilation result actions. + repeated CompilationResultAction compilation_result_actions = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; +} + +// Represents a single invocation of a compilation result. +message WorkflowInvocation { + option (google.api.resource) = { + type: "dataform.googleapis.com/WorkflowInvocation" + pattern: "projects/{project}/locations/{location}/repositories/{repository}/workflowInvocations/{workflow_invocation}" + }; + + // Includes various configuration options for this workflow invocation. + // If both `included_targets` and `included_tags` are unset, all actions + // will be included. + message InvocationConfig { + // Immutable. The set of action identifiers to include. + repeated Target included_targets = 1 [(google.api.field_behavior) = IMMUTABLE]; + + // Immutable. The set of tags to include. + repeated string included_tags = 2 [(google.api.field_behavior) = IMMUTABLE]; + + // Immutable. When set to true, transitive dependencies of included actions will be + // executed. + bool transitive_dependencies_included = 3 [(google.api.field_behavior) = IMMUTABLE]; + + // Immutable. When set to true, transitive dependents of included actions will be + // executed. + bool transitive_dependents_included = 4 [(google.api.field_behavior) = IMMUTABLE]; + + // Immutable. When set to true, any incremental tables will be fully refreshed. + bool fully_refresh_incremental_tables_enabled = 5 [(google.api.field_behavior) = IMMUTABLE]; + } + + // Represents the current state of a workflow invocation. + enum State { + // Default value. This value is unused. + STATE_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; + } + + // Output only. The workflow invocation's name. + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Immutable. The name of the compilation result to compile. Must be in the format + // `projects/*/locations/*/repositories/*/compilationResults/*`. + string compilation_result = 2 [ + (google.api.field_behavior) = IMMUTABLE, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/CompilationResult" + } + ]; + + // Immutable. If left unset, a default InvocationConfig will be used. + InvocationConfig invocation_config = 3 [(google.api.field_behavior) = IMMUTABLE]; + + // Output only. This workflow invocation's current state. + State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. This workflow invocation's timing details. + google.type.Interval invocation_timing = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// `ListWorkflowInvocations` request message. +message ListWorkflowInvocationsRequest { + // Required. The parent resource of the WorkflowInvocation type. Must be in the + // format `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // 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. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `ListWorkflowInvocations` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to `ListWorkflowInvocations` + // must match the call that provided the page token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// `ListWorkflowInvocations` response message. +message ListWorkflowInvocationsResponse { + // List of workflow invocations. + repeated WorkflowInvocation workflow_invocations = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; + + // Locations which could not be reached. + repeated string unreachable = 3; +} + +// `GetWorkflowInvocation` request message. +message GetWorkflowInvocationRequest { + // Required. The workflow invocation resource's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/WorkflowInvocation" + } + ]; +} + +// `CreateWorkflowInvocation` request message. +message CreateWorkflowInvocationRequest { + // Required. The repository in which to create the workflow invocation. Must be in the + // format `projects/*/locations/*/repositories/*`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/Repository" + } + ]; + + // Required. The workflow invocation resource to create. + WorkflowInvocation workflow_invocation = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// `DeleteWorkflowInvocation` request message. +message DeleteWorkflowInvocationRequest { + // Required. The workflow invocation resource's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/WorkflowInvocation" + } + ]; +} + +// `CancelWorkflowInvocation` request message. +message CancelWorkflowInvocationRequest { + // Required. The workflow invocation resource's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/WorkflowInvocation" + } + ]; +} + +// Represents a single action in a workflow invocation. +message WorkflowInvocationAction { + // Represents the current state of an workflow invocation action. + 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; + } + + // Represents a workflow action that will run against BigQuery. + message BigQueryAction { + // Output only. The generated BigQuery SQL script that will be executed. + string sql_script = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + } + + // Output only. This action's identifier. Unique within the workflow invocation. + Target target = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The action's identifier if the project had been compiled without any + // overrides configured. Unique within the compilation result. + Target canonical_target = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. This action's current state. + State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. If and only if action's state is FAILED a failure reason is set. + string failure_reason = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // 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. + google.type.Interval invocation_timing = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The workflow action's bigquery action details. + BigQueryAction bigquery_action = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// `QueryWorkflowInvocationActions` request message. +message QueryWorkflowInvocationActionsRequest { + // Required. The workflow invocation's name. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dataform.googleapis.com/WorkflowInvocation" + } + ]; + + // 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. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page token received from a previous `QueryWorkflowInvocationActions` call. + // Provide this to retrieve the subsequent page. + // + // When paginating, all other parameters provided to + // `QueryWorkflowInvocationActions` must match the call that provided the page + // token. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// `QueryWorkflowInvocationActions` response message. +message QueryWorkflowInvocationActionsResponse { + // List of workflow invocation actions. + repeated WorkflowInvocationAction workflow_invocation_actions = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; +} diff --git a/google/cloud/dataform/v1beta1/dataform_grpc_service_config.json b/google/cloud/dataform/v1beta1/dataform_grpc_service_config.json new file mode 100644 index 000000000..959bf4c18 --- /dev/null +++ b/google/cloud/dataform/v1beta1/dataform_grpc_service_config.json @@ -0,0 +1,26 @@ +{ + "methodConfig": [{ + "name": [ + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "ListRepositories" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "GetRepository" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "ListWorkspaces" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "GetWorkspace" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "ListCompilationResults" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "GetCompilationResult" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "CreateCompilationResult" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "QueryCompilationResultActions" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "CreateWorkflowInvocation" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "CancelWorkflowInvocation" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "ListWorkflowInvocations" }, + { "service": "google.cloud.dataform.v1beta1.DataformService", "method": "GetWorkflowInvocation" } + ], + "timeout": "60s", + "retryPolicy": { + "maxAttempts": 5, + "initialBackoff": "1s", + "maxBackoff": "10s", + "backoffMultiplier": 1.3, + "retryableStatusCodes": ["UNAVAILABLE"] + } + }] +} diff --git a/google/cloud/dataform/v1beta1/dataform_v1beta1.yaml b/google/cloud/dataform/v1beta1/dataform_v1beta1.yaml new file mode 100644 index 000000000..b3a2a999f --- /dev/null +++ b/google/cloud/dataform/v1beta1/dataform_v1beta1.yaml @@ -0,0 +1,77 @@ +type: google.api.Service +config_version: 3 +name: dataform.googleapis.com +title: Dataform API + +apis: +- name: google.cloud.dataform.v1beta1.Dataform +- name: google.cloud.location.Locations +- name: google.iam.v1.IAMPolicy + +documentation: + rules: + - selector: google.cloud.location.Locations.GetLocation + description: Gets information about a location. + + - selector: google.cloud.location.Locations.ListLocations + description: Lists information about the supported locations for this service. + + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + description: |- + Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + description: |- + Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + description: |- + 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. + +backend: + rules: + - selector: 'google.cloud.dataform.v1beta1.Dataform.*' + deadline: 60.0 + - selector: google.cloud.location.Locations.GetLocation + deadline: 60.0 + - selector: google.cloud.location.Locations.ListLocations + deadline: 60.0 + - selector: 'google.iam.v1.IAMPolicy.*' + deadline: 60.0 + +http: + rules: + - selector: google.cloud.location.Locations.GetLocation + get: '/v1beta1/{name=projects/*/locations/*}' + - selector: google.cloud.location.Locations.ListLocations + get: '/v1beta1/{name=projects/*}/locations' + +authentication: + rules: + - selector: 'google.cloud.dataform.v1beta1.Dataform.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: google.cloud.location.Locations.GetLocation + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: google.cloud.location.Locations.ListLocations + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + - selector: 'google.iam.v1.IAMPolicy.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform