1// Copyright 2022 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.functions.v2alpha; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/longrunning/operations.proto"; 24import "google/protobuf/any.proto"; 25import "google/protobuf/field_mask.proto"; 26import "google/protobuf/timestamp.proto"; 27 28option go_package = "cloud.google.com/go/functions/apiv2alpha/functionspb;functionspb"; 29option java_multiple_files = true; 30option java_outer_classname = "FunctionsProto"; 31option java_package = "com.google.cloud.functions.v2alpha"; 32option objc_class_prefix = "GCF"; 33option (google.api.resource_definition) = { 34 type: "artifactregistry.googleapis.com/Repository" 35 pattern: "projects/{project}/locations/{location}/repositories/{repository}" 36}; 37option (google.api.resource_definition) = { 38 type: "cloudbuild.googleapis.com/Build" 39 pattern: "projects/{project}/locations/{location}/builds/{build}" 40}; 41option (google.api.resource_definition) = { 42 type: "cloudbuild.googleapis.com/WorkerPool" 43 pattern: "projects/{project}/locations/{location}/workerPools/{worker_pool}" 44}; 45option (google.api.resource_definition) = { 46 type: "run.googleapis.com/Service" 47 pattern: "projects/{project}/locations/{location}/services/{service}" 48}; 49option (google.api.resource_definition) = { 50 type: "vpcaccess.googleapis.com/Connector" 51 pattern: "projects/{project}/locations/{location}/connectors/{connector}" 52}; 53option (google.api.resource_definition) = { 54 type: "eventarc.googleapis.com/Trigger" 55 pattern: "projects/{project}/locations/{location}/triggers/{trigger}" 56}; 57option (google.api.resource_definition) = { 58 type: "eventarc.googleapis.com/Channel" 59 pattern: "projects/{project}/locations/{location}/channels/{channel}" 60}; 61option (google.api.resource_definition) = { 62 type: "pubsub.googleapis.com/Topic" 63 pattern: "projects/{project}/topics/{topic}" 64}; 65 66// Google Cloud Functions is used to deploy functions that are executed by 67// Google in response to various events. Data connected with that event is 68// passed to a function as the input data. 69// 70// A **function** is a resource which describes a function that should be 71// executed and how it is triggered. 72service FunctionService { 73 option (google.api.default_host) = "cloudfunctions.googleapis.com"; 74 option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; 75 76 // Returns a function with the given name from the requested project. 77 rpc GetFunction(GetFunctionRequest) returns (Function) { 78 option (google.api.http) = { 79 get: "/v2alpha/{name=projects/*/locations/*/functions/*}" 80 }; 81 option (google.api.method_signature) = "name"; 82 } 83 84 // Returns a list of functions that belong to the requested project. 85 rpc ListFunctions(ListFunctionsRequest) returns (ListFunctionsResponse) { 86 option (google.api.http) = { 87 get: "/v2alpha/{parent=projects/*/locations/*}/functions" 88 }; 89 option (google.api.method_signature) = "parent"; 90 } 91 92 // Creates a new function. If a function with the given name already exists in 93 // the specified project, the long running operation will return 94 // `ALREADY_EXISTS` error. 95 rpc CreateFunction(CreateFunctionRequest) returns (google.longrunning.Operation) { 96 option (google.api.http) = { 97 post: "/v2alpha/{parent=projects/*/locations/*}/functions" 98 body: "function" 99 }; 100 option (google.api.method_signature) = "parent,function,function_id"; 101 option (google.longrunning.operation_info) = { 102 response_type: "google.cloud.functions.v2alpha.Function" 103 metadata_type: "google.cloud.functions.v2alpha.OperationMetadata" 104 }; 105 } 106 107 // Updates existing function. 108 rpc UpdateFunction(UpdateFunctionRequest) returns (google.longrunning.Operation) { 109 option (google.api.http) = { 110 patch: "/v2alpha/{function.name=projects/*/locations/*/functions/*}" 111 body: "function" 112 }; 113 option (google.api.method_signature) = "function,update_mask"; 114 option (google.longrunning.operation_info) = { 115 response_type: "google.cloud.functions.v2alpha.Function" 116 metadata_type: "google.cloud.functions.v2alpha.OperationMetadata" 117 }; 118 } 119 120 // Deletes a function with the given name from the specified project. If the 121 // given function is used by some trigger, the trigger will be updated to 122 // remove this function. 123 rpc DeleteFunction(DeleteFunctionRequest) returns (google.longrunning.Operation) { 124 option (google.api.http) = { 125 delete: "/v2alpha/{name=projects/*/locations/*/functions/*}" 126 }; 127 option (google.api.method_signature) = "name"; 128 option (google.longrunning.operation_info) = { 129 response_type: "google.protobuf.Empty" 130 metadata_type: "google.cloud.functions.v2alpha.OperationMetadata" 131 }; 132 } 133 134 // Returns a signed URL for uploading a function source code. 135 // For more information about the signed URL usage see: 136 // https://cloud.google.com/storage/docs/access-control/signed-urls. 137 // Once the function source code upload is complete, the used signed 138 // URL should be provided in CreateFunction or UpdateFunction request 139 // as a reference to the function source code. 140 // 141 // When uploading source code to the generated signed URL, please follow 142 // these restrictions: 143 // 144 // * Source file type should be a zip file. 145 // * No credentials should be attached - the signed URLs provide access to the 146 // target bucket using internal service identity; if credentials were 147 // attached, the identity from the credentials would be used, but that 148 // identity does not have permissions to upload files to the URL. 149 // 150 // When making a HTTP PUT request, these two headers need to be specified: 151 // 152 // * `content-type: application/zip` 153 // 154 // And this header SHOULD NOT be specified: 155 // 156 // * `Authorization: Bearer YOUR_TOKEN` 157 rpc GenerateUploadUrl(GenerateUploadUrlRequest) returns (GenerateUploadUrlResponse) { 158 option (google.api.http) = { 159 post: "/v2alpha/{parent=projects/*/locations/*}/functions:generateUploadUrl" 160 body: "*" 161 }; 162 } 163 164 // Returns a signed URL for downloading deployed function source code. 165 // The URL is only valid for a limited period and should be used within 166 // 30 minutes of generation. 167 // For more information about the signed URL usage see: 168 // https://cloud.google.com/storage/docs/access-control/signed-urls 169 rpc GenerateDownloadUrl(GenerateDownloadUrlRequest) returns (GenerateDownloadUrlResponse) { 170 option (google.api.http) = { 171 post: "/v2alpha/{name=projects/*/locations/*/functions/*}:generateDownloadUrl" 172 body: "*" 173 }; 174 } 175 176 // Returns a list of runtimes that are supported for the requested project. 177 rpc ListRuntimes(ListRuntimesRequest) returns (ListRuntimesResponse) { 178 option (google.api.http) = { 179 get: "/v2alpha/{parent=projects/*/locations/*}/runtimes" 180 }; 181 option (google.api.method_signature) = "parent"; 182 } 183} 184 185// The environment the function is hosted on. 186enum Environment { 187 // Unspecified 188 ENVIRONMENT_UNSPECIFIED = 0; 189 190 // Gen 1 191 GEN_1 = 1; 192 193 // Gen 2 194 GEN_2 = 2; 195} 196 197// Describes a Cloud Function that contains user computation executed in 198// response to an event. It encapsulates function and trigger configurations. 199message Function { 200 option (google.api.resource) = { 201 type: "cloudfunctions.googleapis.com/Function" 202 pattern: "projects/{project}/locations/{location}/functions/{function}" 203 plural: "functions" 204 singular: "function" 205 }; 206 207 // Describes the current state of the function. 208 enum State { 209 // Not specified. Invalid state. 210 STATE_UNSPECIFIED = 0; 211 212 // Function has been successfully deployed and is serving. 213 ACTIVE = 1; 214 215 // Function deployment failed and the function is not serving. 216 FAILED = 2; 217 218 // Function is being created or updated. 219 DEPLOYING = 3; 220 221 // Function is being deleted. 222 DELETING = 4; 223 224 // Function deployment failed and the function serving state is undefined. 225 // The function should be updated or deleted to move it out of this state. 226 UNKNOWN = 5; 227 } 228 229 // A user-defined name of the function. Function names must be unique 230 // globally and match pattern `projects/*/locations/*/functions/*` 231 string name = 1; 232 233 // Describe whether the function is gen1 or gen2. 234 Environment environment = 10; 235 236 // User-provided description of a function. 237 string description = 2; 238 239 // Describes the Build step of the function that builds a container from the 240 // given source. 241 BuildConfig build_config = 3; 242 243 // Describes the Service being deployed. Currently deploys services to Cloud 244 // Run (fully managed). 245 ServiceConfig service_config = 4; 246 247 // An Eventarc trigger managed by Google Cloud Functions that fires events in 248 // response to a condition in another service. 249 EventTrigger event_trigger = 5; 250 251 // Output only. State of the function. 252 State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; 253 254 // Output only. The last update timestamp of a Cloud Function. 255 google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; 256 257 // Labels associated with this Cloud Function. 258 map<string, string> labels = 8; 259 260 // Output only. State Messages for this Cloud Function. 261 repeated StateMessage state_messages = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; 262} 263 264// Informational messages about the state of the Cloud Function or Operation. 265message StateMessage { 266 // Severity of the state message. 267 enum Severity { 268 // Not specified. Invalid severity. 269 SEVERITY_UNSPECIFIED = 0; 270 271 // ERROR-level severity. 272 ERROR = 1; 273 274 // WARNING-level severity. 275 WARNING = 2; 276 277 // INFO-level severity. 278 INFO = 3; 279 } 280 281 // Severity of the state message. 282 Severity severity = 1; 283 284 // One-word CamelCase type of the state message. 285 string type = 2; 286 287 // The message. 288 string message = 3; 289} 290 291// Location of the source in an archive file in Google Cloud Storage. 292message StorageSource { 293 // Google Cloud Storage bucket containing the source (see 294 // [Bucket Name 295 // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). 296 string bucket = 1; 297 298 // Google Cloud Storage object containing the source. 299 // 300 // This object must be a gzipped archive file (`.tar.gz`) containing source to 301 // build. 302 string object = 2; 303 304 // Google Cloud Storage generation for the object. If the generation is 305 // omitted, the latest generation will be used. 306 int64 generation = 3; 307} 308 309// Location of the source in a Google Cloud Source Repository. 310message RepoSource { 311 // A revision within the Cloud Source Repository must be specified in 312 // one of these ways. 313 oneof revision { 314 // Regex matching branches to build. 315 // 316 // The syntax of the regular expressions accepted is the syntax accepted by 317 // RE2 and described at https://github.com/google/re2/wiki/Syntax 318 string branch_name = 3; 319 320 // Regex matching tags to build. 321 // 322 // The syntax of the regular expressions accepted is the syntax accepted by 323 // RE2 and described at https://github.com/google/re2/wiki/Syntax 324 string tag_name = 4; 325 326 // Explicit commit SHA to build. 327 string commit_sha = 5; 328 } 329 330 // ID of the project that owns the Cloud Source Repository. If omitted, the 331 // project ID requesting the build is assumed. 332 string project_id = 1; 333 334 // Name of the Cloud Source Repository. 335 string repo_name = 2; 336 337 // Directory, relative to the source root, in which to run the build. 338 // 339 // This must be a relative path. If a step's `dir` is specified and is an 340 // absolute path, this value is ignored for that step's execution. 341 // eg. helloworld (no leading slash allowed) 342 string dir = 6; 343 344 // Only trigger a build if the revision regex does NOT match the revision 345 // regex. 346 bool invert_regex = 7; 347} 348 349// The location of the function source code. 350message Source { 351 // Location of the source. 352 // At least one source needs to be provided for the deployment to succeed. 353 oneof source { 354 // If provided, get the source from this location in Google Cloud Storage. 355 StorageSource storage_source = 1; 356 357 // If provided, get the source from this location in a Cloud Source 358 // Repository. 359 RepoSource repo_source = 2; 360 } 361} 362 363// Provenance of the source. Ways to find the original source, or verify that 364// some source was used for this build. 365message SourceProvenance { 366 // A copy of the build's `source.storage_source`, if exists, with any 367 // generations resolved. 368 StorageSource resolved_storage_source = 1; 369 370 // A copy of the build's `source.repo_source`, if exists, with any 371 // revisions resolved. 372 RepoSource resolved_repo_source = 2; 373} 374 375// Describes the Build step of the function that builds a container from the 376// given source. 377message BuildConfig { 378 // Output only. The Cloud Build name of the latest successful deployment of the 379 // function. 380 string build = 1 [ 381 (google.api.field_behavior) = OUTPUT_ONLY, 382 (google.api.resource_reference) = { 383 type: "cloudbuild.googleapis.com/Build" 384 } 385 ]; 386 387 // The runtime in which to run the function. Required when deploying a new 388 // function, optional when updating an existing function. For a complete 389 // list of possible choices, see the 390 // [`gcloud` command 391 // reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime). 392 string runtime = 2; 393 394 // The name of the function (as defined in source code) that will be 395 // executed. Defaults to the resource name suffix, if not specified. For 396 // backward compatibility, if function with given name is not found, then the 397 // system will try to use function named "function". 398 // For Node.js this is name of a function exported by the module specified 399 // in `source_location`. 400 string entry_point = 3; 401 402 // The location of the function source code. 403 Source source = 4; 404 405 // Output only. A permanent fixed identifier for source. 406 SourceProvenance source_provenance = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; 407 408 // Name of the Cloud Build Custom Worker Pool that should be used to build the 409 // function. The format of this field is 410 // `projects/{project}/locations/{region}/workerPools/{workerPool}` where 411 // {project} and {region} are the project id and region respectively where the 412 // worker pool is defined and {workerPool} is the short name of the worker 413 // pool. 414 // 415 // If the project id is not the same as the function, then the Cloud 416 // Functions Service Agent 417 // (service-<project_number>@gcf-admin-robot.iam.gserviceaccount.com) must be 418 // granted the role Cloud Build Custom Workers Builder 419 // (roles/cloudbuild.customworkers.builder) in the project. 420 string worker_pool = 5 [(google.api.resource_reference) = { 421 type: "cloudbuild.googleapis.com/WorkerPool" 422 }]; 423 424 // User-provided build-time environment variables for the function 425 map<string, string> environment_variables = 6; 426 427 // Optional. User managed repository created in Artifact Registry optionally with a 428 // customer managed encryption key. This is the repository to which the 429 // function docker image will be pushed after it is built by Cloud Build. 430 // If unspecified, GCF will create and use a repository named 'gcf-artifacts' 431 // for every deployed region. 432 // 433 // It must match the pattern 434 // `projects/{project}/locations/{location}/repositories/{repository}`. 435 // 436 // Cross-project repositories are not supported. 437 // Cross-location repositories are not supported. 438 // Repository format must be 'DOCKER'. 439 string docker_repository = 7 [ 440 (google.api.field_behavior) = OPTIONAL, 441 (google.api.resource_reference) = { 442 type: "artifactregistry.googleapis.com/Repository" 443 } 444 ]; 445} 446 447// Describes the Service being deployed. 448// Currently Supported : Cloud Run (fully managed). 449message ServiceConfig { 450 // Available egress settings. 451 // 452 // This controls what traffic is diverted through the VPC Access Connector 453 // resource. By default PRIVATE_RANGES_ONLY will be used. 454 enum VpcConnectorEgressSettings { 455 // Unspecified. 456 VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED = 0; 457 458 // Use the VPC Access Connector only for private IP space from RFC1918. 459 PRIVATE_RANGES_ONLY = 1; 460 461 // Force the use of VPC Access Connector for all egress traffic from the 462 // function. 463 ALL_TRAFFIC = 2; 464 } 465 466 // Available ingress settings. 467 // 468 // This controls what traffic can reach the function. 469 // 470 // If unspecified, ALLOW_ALL will be used. 471 enum IngressSettings { 472 // Unspecified. 473 INGRESS_SETTINGS_UNSPECIFIED = 0; 474 475 // Allow HTTP traffic from public and private sources. 476 ALLOW_ALL = 1; 477 478 // Allow HTTP traffic from only private VPC sources. 479 ALLOW_INTERNAL_ONLY = 2; 480 481 // Allow HTTP traffic from private VPC sources and through GCLB. 482 ALLOW_INTERNAL_AND_GCLB = 3; 483 } 484 485 // Output only. Name of the service associated with a Function. 486 // The format of this field is 487 // `projects/{project}/locations/{region}/services/{service}` 488 string service = 1 [ 489 (google.api.field_behavior) = OUTPUT_ONLY, 490 (google.api.resource_reference) = { 491 type: "run.googleapis.com/Service" 492 } 493 ]; 494 495 // The function execution timeout. Execution is considered failed and 496 // can be terminated if the function is not completed at the end of the 497 // timeout period. Defaults to 60 seconds. 498 int32 timeout_seconds = 2; 499 500 // The amount of memory available for a function. 501 // Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is 502 // supplied the value is interpreted as bytes. 503 // See 504 // https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go 505 // a full description. 506 string available_memory = 13; 507 508 // Environment variables that shall be available during function execution. 509 map<string, string> environment_variables = 4; 510 511 // The limit on the maximum number of function instances that may coexist at a 512 // given time. 513 // 514 // In some cases, such as rapid traffic surges, Cloud Functions may, for a 515 // short period of time, create more instances than the specified max 516 // instances limit. If your function cannot tolerate this temporary behavior, 517 // you may want to factor in a safety margin and set a lower max instances 518 // value than your function can tolerate. 519 // 520 // See the [Max 521 // Instances](https://cloud.google.com/functions/docs/max-instances) Guide for 522 // more details. 523 int32 max_instance_count = 5; 524 525 // The limit on the minimum number of function instances that may coexist at a 526 // given time. 527 // 528 // Function instances are kept in idle state for a short period after they 529 // finished executing the request to reduce cold start time for subsequent 530 // requests. Setting a minimum instance count will ensure that the given 531 // number of instances are kept running in idle state always. This can help 532 // with cold start times when jump in incoming request count occurs after the 533 // idle instance would have been stopped in the default case. 534 int32 min_instance_count = 12; 535 536 // The Serverless VPC Access connector that this cloud function can connect 537 // to. The format of this field is `projects/*/locations/*/connectors/*`. 538 string vpc_connector = 6 [(google.api.resource_reference) = { 539 type: "vpcaccess.googleapis.com/Connector" 540 }]; 541 542 // The egress settings for the connector, controlling what traffic is diverted 543 // through it. 544 VpcConnectorEgressSettings vpc_connector_egress_settings = 7; 545 546 // The ingress settings for the function, controlling what traffic can reach 547 // it. 548 IngressSettings ingress_settings = 8; 549 550 // Output only. URI of the Service deployed. 551 string uri = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; 552 553 // The email of the service's service account. If empty, defaults to 554 // `{project_number}[email protected]`. 555 string service_account_email = 10; 556 557 // Whether 100% of traffic is routed to the latest revision. 558 // On CreateFunction and UpdateFunction, when set to true, the revision being 559 // deployed will serve 100% of traffic, ignoring any traffic split settings, 560 // if any. On GetFunction, true will be returned if the latest revision is 561 // serving 100% of traffic. 562 bool all_traffic_on_latest_revision = 16; 563 564 // Secret environment variables configuration. 565 repeated SecretEnvVar secret_environment_variables = 17; 566 567 // Secret volumes configuration. 568 repeated SecretVolume secret_volumes = 19; 569 570 // Output only. The name of service revision. 571 string revision = 18 [(google.api.field_behavior) = OUTPUT_ONLY]; 572} 573 574// Configuration for a secret environment variable. It has the information 575// necessary to fetch the secret value from secret manager and expose it as an 576// environment variable. 577message SecretEnvVar { 578 // Name of the environment variable. 579 string key = 1; 580 581 // Project identifier (preferably project number but can also be the 582 // project ID) of the project that contains the secret. If not set, it is 583 // assumed that the secret is in the same project as the function. 584 string project_id = 2; 585 586 // Name of the secret in secret manager (not the full resource name). 587 string secret = 3; 588 589 // Version of the secret (version number or the string 'latest'). It is 590 // recommended to use a numeric version for secret environment variables as 591 // any updates to the secret value is not reflected until new instances 592 // start. 593 string version = 4; 594} 595 596// Configuration for a secret volume. It has the information necessary to fetch 597// the secret value from secret manager and make it available as files mounted 598// at the requested paths within the application container. 599message SecretVolume { 600 // Configuration for a single version. 601 message SecretVersion { 602 // Version of the secret (version number or the string 'latest'). It is 603 // preferable to use `latest` version with secret volumes as secret value 604 // changes are reflected immediately. 605 string version = 1; 606 607 // Relative path of the file under the mount path where the secret value for 608 // this version will be fetched and made available. For example, setting the 609 // mount_path as '/etc/secrets' and path as `secret_foo` would mount the 610 // secret value file at `/etc/secrets/secret_foo`. 611 string path = 2; 612 } 613 614 // The path within the container to mount the secret volume. For example, 615 // setting the mount_path as `/etc/secrets` would mount the secret value files 616 // under the `/etc/secrets` directory. This directory will also be completely 617 // shadowed and unavailable to mount any other secrets. 618 // Recommended mount path: /etc/secrets 619 string mount_path = 1; 620 621 // Project identifier (preferably project number but can also be the project 622 // ID) of the project that contains the secret. If not set, it is 623 // assumed that the secret is in the same project as the function. 624 string project_id = 2; 625 626 // Name of the secret in secret manager (not the full resource name). 627 string secret = 3; 628 629 // List of secret versions to mount for this secret. If empty, the `latest` 630 // version of the secret will be made available in a file named after the 631 // secret under the mount point. 632 repeated SecretVersion versions = 4; 633} 634 635// Describes EventTrigger, used to request events to be sent from another 636// service. 637message EventTrigger { 638 // Describes the retry policy in case of function's execution failure. 639 // Retried execution is charged as any other execution. 640 enum RetryPolicy { 641 // Not specified. 642 RETRY_POLICY_UNSPECIFIED = 0; 643 644 // Do not retry. 645 RETRY_POLICY_DO_NOT_RETRY = 1; 646 647 // Retry on any failure, retry up to 7 days with an exponential backoff 648 // (capped at 10 seconds). 649 RETRY_POLICY_RETRY = 2; 650 } 651 652 // Output only. The resource name of the Eventarc trigger. The format of this field is 653 // `projects/{project}/locations/{region}/triggers/{trigger}`. 654 string trigger = 1 [ 655 (google.api.field_behavior) = OUTPUT_ONLY, 656 (google.api.resource_reference) = { 657 type: "eventarc.googleapis.com/Trigger" 658 } 659 ]; 660 661 // The region that the trigger will be in. The trigger will only receive 662 // events originating in this region. It can be the same 663 // region as the function, a different region or multi-region, or the global 664 // region. If not provided, defaults to the same region as the function. 665 string trigger_region = 2; 666 667 // Required. The type of event to observe. For example: 668 // `google.cloud.audit.log.v1.written` or 669 // `google.cloud.pubsub.topic.v1.messagePublished`. 670 string event_type = 3 [(google.api.field_behavior) = REQUIRED]; 671 672 // Criteria used to filter events. 673 repeated EventFilter event_filters = 4; 674 675 // Optional. The name of a Pub/Sub topic in the same project that will be used 676 // as the transport topic for the event delivery. Format: 677 // `projects/{project}/topics/{topic}`. 678 // 679 // This is only valid for events of type 680 // `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here 681 // will not be deleted at function deletion. 682 string pubsub_topic = 5 [ 683 (google.api.field_behavior) = OPTIONAL, 684 (google.api.resource_reference) = { 685 type: "pubsub.googleapis.com/Topic" 686 } 687 ]; 688 689 // Optional. The email of the trigger's service account. The service account must have 690 // permission to invoke Cloud Run services, the permission is 691 // `run.routes.invoke`. 692 // If empty, defaults to the Compute Engine default service account: 693 // `{project_number}[email protected]`. 694 string service_account_email = 6 [(google.api.field_behavior) = OPTIONAL]; 695 696 // Optional. If unset, then defaults to ignoring failures (i.e. not retrying them). 697 RetryPolicy retry_policy = 7 [(google.api.field_behavior) = OPTIONAL]; 698 699 // Optional. The name of the channel associated with the trigger in 700 // `projects/{project}/locations/{location}/channels/{channel}` format. 701 // You must provide a channel to receive events from Eventarc SaaS partners. 702 string channel = 8 [ 703 (google.api.field_behavior) = OPTIONAL, 704 (google.api.resource_reference) = { 705 type: "eventarc.googleapis.com/Channel" 706 } 707 ]; 708} 709 710// Filters events based on exact matches on the CloudEvents attributes. 711message EventFilter { 712 // Required. The name of a CloudEvents attribute. 713 string attribute = 1 [(google.api.field_behavior) = REQUIRED]; 714 715 // Required. The value for the attribute. 716 string value = 2 [(google.api.field_behavior) = REQUIRED]; 717 718 // Optional. The operator used for matching the events with the value of the 719 // filter. If not specified, only events that have an exact key-value pair 720 // specified in the filter are matched. The only allowed value is 721 // `match-path-pattern`. 722 string operator = 3 [(google.api.field_behavior) = OPTIONAL]; 723} 724 725// Request for the `GetFunction` method. 726message GetFunctionRequest { 727 // Required. The name of the function which details should be obtained. 728 string name = 1 [ 729 (google.api.field_behavior) = REQUIRED, 730 (google.api.resource_reference) = { 731 type: "cloudfunctions.googleapis.com/Function" 732 } 733 ]; 734} 735 736// Request for the `ListFunctions` method. 737message ListFunctionsRequest { 738 // Required. The project and location from which the function should be listed, 739 // specified in the format `projects/*/locations/*` 740 // If you want to list functions in all locations, use "-" in place of a 741 // location. When listing functions in all locations, if one or more 742 // location(s) are unreachable, the response will contain functions from all 743 // reachable locations along with the names of any unreachable locations. 744 string parent = 1 [ 745 (google.api.field_behavior) = REQUIRED, 746 (google.api.resource_reference) = { 747 child_type: "cloudfunctions.googleapis.com/Function" 748 } 749 ]; 750 751 // Maximum number of functions to return per call. 752 int32 page_size = 2; 753 754 // The value returned by the last 755 // `ListFunctionsResponse`; indicates that 756 // this is a continuation of a prior `ListFunctions` call, and that the 757 // system should return the next page of data. 758 string page_token = 3; 759 760 // The filter for Functions that match the filter expression, 761 // following the syntax outlined in https://google.aip.dev/160. 762 string filter = 4; 763 764 // The sorting order of the resources returned. Value should be a comma 765 // separated list of fields. The default sorting oder is ascending. 766 // See https://google.aip.dev/132#ordering. 767 string order_by = 5; 768} 769 770// Response for the `ListFunctions` method. 771message ListFunctionsResponse { 772 // The functions that match the request. 773 repeated Function functions = 1; 774 775 // A token, which can be sent as `page_token` to retrieve the next page. 776 // If this field is omitted, there are no subsequent pages. 777 string next_page_token = 2; 778 779 // Locations that could not be reached. The response does not include any 780 // functions from these locations. 781 repeated string unreachable = 3; 782} 783 784// Request for the `CreateFunction` method. 785message CreateFunctionRequest { 786 // Required. The project and location in which the function should be created, specified 787 // in the format `projects/*/locations/*` 788 string parent = 1 [ 789 (google.api.field_behavior) = REQUIRED, 790 (google.api.resource_reference) = { 791 type: "locations.googleapis.com/Location" 792 } 793 ]; 794 795 // Required. Function to be created. 796 Function function = 2 [(google.api.field_behavior) = REQUIRED]; 797 798 // The ID to use for the function, which will become the final component of 799 // the function's resource name. 800 // 801 // This value should be 4-63 characters, and valid characters 802 // are /[a-z][0-9]-/. 803 string function_id = 3; 804} 805 806// Request for the `UpdateFunction` method. 807message UpdateFunctionRequest { 808 // Required. New version of the function. 809 Function function = 1 [(google.api.field_behavior) = REQUIRED]; 810 811 // The list of fields to be updated. 812 // If no field mask is provided, all provided fields in the request will be 813 // updated. 814 google.protobuf.FieldMask update_mask = 2; 815} 816 817// Request for the `DeleteFunction` method. 818message DeleteFunctionRequest { 819 // Required. The name of the function which should be deleted. 820 string name = 1 [ 821 (google.api.field_behavior) = REQUIRED, 822 (google.api.resource_reference) = { 823 type: "cloudfunctions.googleapis.com/Function" 824 } 825 ]; 826} 827 828// Request of `GenerateSourceUploadUrl` method. 829message GenerateUploadUrlRequest { 830 // Required. The project and location in which the Google Cloud Storage signed URL 831 // should be generated, specified in the format `projects/*/locations/*`. 832 string parent = 1 [ 833 (google.api.field_behavior) = REQUIRED, 834 (google.api.resource_reference) = { 835 type: "locations.googleapis.com/Location" 836 } 837 ]; 838} 839 840// Response of `GenerateSourceUploadUrl` method. 841message GenerateUploadUrlResponse { 842 // The generated Google Cloud Storage signed URL that should be used for a 843 // function source code upload. The uploaded file should be a zip archive 844 // which contains a function. 845 string upload_url = 1; 846 847 // The location of the source code in the upload bucket. 848 // 849 // Once the archive is uploaded using the `upload_url` use this field to 850 // set the `function.build_config.source.storage_source` 851 // during CreateFunction and UpdateFunction. 852 // 853 // Generation defaults to 0, as Cloud Storage provides a new generation only 854 // upon uploading a new object or version of an object. 855 StorageSource storage_source = 2; 856} 857 858// Request of `GenerateDownloadUrl` method. 859message GenerateDownloadUrlRequest { 860 // Required. The name of function for which source code Google Cloud Storage signed 861 // URL should be generated. 862 string name = 1 [ 863 (google.api.field_behavior) = REQUIRED, 864 (google.api.resource_reference) = { 865 type: "cloudfunctions.googleapis.com/Function" 866 } 867 ]; 868} 869 870// Response of `GenerateDownloadUrl` method. 871message GenerateDownloadUrlResponse { 872 // The generated Google Cloud Storage signed URL that should be used for 873 // function source code download. 874 string download_url = 1; 875} 876 877// Request for the `ListRuntimes` method. 878message ListRuntimesRequest { 879 // Required. The project and location from which the runtimes should be listed, 880 // specified in the format `projects/*/locations/*` 881 string parent = 1 [ 882 (google.api.field_behavior) = REQUIRED, 883 (google.api.resource_reference) = { 884 type: "locations.googleapis.com/Location" 885 } 886 ]; 887 888 // The filter for Runtimes that match the filter expression, 889 // following the syntax outlined in https://google.aip.dev/160. 890 string filter = 2; 891} 892 893// Response for the `ListRuntimes` method. 894message ListRuntimesResponse { 895 // Describes a runtime and any special information (e.g., deprecation status) 896 // related to it. 897 message Runtime { 898 // The name of the runtime, e.g., 'go113', 'nodejs12', etc. 899 string name = 1; 900 901 // The user facing name, eg 'Go 1.13', 'Node.js 12', etc. 902 string display_name = 5; 903 904 // The stage of life this runtime is in, e.g., BETA, GA, etc. 905 RuntimeStage stage = 2; 906 907 // Warning messages, e.g., a deprecation warning. 908 repeated string warnings = 3; 909 910 // The environment for the runtime. 911 Environment environment = 4; 912 } 913 914 // The various stages that a runtime can be in. 915 enum RuntimeStage { 916 // Not specified. 917 RUNTIME_STAGE_UNSPECIFIED = 0; 918 919 // The runtime is in development. 920 DEVELOPMENT = 1; 921 922 // The runtime is in the Alpha stage. 923 ALPHA = 2; 924 925 // The runtime is in the Beta stage. 926 BETA = 3; 927 928 // The runtime is generally available. 929 GA = 4; 930 931 // The runtime is deprecated. 932 DEPRECATED = 5; 933 934 // The runtime is no longer supported. 935 DECOMMISSIONED = 6; 936 } 937 938 // The runtimes that match the request. 939 repeated Runtime runtimes = 1; 940} 941 942// Represents the metadata of the long-running operation. 943message OperationMetadata { 944 // The time the operation was created. 945 google.protobuf.Timestamp create_time = 1; 946 947 // The time the operation finished running. 948 google.protobuf.Timestamp end_time = 2; 949 950 // Server-defined resource path for the target of the operation. 951 string target = 3; 952 953 // Name of the verb executed by the operation. 954 string verb = 4; 955 956 // Human-readable status of the operation, if any. 957 string status_detail = 5; 958 959 // Identifies whether the user has requested cancellation 960 // of the operation. Operations that have successfully been cancelled 961 // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, 962 // corresponding to `Code.CANCELLED`. 963 bool cancel_requested = 6; 964 965 // API version used to start the operation. 966 string api_version = 7; 967 968 // The original request that started the operation. 969 google.protobuf.Any request_resource = 8; 970 971 // Mechanism for reporting in-progress stages 972 repeated Stage stages = 9; 973} 974 975// Each Stage of the deployment process 976message Stage { 977 // Possible names for a Stage 978 enum Name { 979 // Not specified. Invalid name. 980 NAME_UNSPECIFIED = 0; 981 982 // Artifact Regsitry Stage 983 ARTIFACT_REGISTRY = 1; 984 985 // Build Stage 986 BUILD = 2; 987 988 // Service Stage 989 SERVICE = 3; 990 991 // Trigger Stage 992 TRIGGER = 4; 993 994 // Service Rollback Stage 995 SERVICE_ROLLBACK = 5; 996 997 // Trigger Rollback Stage 998 TRIGGER_ROLLBACK = 6; 999 } 1000 1001 // Possible states for a Stage 1002 enum State { 1003 // Not specified. Invalid state. 1004 STATE_UNSPECIFIED = 0; 1005 1006 // Stage has not started. 1007 NOT_STARTED = 1; 1008 1009 // Stage is in progress. 1010 IN_PROGRESS = 2; 1011 1012 // Stage has completed. 1013 COMPLETE = 3; 1014 } 1015 1016 // Name of the Stage. This will be unique for each Stage. 1017 Name name = 1; 1018 1019 // Message describing the Stage 1020 string message = 2; 1021 1022 // Current state of the Stage 1023 State state = 3; 1024 1025 // Resource of the Stage 1026 string resource = 4; 1027 1028 // Link to the current Stage resource 1029 string resource_uri = 5; 1030 1031 // State messages from the current Stage. 1032 repeated StateMessage state_messages = 6; 1033} 1034