diff --git a/google/cloud/developerconnect/v1/BUILD.bazel b/google/cloud/developerconnect/v1/BUILD.bazel new file mode 100644 index 0000000000000..7829c326fccdb --- /dev/null +++ b/google/cloud/developerconnect/v1/BUILD.bazel @@ -0,0 +1,395 @@ +# 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. + +# buildifier: disable=load-on-top + +# This is an API workspace, having public visibility by default makes perfect sense. +package(default_visibility = ["//visibility:public"]) + +############################################################################## +# Common +############################################################################## +# buildifier: disable=same-origin-load +load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info") +load("@rules_proto//proto:defs.bzl", "proto_library") + +proto_library( + name = "developerconnect_proto", + srcs = [ + "developer_connect.proto", + ], + deps = [ + "//google/api:annotations_proto", + "//google/api:client_proto", + "//google/api:field_behavior_proto", + "//google/api:field_info_proto", + "//google/api:resource_proto", + "//google/longrunning:operations_proto", + "@com_google_protobuf//:empty_proto", + "@com_google_protobuf//:field_mask_proto", + "@com_google_protobuf//:timestamp_proto", + ], +) + +proto_library_with_info( + name = "developerconnect_proto_with_info", + deps = [ + ":developerconnect_proto", + "//google/cloud/location:location_proto", + "//google/cloud:common_resources_proto", + ], +) + +############################################################################## +# Java +############################################################################## +# buildifier: disable=same-origin-load +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 = "developerconnect_java_proto", + deps = [":developerconnect_proto"], +) + +java_grpc_library( + name = "developerconnect_java_grpc", + srcs = [":developerconnect_proto"], + deps = [":developerconnect_java_proto"], +) + +java_gapic_library( + name = "developerconnect_java_gapic", + srcs = [":developerconnect_proto_with_info"], + gapic_yaml = None, + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + test_deps = [ + "//google/cloud/location:location_java_grpc", + ":developerconnect_java_grpc", + ], + transport = "grpc+rest", + deps = [ + ":developerconnect_java_proto", + "//google/api:api_java_proto", + "//google/cloud/location:location_java_proto", + ], +) + +java_gapic_test( + name = "developerconnect_java_gapic_test_suite", + test_classes = [ + "com.google.cloud.developerconnect.v1.DeveloperConnectClientHttpJsonTest", + "com.google.cloud.developerconnect.v1.DeveloperConnectClientTest", + ], + runtime_deps = [":developerconnect_java_gapic_test"], +) + +# Open Source Packages +java_gapic_assembly_gradle_pkg( + name = "google-cloud-developerconnect-v1-java", + transport = "grpc+rest", + deps = [ + ":developerconnect_java_gapic", + ":developerconnect_java_grpc", + ":developerconnect_java_proto", + ":developerconnect_proto", + ], + include_samples = True, +) + +############################################################################## +# Go +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "go_gapic_assembly_pkg", + "go_gapic_library", + "go_proto_library", +) + +go_proto_library( + name = "developerconnect_go_proto", + compilers = ["@io_bazel_rules_go//proto:go_grpc"], + importpath = "cloud.google.com/go/developerconnect/apiv1/developerconnectpb", + protos = [":developerconnect_proto"], + deps = [ + "//google/api:annotations_go_proto", + "//google/longrunning:longrunning_go_proto", + ], +) + +go_gapic_library( + name = "developerconnect_go_gapic", + srcs = [":developerconnect_proto_with_info"], + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + importpath = "cloud.google.com/go/developerconnect/apiv1;developerconnect", + metadata = True, + release_level = "beta", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [ + ":developerconnect_go_proto", + "//google/cloud/location:location_go_proto", + "//google/longrunning:longrunning_go_proto", + "@com_google_cloud_go_longrunning//:go_default_library", + "@com_google_cloud_go_longrunning//autogen:go_default_library", + ], +) + +# Open Source Packages +go_gapic_assembly_pkg( + name = "gapi-cloud-developerconnect-v1-go", + deps = [ + ":developerconnect_go_gapic", + ":developerconnect_go_gapic_srcjar-test.srcjar", + ":developerconnect_go_gapic_srcjar-metadata.srcjar", + ":developerconnect_go_gapic_srcjar-snippets.srcjar", + ":developerconnect_go_proto", + ], +) + +############################################################################## +# Python +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "py_gapic_assembly_pkg", + "py_gapic_library", + "py_test", +) + +py_gapic_library( + name = "developerconnect_py_gapic", + srcs = [":developerconnect_proto"], + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [ + ], +) + +py_test( + name = "developerconnect_py_gapic_test", + srcs = [ + "developerconnect_py_gapic_pytest.py", + "developerconnect_py_gapic_test.py", + ], + legacy_create_init = False, + deps = [":developerconnect_py_gapic"], +) + +# Open Source Packages +py_gapic_assembly_pkg( + name = "developerconnect-v1-py", + deps = [ + ":developerconnect_py_gapic", + ], +) + +############################################################################## +# PHP +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "php_gapic_assembly_pkg", + "php_gapic_library", + "php_proto_library", +) + +php_proto_library( + name = "developerconnect_php_proto", + deps = [":developerconnect_proto"], +) + +php_gapic_library( + name = "developerconnect_php_gapic", + srcs = [":developerconnect_proto_with_info"], + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + rest_numeric_enums = True, + migration_mode = "NEW_SURFACE_ONLY", + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [ + ":developerconnect_php_proto", + ], +) + +# Open Source Packages +php_gapic_assembly_pkg( + name = "google-cloud-developerconnect-v1-php", + deps = [ + ":developerconnect_php_gapic", + ":developerconnect_php_proto", + ], +) + +############################################################################## +# Node.js +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "nodejs_gapic_assembly_pkg", + "nodejs_gapic_library", +) + +nodejs_gapic_library( + name = "developerconnect_nodejs_gapic", + package_name = "@google-cloud/developerconnect", + src = ":developerconnect_proto_with_info", + extra_protoc_parameters = ["metadata"], + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + package = "google.cloud.developerconnect.v1", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [], +) + +nodejs_gapic_assembly_pkg( + name = "developerconnect-v1-nodejs", + deps = [ + ":developerconnect_nodejs_gapic", + ":developerconnect_proto", + ], +) + +############################################################################## +# Ruby +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "ruby_gapic_assembly_pkg", + "ruby_cloud_gapic_library", + "ruby_grpc_library", + "ruby_proto_library", +) + +ruby_proto_library( + name = "developerconnect_ruby_proto", + deps = [":developerconnect_proto"], +) + +ruby_grpc_library( + name = "developerconnect_ruby_grpc", + srcs = [":developerconnect_proto"], + deps = [":developerconnect_ruby_proto"], +) + +ruby_cloud_gapic_library( + name = "developerconnect_ruby_gapic", + srcs = [":developerconnect_proto_with_info"], + extra_protoc_parameters = [ + "ruby-cloud-gem-name=google-cloud-developerconnect-v1", + ], + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [ + ":developerconnect_ruby_grpc", + ":developerconnect_ruby_proto", + ], +) + +# Open Source Packages +ruby_gapic_assembly_pkg( + name = "google-cloud-developerconnect-v1-ruby", + deps = [ + ":developerconnect_ruby_gapic", + ":developerconnect_ruby_grpc", + ":developerconnect_ruby_proto", + ], +) + +############################################################################## +# C# +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "csharp_gapic_assembly_pkg", + "csharp_gapic_library", + "csharp_grpc_library", + "csharp_proto_library", +) + +csharp_proto_library( + name = "developerconnect_csharp_proto", + extra_opts = [], + deps = [":developerconnect_proto"], +) + +csharp_grpc_library( + name = "developerconnect_csharp_grpc", + srcs = [":developerconnect_proto"], + deps = [":developerconnect_csharp_proto"], +) + +csharp_gapic_library( + name = "developerconnect_csharp_gapic", + srcs = [":developerconnect_proto_with_info"], + common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json", + grpc_service_config = "developerconnect_v1_grpc_service_config.json", + rest_numeric_enums = True, + service_yaml = "developerconnect_v1.yaml", + transport = "grpc+rest", + deps = [ + ":developerconnect_csharp_grpc", + ":developerconnect_csharp_proto", + ], +) + +# Open Source Packages +csharp_gapic_assembly_pkg( + name = "google-cloud-developerconnect-v1-csharp", + deps = [ + ":developerconnect_csharp_gapic", + ":developerconnect_csharp_grpc", + ":developerconnect_csharp_proto", + ], +) + +############################################################################## +# C++ +############################################################################## +# buildifier: disable=same-origin-load +load( + "@com_google_googleapis_imports//:imports.bzl", + "cc_grpc_library", + "cc_proto_library", +) + +cc_proto_library( + name = "developerconnect_cc_proto", + deps = [":developerconnect_proto"], +) + +cc_grpc_library( + name = "developerconnect_cc_grpc", + srcs = [":developerconnect_proto"], + grpc_only = True, + deps = [":developerconnect_cc_proto"], +) diff --git a/google/cloud/developerconnect/v1/developer_connect.proto b/google/cloud/developerconnect/v1/developer_connect.proto new file mode 100644 index 0000000000000..3bd3a64ef5603 --- /dev/null +++ b/google/cloud/developerconnect/v1/developer_connect.proto @@ -0,0 +1,888 @@ +// Copyright 2024 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.developerconnect.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/field_info.proto"; +import "google/api/resource.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option csharp_namespace = "Google.Cloud.DeveloperConnect.V1"; +option go_package = "cloud.google.com/go/developerconnect/apiv1/developerconnectpb;developerconnectpb"; +option java_multiple_files = true; +option java_outer_classname = "DeveloperConnectProto"; +option java_package = "com.google.cloud.developerconnect.v1"; +option objc_class_prefix = "DeveloperConnect"; +option php_namespace = "Google\\Cloud\\DeveloperConnect\\V1"; +option ruby_package = "Google::Cloud::DeveloperConnect::V1"; +option (google.api.resource_definition) = { + type: "secretmanager.googleapis.com/SecretVersion" + pattern: "projects/{project}/secrets/{secret}/versions/{secret_version}" +}; + +// Service describing handlers for resources +service DeveloperConnect { + option (google.api.default_host) = "developerconnect.googleapis.com"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; + + // Lists Connections in a given project and location. + rpc ListConnections(ListConnectionsRequest) + returns (ListConnectionsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*}/connections" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets details of a single Connection. + rpc GetConnection(GetConnectionRequest) returns (Connection) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/connections/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a new Connection in a given project and location. + rpc CreateConnection(CreateConnectionRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*}/connections" + body: "connection" + }; + option (google.api.method_signature) = "parent,connection,connection_id"; + option (google.longrunning.operation_info) = { + response_type: "Connection" + metadata_type: "OperationMetadata" + }; + } + + // Updates the parameters of a single Connection. + rpc UpdateConnection(UpdateConnectionRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + patch: "/v1/{connection.name=projects/*/locations/*/connections/*}" + body: "connection" + }; + option (google.api.method_signature) = "connection,update_mask"; + option (google.longrunning.operation_info) = { + response_type: "Connection" + metadata_type: "OperationMetadata" + }; + } + + // Deletes a single Connection. + rpc DeleteConnection(DeleteConnectionRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/connections/*}" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "OperationMetadata" + }; + } + + // Creates a GitRepositoryLink. Upon linking a Git Repository, Developer + // Connect will configure the Git Repository to send webhook events to + // Developer Connect. Connections that use Firebase GitHub Application will + // have events forwarded to the Firebase service. All other Connections will + // have events forwarded to Cloud Build. + rpc CreateGitRepositoryLink(CreateGitRepositoryLinkRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/locations/*/connections/*}/gitRepositoryLinks" + body: "git_repository_link" + }; + option (google.api.method_signature) = + "parent,git_repository_link,git_repository_link_id"; + option (google.longrunning.operation_info) = { + response_type: "GitRepositoryLink" + metadata_type: "OperationMetadata" + }; + } + + // Deletes a single GitRepositoryLink. + rpc DeleteGitRepositoryLink(DeleteGitRepositoryLinkRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/locations/*/connections/*/gitRepositoryLinks/*}" + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "OperationMetadata" + }; + } + + // Lists GitRepositoryLinks in a given project, location, and connection. + rpc ListGitRepositoryLinks(ListGitRepositoryLinksRequest) + returns (ListGitRepositoryLinksResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/locations/*/connections/*}/gitRepositoryLinks" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets details of a single GitRepositoryLink. + rpc GetGitRepositoryLink(GetGitRepositoryLinkRequest) + returns (GitRepositoryLink) { + option (google.api.http) = { + get: "/v1/{name=projects/*/locations/*/connections/*/gitRepositoryLinks/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Fetches read/write token of a given gitRepositoryLink. + rpc FetchReadWriteToken(FetchReadWriteTokenRequest) + returns (FetchReadWriteTokenResponse) { + option (google.api.http) = { + post: "/v1/{git_repository_link=projects/*/locations/*/connections/*/gitRepositoryLinks/*}:fetchReadWriteToken" + body: "*" + }; + option (google.api.method_signature) = "git_repository_link"; + } + + // Fetches read token of a given gitRepositoryLink. + rpc FetchReadToken(FetchReadTokenRequest) returns (FetchReadTokenResponse) { + option (google.api.http) = { + post: "/v1/{git_repository_link=projects/*/locations/*/connections/*/gitRepositoryLinks/*}:fetchReadToken" + body: "*" + }; + option (google.api.method_signature) = "git_repository_link"; + } + + // FetchLinkableGitRepositories returns a list of git repositories from an SCM + // that are available to be added to a Connection. + rpc FetchLinkableGitRepositories(FetchLinkableGitRepositoriesRequest) + returns (FetchLinkableGitRepositoriesResponse) { + option (google.api.http) = { + get: "/v1/{connection=projects/*/locations/*/connections/*}:fetchLinkableGitRepositories" + }; + option (google.api.method_signature) = "connection"; + } + + // FetchGitHubInstallations returns the list of GitHub Installations that + // are available to be added to a Connection. + // For github.com, only installations accessible to the authorizer token + // are returned. For GitHub Enterprise, all installations are returned. + rpc FetchGitHubInstallations(FetchGitHubInstallationsRequest) + returns (FetchGitHubInstallationsResponse) { + option (google.api.http) = { + get: "/v1/{connection=projects/*/locations/*/connections/*}:fetchGitHubInstallations" + }; + option (google.api.method_signature) = "connection"; + } + + // Fetch the list of branches or tags for a given repository. + rpc FetchGitRefs(FetchGitRefsRequest) returns (FetchGitRefsResponse) { + option (google.api.http) = { + get: "/v1/{git_repository_link=projects/*/locations/*/connections/*/gitRepositoryLinks/*}:fetchGitRefs" + }; + option (google.api.method_signature) = "git_repository_link,ref_type"; + } +} + +// Message describing Connection object +message Connection { + option (google.api.resource) = { + type: "developerconnect.googleapis.com/Connection" + pattern: "projects/{project}/locations/{location}/connections/{connection}" + plural: "connections" + singular: "connection" + style: DECLARATIVE_FRIENDLY + }; + + // Configuration for the connection depending on the type of provider. + oneof connection_config { + // Configuration for connections to github.com. + GitHubConfig github_config = 5; + } + + // Identifier. The resource name of the connection, in the format + // `projects/{project}/locations/{location}/connections/{connection_id}`. + string name = 1 [(google.api.field_behavior) = IDENTIFIER]; + + // Output only. [Output only] Create timestamp + google.protobuf.Timestamp create_time = 2 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. [Output only] Update timestamp + google.protobuf.Timestamp update_time = 3 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. [Output only] Delete timestamp + google.protobuf.Timestamp delete_time = 11 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Labels as key value pairs + map labels = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. Installation state of the Connection. + InstallationState installation_state = 6 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. If disabled is set to true, functionality is disabled for this + // connection. Repository based API methods and webhooks processing for + // repositories in this connection will be disabled. + bool disabled = 7 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. Set to true when the connection is being set up or updated in + // the background. + bool reconciling = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Allows clients to store small amounts of arbitrary data. + map annotations = 9 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. This checksum is computed by the server based on the value of + // other fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + string etag = 10 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. A system-assigned unique identifier for a the + // GitRepositoryLink. + string uid = 12 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OUTPUT_ONLY + ]; +} + +// Describes stage and necessary actions to be taken by the +// user to complete the installation. Used for GitHub and GitHub Enterprise +// based connections. +message InstallationState { + // Stage of the installation process. + enum Stage { + // No stage specified. + STAGE_UNSPECIFIED = 0; + + // Only for GitHub Enterprise. An App creation has been requested. + // The user needs to confirm the creation in their GitHub enterprise host. + PENDING_CREATE_APP = 1; + + // User needs to authorize the GitHub (or Enterprise) App via OAuth. + PENDING_USER_OAUTH = 2; + + // User needs to follow the link to install the GitHub (or Enterprise) App. + PENDING_INSTALL_APP = 3; + + // Installation process has been completed. + COMPLETE = 10; + } + + // Output only. Current step of the installation process. + Stage stage = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Message of what the user should do next to continue the + // installation. Empty string if the installation is already complete. + string message = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Link to follow for next action. Empty string if the + // installation is already complete. + string action_uri = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Configuration for connections to github.com. +message GitHubConfig { + // Represents the various GitHub Applications that can be installed to a + // GitHub user or organization and used with Developer Connect. + enum GitHubApp { + // GitHub App not specified. + GIT_HUB_APP_UNSPECIFIED = 0; + + // The Developer Connect GitHub Application. + DEVELOPER_CONNECT = 1; + + // The Firebase GitHub Application. + FIREBASE = 2; + } + + // Required. Immutable. The GitHub Application that was installed to the + // GitHub user or organization. + GitHubApp github_app = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = IMMUTABLE + ]; + + // Optional. OAuth credential of the account that authorized the GitHub App. + // It is recommended to use a robot account instead of a human user account. + // The OAuth token must be tied to the GitHub App of this config. + OAuthCredential authorizer_credential = 2 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. GitHub App installation id. + int64 app_installation_id = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. The URI to navigate to in order to manage the installation + // associated with this GitHubConfig. + string installation_uri = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Represents an OAuth token of the account that authorized the Connection, +// and associated metadata. +message OAuthCredential { + // Required. A SecretManager resource containing the OAuth token that + // authorizes the connection. Format: `projects/*/secrets/*/versions/*`. + string oauth_token_secret_version = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "secretmanager.googleapis.com/SecretVersion" + } + ]; + + // Output only. The username associated with this token. + string username = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Message for requesting list of Connections +message ListConnectionsRequest { + // Required. Parent value for ListConnectionsRequest + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "developerconnect.googleapis.com/Connection" + } + ]; + + // Optional. Requested page size. Server may return fewer items than + // requested. If unspecified, server will pick an appropriate default. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A token identifying a page of results the server should return. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Filtering results + string filter = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Hint for how to order the results + string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for response to listing Connections +message ListConnectionsResponse { + // The list of Connection + repeated Connection connections = 1; + + // A token identifying a page of results the server should return. + string next_page_token = 2; + + // Locations that could not be reached. + repeated string unreachable = 3; +} + +// Message for getting a Connection +message GetConnectionRequest { + // Required. Name of the resource + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/Connection" + } + ]; +} + +// Message for creating a Connection +message CreateConnectionRequest { + // Required. Value for parent. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "developerconnect.googleapis.com/Connection" + } + ]; + + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connection_id from the method_signature of Create RPC + string connection_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The resource being created + Connection connection = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request + // ID, the server can check if original operation with the same request ID + // was received, and if so, will ignore the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 4 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; + + // Optional. If set, validate the request, but do not actually post it. + bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for updating a Connection +message UpdateConnectionRequest { + // Required. Field mask is used to specify the fields to be overwritten in the + // Connection resource by the update. + // The fields specified in the update_mask are relative to the resource, not + // the full request. A field will be overwritten if it is in the mask. If the + // user does not provide a mask then all fields will be overwritten. + google.protobuf.FieldMask update_mask = 1 + [(google.api.field_behavior) = REQUIRED]; + + // Required. The resource being updated + Connection connection = 2 [(google.api.field_behavior) = REQUIRED]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request + // ID, the server can check if original operation with the same request ID + // was received, and if so, will ignore the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 3 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; + + // Optional. If set to true, and the connection is not found a new connection + // will be created. In this situation `update_mask` is ignored. + // The creation will succeed only if the input connection has all the + // necessary information (e.g a github_config with both user_oauth_token and + // installation_id properties). + bool allow_missing = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. If set, validate the request, but do not actually post it. + bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for deleting a Connection +message DeleteConnectionRequest { + // Required. Name of the resource + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/Connection" + } + ]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes after the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request + // ID, the server can check if original operation with the same request ID + // was received, and if so, will ignore the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 2 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; + + // Optional. If set, validate the request, but do not actually post it. + bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The current etag of the Connection. + // If an etag is provided and does not match the current etag of the + // Connection, deletion will be blocked and an ABORTED error will be returned. + string etag = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Represents the metadata of the long-running operation. +message OperationMetadata { + // Output only. The time the operation was created. + google.protobuf.Timestamp create_time = 1 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The time the operation finished running. + google.protobuf.Timestamp end_time = 2 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Server-defined resource path for the target of the operation. + string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Name of the verb executed by the operation. + string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Human-readable status of the operation, if any. + string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. Identifies whether the user has requested cancellation + // of the operation. Operations that have been cancelled successfully + // have [Operation.error][] value with a + // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to + // `Code.CANCELLED`. + bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. API version used to start the operation. + string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Message describing the GitRepositoryLink object +message GitRepositoryLink { + option (google.api.resource) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + pattern: "projects/{project}/locations/{location}/connections/{connection}/gitRepositoryLinks/{git_repository_link}" + plural: "gitRepositoryLinks" + singular: "gitRepositoryLink" + style: DECLARATIVE_FRIENDLY + }; + + // Identifier. Resource name of the repository, in the format + // `projects/*/locations/*/connections/*/gitRepositoryLinks/*`. + string name = 1 [(google.api.field_behavior) = IDENTIFIER]; + + // Required. Git Clone URI. + string clone_uri = 2 [(google.api.field_behavior) = REQUIRED]; + + // Output only. [Output only] Create timestamp + google.protobuf.Timestamp create_time = 3 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. [Output only] Update timestamp + google.protobuf.Timestamp update_time = 4 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. [Output only] Delete timestamp + google.protobuf.Timestamp delete_time = 5 + [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Labels as key value pairs + map labels = 6 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. This checksum is computed by the server based on the value of + // other fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + string etag = 7 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. Set to true when the connection is being set up or updated in + // the background. + bool reconciling = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Optional. Allows clients to store small amounts of arbitrary data. + map annotations = 9 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. A system-assigned unique identifier for a the + // GitRepositoryLink. + string uid = 10 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OUTPUT_ONLY + ]; +} + +// Message for creating a GitRepositoryLink +message CreateGitRepositoryLinkRequest { + // Required. Value for parent. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; + + // Required. The resource being created + GitRepositoryLink git_repository_link = 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. This ID should be unique in + // the connection. Allows alphanumeric characters and any of + // -._~%!$&'()*+,;=@. + string git_repository_link_id = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request + // ID, the server can check if original operation with the same request ID + // was received, and if so, will ignore the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 4 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; + + // Optional. If set, validate the request, but do not actually post it. + bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for deleting a GitRepositoryLink +message DeleteGitRepositoryLinkRequest { + // Required. Name of the resource + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; + + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes after the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request + // ID, the server can check if original operation with the same request ID + // was received, and if so, will ignore the second request. This prevents + // clients from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported (00000000-0000-0000-0000-000000000000). + string request_id = 2 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; + + // Optional. If set, validate the request, but do not actually post it. + bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. This checksum is computed by the server based on the value of + // other fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + string etag = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for requesting a list of GitRepositoryLinks +message ListGitRepositoryLinksRequest { + // Required. Parent value for ListGitRepositoryLinksRequest + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; + + // Optional. Requested page size. Server may return fewer items than + // requested. If unspecified, server will pick an appropriate default. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A token identifying a page of results the server should return. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Filtering results + string filter = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Hint for how to order the results + string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Message for response to listing GitRepositoryLinks +message ListGitRepositoryLinksResponse { + // The list of GitRepositoryLinks + repeated GitRepositoryLink git_repository_links = 1; + + // A token identifying a page of results the server should return. + string next_page_token = 2; + + // Locations that could not be reached. + repeated string unreachable = 3; +} + +// Message for getting a GitRepositoryLink +message GetGitRepositoryLinkRequest { + // Required. Name of the resource + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; +} + +// Message for fetching SCM read/write token. +message FetchReadWriteTokenRequest { + // Required. The resource name of the gitRepositoryLink in the format + // `projects/*/locations/*/connections/*/gitRepositoryLinks/*`. + string git_repository_link = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; +} + +// Message for fetching SCM read token. +message FetchReadTokenRequest { + // Required. The resource name of the gitRepositoryLink in the format + // `projects/*/locations/*/connections/*/gitRepositoryLinks/*`. + string git_repository_link = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; +} + +// Message for responding to get read token. +message FetchReadTokenResponse { + // The token content. + string token = 1; + + // Expiration timestamp. Can be empty if unknown or non-expiring. + google.protobuf.Timestamp expiration_time = 2; + + // The git_username to specify when making a git clone with the + // token. For example, for GitHub GitRepositoryLinks, this would be + // "x-access-token" + string git_username = 3; +} + +// Message for responding to get read/write token. +message FetchReadWriteTokenResponse { + // The token content. + string token = 1; + + // Expiration timestamp. Can be empty if unknown or non-expiring. + google.protobuf.Timestamp expiration_time = 2; + + // The git_username to specify when making a git clone with the + // token. For example, for GitHub GitRepositoryLinks, this would be + // "x-access-token" + string git_username = 3; +} + +// Request message for FetchLinkableGitRepositoriesRequest. +message FetchLinkableGitRepositoriesRequest { + // Required. The name of the Connection. + // Format: `projects/*/locations/*/connections/*`. + string connection = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/Connection" + } + ]; + + // Optional. Number of results to return in the list. Defaults to 20. + int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page start. + string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +// Response message for FetchLinkableGitRepositories. +message FetchLinkableGitRepositoriesResponse { + // The git repositories that can be linked to the connection. + repeated LinkableGitRepository linkable_git_repositories = 1; + + // A token identifying a page of results the server should return. + string next_page_token = 2; +} + +// LinkableGitRepository represents a git repository that can be linked to a +// connection. +message LinkableGitRepository { + // The clone uri of the repository. + string clone_uri = 1; +} + +// Request for fetching github installations. +message FetchGitHubInstallationsRequest { + // Required. The resource name of the connection in the format + // `projects/*/locations/*/connections/*`. + string connection = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/Connection" + } + ]; +} + +// Response of fetching github installations. +message FetchGitHubInstallationsResponse { + // Represents an installation of the GitHub App. + message Installation { + // ID of the installation in GitHub. + int64 id = 1; + + // Name of the GitHub user or organization that owns this installation. + string name = 2; + + // Either "user" or "organization". + string type = 3; + } + + // List of installations available to the OAuth user (for github.com) + // or all the installations (for GitHub enterprise). + repeated Installation installations = 1; +} + +// Request for fetching git refs. +message FetchGitRefsRequest { + // Type of refs. + enum RefType { + // No type specified. + REF_TYPE_UNSPECIFIED = 0; + + // To fetch tags. + TAG = 1; + + // To fetch branches. + BRANCH = 2; + } + + // Required. The resource name of GitRepositoryLink in the format + // `projects/*/locations/*/connections/*/gitRepositoryLinks/*`. + string git_repository_link = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "developerconnect.googleapis.com/GitRepositoryLink" + } + ]; + + // Required. Type of refs to fetch. + RefType ref_type = 2 [(google.api.field_behavior) = REQUIRED]; + + // Optional. Number of results to return in the list. Default to 20. + int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Page start. + string page_token = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Response for fetching git refs. +message FetchGitRefsResponse { + // Name of the refs fetched. + repeated string ref_names = 1; + + // A token identifying a page of results the server should return. + string next_page_token = 2; +} diff --git a/google/cloud/developerconnect/v1/developerconnect_v1.yaml b/google/cloud/developerconnect/v1/developerconnect_v1.yaml new file mode 100644 index 0000000000000..5ab9a13c7b640 --- /dev/null +++ b/google/cloud/developerconnect/v1/developerconnect_v1.yaml @@ -0,0 +1,103 @@ +type: google.api.Service +config_version: 3 +name: developerconnect.googleapis.com +title: Developer Connect API + +apis: +- name: google.cloud.developerconnect.v1.DeveloperConnect +- name: google.cloud.location.Locations +- name: google.longrunning.Operations + +types: +- name: google.cloud.developerconnect.v1.OperationMetadata + +documentation: + summary: 'Connect third-party source code management to Google' + overview: |- + Developer Connect streamlines integration with third-party source code + management platforms by simplifying authentication, authorization, and + networking configuration. + 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. + +http: + rules: + - selector: google.cloud.location.Locations.GetLocation + get: '/v1/{name=projects/*/locations/*}' + - selector: google.cloud.location.Locations.ListLocations + get: '/v1/{name=projects/*}/locations' + - selector: google.longrunning.Operations.CancelOperation + post: '/v1/{name=projects/*/locations/*/operations/*}:cancel' + body: '*' + - selector: google.longrunning.Operations.DeleteOperation + delete: '/v1/{name=projects/*/locations/*/operations/*}' + - selector: google.longrunning.Operations.GetOperation + get: '/v1/{name=projects/*/locations/*/operations/*}' + - selector: google.longrunning.Operations.ListOperations + get: '/v1/{name=projects/*/locations/*}/operations' + +authentication: + rules: + - selector: 'google.cloud.developerconnect.v1.DeveloperConnect.*' + 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.longrunning.Operations.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform + +publishing: + new_issue_uri: https://issuetracker.google.com/issues/new?component=1446966&template=1822025 + documentation_uri: https://cloud.google.com/developer-connect/docs/overview + api_short_name: developerconnect + github_label: 'api: developerconnect' + doc_tag_prefix: developerconnect + organization: CLOUD + library_settings: + - version: google.cloud.developerconnect.v1 + launch_stage: ALPHA + java_settings: + common: + destinations: + - PACKAGE_MANAGER + cpp_settings: + common: + destinations: + - PACKAGE_MANAGER + php_settings: + common: + destinations: + - PACKAGE_MANAGER + python_settings: + common: + destinations: + - PACKAGE_MANAGER + node_settings: + common: + destinations: + - PACKAGE_MANAGER + dotnet_settings: + common: + destinations: + - PACKAGE_MANAGER + ruby_settings: + common: + destinations: + - PACKAGE_MANAGER + go_settings: + common: + destinations: + - PACKAGE_MANAGER diff --git a/google/cloud/developerconnect/v1/developerconnect_v1_grpc_service_config.json b/google/cloud/developerconnect/v1/developerconnect_v1_grpc_service_config.json new file mode 100644 index 0000000000000..2555d9e4402f0 --- /dev/null +++ b/google/cloud/developerconnect/v1/developerconnect_v1_grpc_service_config.json @@ -0,0 +1,27 @@ +{ + "methodConfig": [{ + "name": [ + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "ListConnections" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "GetConnection" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "CreateConnection" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "UpdateConnection" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "DeleteConnection" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "CreateGitRepositoryLink" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "DeleteGitRepositoryLink" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "ListGitRepositoryLink" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "GetGitRepositoryLink" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "FetchReadWriteToken" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "FetchReadToken" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "FetchLinkableGitRepositories" }, + { "service": "google.cloud.developerconnect.v1.DeveloperConnect", "method": "FetchGitHubInstallations" } + ], + "timeout": "60s", + "retryPolicy": { + "maxAttempts": 5, + "initialBackoff": "1s", + "maxBackoff": "10s", + "backoffMultiplier": 1.3, + "retryableStatusCodes": ["UNAVAILABLE"] + } + }] +} \ No newline at end of file