| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033 | // 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.functions.v2alpha;import "google/api/annotations.proto";import "google/api/client.proto";import "google/api/field_behavior.proto";import "google/api/resource.proto";import "google/longrunning/operations.proto";import "google/protobuf/any.proto";import "google/protobuf/field_mask.proto";import "google/protobuf/timestamp.proto";option go_package = "google.golang.org/genproto/googleapis/cloud/functions/v2alpha;functions";option java_multiple_files = true;option java_outer_classname = "FunctionsProto";option java_package = "com.google.cloud.functions.v2alpha";option objc_class_prefix = "GCF";option (google.api.resource_definition) = {  type: "artifactregistry.googleapis.com/Repository"  pattern: "projects/{project}/locations/{location}/repositories/{repository}"};option (google.api.resource_definition) = {  type: "cloudbuild.googleapis.com/Build"  pattern: "projects/{project}/locations/{location}/builds/{build}"};option (google.api.resource_definition) = {  type: "cloudbuild.googleapis.com/WorkerPool"  pattern: "projects/{project}/locations/{location}/workerPools/{worker_pool}"};option (google.api.resource_definition) = {  type: "run.googleapis.com/Service"  pattern: "projects/{project}/locations/{location}/services/{service}"};option (google.api.resource_definition) = {  type: "vpcaccess.googleapis.com/Connector"  pattern: "projects/{project}/locations/{location}/connectors/{connector}"};option (google.api.resource_definition) = {  type: "eventarc.googleapis.com/Trigger"  pattern: "projects/{project}/locations/{location}/triggers/{trigger}"};option (google.api.resource_definition) = {  type: "eventarc.googleapis.com/Channel"  pattern: "projects/{project}/locations/{location}/channels/{channel}"};option (google.api.resource_definition) = {  type: "pubsub.googleapis.com/Topic"  pattern: "projects/{project}/topics/{topic}"};// Google Cloud Functions is used to deploy functions that are executed by// Google in response to various events. Data connected with that event is// passed to a function as the input data.//// A **function** is a resource which describes a function that should be// executed and how it is triggered.service FunctionService {  option (google.api.default_host) = "cloudfunctions.googleapis.com";  option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";  // Returns a function with the given name from the requested project.  rpc GetFunction(GetFunctionRequest) returns (Function) {    option (google.api.http) = {      get: "/v2alpha/{name=projects/*/locations/*/functions/*}"    };    option (google.api.method_signature) = "name";  }  // Returns a list of functions that belong to the requested project.  rpc ListFunctions(ListFunctionsRequest) returns (ListFunctionsResponse) {    option (google.api.http) = {      get: "/v2alpha/{parent=projects/*/locations/*}/functions"    };    option (google.api.method_signature) = "parent";  }  // Creates a new function. If a function with the given name already exists in  // the specified project, the long running operation will return  // `ALREADY_EXISTS` error.  rpc CreateFunction(CreateFunctionRequest) returns (google.longrunning.Operation) {    option (google.api.http) = {      post: "/v2alpha/{parent=projects/*/locations/*}/functions"      body: "function"    };    option (google.api.method_signature) = "parent,function,function_id";    option (google.longrunning.operation_info) = {      response_type: "google.cloud.functions.v2alpha.Function"      metadata_type: "google.cloud.functions.v2alpha.OperationMetadata"    };  }  // Updates existing function.  rpc UpdateFunction(UpdateFunctionRequest) returns (google.longrunning.Operation) {    option (google.api.http) = {      patch: "/v2alpha/{function.name=projects/*/locations/*/functions/*}"      body: "function"    };    option (google.api.method_signature) = "function,update_mask";    option (google.longrunning.operation_info) = {      response_type: "google.cloud.functions.v2alpha.Function"      metadata_type: "google.cloud.functions.v2alpha.OperationMetadata"    };  }  // Deletes a function with the given name from the specified project. If the  // given function is used by some trigger, the trigger will be updated to  // remove this function.  rpc DeleteFunction(DeleteFunctionRequest) returns (google.longrunning.Operation) {    option (google.api.http) = {      delete: "/v2alpha/{name=projects/*/locations/*/functions/*}"    };    option (google.api.method_signature) = "name";    option (google.longrunning.operation_info) = {      response_type: "google.protobuf.Empty"      metadata_type: "google.cloud.functions.v2alpha.OperationMetadata"    };  }  // Returns a signed URL for uploading a function source code.  // For more information about the signed URL usage see:  // https://cloud.google.com/storage/docs/access-control/signed-urls.  // Once the function source code upload is complete, the used signed  // URL should be provided in CreateFunction or UpdateFunction request  // as a reference to the function source code.  //  // When uploading source code to the generated signed URL, please follow  // these restrictions:  //  // * Source file type should be a zip file.  // * No credentials should be attached - the signed URLs provide access to the  //   target bucket using internal service identity; if credentials were  //   attached, the identity from the credentials would be used, but that  //   identity does not have permissions to upload files to the URL.  //  // When making a HTTP PUT request, these two headers need to be specified:  //  // * `content-type: application/zip`  //  // And this header SHOULD NOT be specified:  //  // * `Authorization: Bearer YOUR_TOKEN`  rpc GenerateUploadUrl(GenerateUploadUrlRequest) returns (GenerateUploadUrlResponse) {    option (google.api.http) = {      post: "/v2alpha/{parent=projects/*/locations/*}/functions:generateUploadUrl"      body: "*"    };  }  // Returns a signed URL for downloading deployed function source code.  // The URL is only valid for a limited period and should be used within  // 30 minutes of generation.  // For more information about the signed URL usage see:  // https://cloud.google.com/storage/docs/access-control/signed-urls  rpc GenerateDownloadUrl(GenerateDownloadUrlRequest) returns (GenerateDownloadUrlResponse) {    option (google.api.http) = {      post: "/v2alpha/{name=projects/*/locations/*/functions/*}:generateDownloadUrl"      body: "*"    };  }  // Returns a list of runtimes that are supported for the requested project.  rpc ListRuntimes(ListRuntimesRequest) returns (ListRuntimesResponse) {    option (google.api.http) = {      get: "/v2alpha/{parent=projects/*/locations/*}/runtimes"    };    option (google.api.method_signature) = "parent";  }}// The environment the function is hosted on.enum Environment {  // Unspecified  ENVIRONMENT_UNSPECIFIED = 0;  // Gen 1  GEN_1 = 1;  // Gen 2  GEN_2 = 2;}// Describes a Cloud Function that contains user computation executed in// response to an event. It encapsulates function and trigger configurations.message Function {  option (google.api.resource) = {    type: "cloudfunctions.googleapis.com/Function"    pattern: "projects/{project}/locations/{location}/functions/{function}"    plural: "functions"    singular: "function"  };  // Describes the current state of the function.  enum State {    // Not specified. Invalid state.    STATE_UNSPECIFIED = 0;    // Function has been successfully deployed and is serving.    ACTIVE = 1;    // Function deployment failed and the function is not serving.    FAILED = 2;    // Function is being created or updated.    DEPLOYING = 3;    // Function is being deleted.    DELETING = 4;    // Function deployment failed and the function serving state is undefined.    // The function should be updated or deleted to move it out of this state.    UNKNOWN = 5;  }  // A user-defined name of the function. Function names must be unique  // globally and match pattern `projects/*/locations/*/functions/*`  string name = 1;  // Describe whether the function is gen1 or gen2.  Environment environment = 10;  // User-provided description of a function.  string description = 2;  // Describes the Build step of the function that builds a container from the  // given source.  BuildConfig build_config = 3;  // Describes the Service being deployed. Currently deploys services to Cloud  // Run (fully managed).  ServiceConfig service_config = 4;  // An Eventarc trigger managed by Google Cloud Functions that fires events in  // response to a condition in another service.  EventTrigger event_trigger = 5;  // Output only. State of the function.  State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];  // Output only. The last update timestamp of a Cloud Function.  google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];  // Labels associated with this Cloud Function.  map<string, string> labels = 8;  // Output only. State Messages for this Cloud Function.  repeated StateMessage state_messages = 9 [(google.api.field_behavior) = OUTPUT_ONLY];}// Informational messages about the state of the Cloud Function or Operation.message StateMessage {  // Severity of the state message.  enum Severity {    // Not specified. Invalid severity.    SEVERITY_UNSPECIFIED = 0;    // ERROR-level severity.    ERROR = 1;    // WARNING-level severity.    WARNING = 2;    // INFO-level severity.    INFO = 3;  }  // Severity of the state message.  Severity severity = 1;  // One-word CamelCase type of the state message.  string type = 2;  // The message.  string message = 3;}// Location of the source in an archive file in Google Cloud Storage.message StorageSource {  // Google Cloud Storage bucket containing the source (see  // [Bucket Name  // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).  string bucket = 1;  // Google Cloud Storage object containing the source.  //  // This object must be a gzipped archive file (`.tar.gz`) containing source to  // build.  string object = 2;  // Google Cloud Storage generation for the object. If the generation is  // omitted, the latest generation will be used.  int64 generation = 3;}// Location of the source in a Google Cloud Source Repository.message RepoSource {  // A revision within the Cloud Source Repository must be specified in  // one of these ways.  oneof revision {    // Regex matching branches to build.    //    // The syntax of the regular expressions accepted is the syntax accepted by    // RE2 and described at https://github.com/google/re2/wiki/Syntax    string branch_name = 3;    // Regex matching tags to build.    //    // The syntax of the regular expressions accepted is the syntax accepted by    // RE2 and described at https://github.com/google/re2/wiki/Syntax    string tag_name = 4;    // Explicit commit SHA to build.    string commit_sha = 5;  }  // ID of the project that owns the Cloud Source Repository. If omitted, the  // project ID requesting the build is assumed.  string project_id = 1;  // Name of the Cloud Source Repository.  string repo_name = 2;  // Directory, relative to the source root, in which to run the build.  //  // This must be a relative path. If a step's `dir` is specified and is an  // absolute path, this value is ignored for that step's execution.  // eg. helloworld (no leading slash allowed)  string dir = 6;  // Only trigger a build if the revision regex does NOT match the revision  // regex.  bool invert_regex = 7;}// The location of the function source code.message Source {  // Location of the source.  // At least one source needs to be provided for the deployment to succeed.  oneof source {    // If provided, get the source from this location in Google Cloud Storage.    StorageSource storage_source = 1;    // If provided, get the source from this location in a Cloud Source    // Repository.    RepoSource repo_source = 2;  }}// Provenance of the source. Ways to find the original source, or verify that// some source was used for this build.message SourceProvenance {  // A copy of the build's `source.storage_source`, if exists, with any  // generations resolved.  StorageSource resolved_storage_source = 1;  // A copy of the build's `source.repo_source`, if exists, with any  // revisions resolved.  RepoSource resolved_repo_source = 2;}// Describes the Build step of the function that builds a container from the// given source.message BuildConfig {  // Output only. The Cloud Build name of the latest successful deployment of the  // function.  string build = 1 [    (google.api.field_behavior) = OUTPUT_ONLY,    (google.api.resource_reference) = {      type: "cloudbuild.googleapis.com/Build"    }  ];  // The runtime in which to run the function. Required when deploying a new  // function, optional when updating an existing function. For a complete  // list of possible choices, see the  // [`gcloud` command  // reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).  string runtime = 2;  // The name of the function (as defined in source code) that will be  // executed. Defaults to the resource name suffix, if not specified. For  // backward compatibility, if function with given name is not found, then the  // system will try to use function named "function".  // For Node.js this is name of a function exported by the module specified  // in `source_location`.  string entry_point = 3;  // The location of the function source code.  Source source = 4;  // Output only. A permanent fixed identifier for source.  SourceProvenance source_provenance = 8 [(google.api.field_behavior) = OUTPUT_ONLY];  // Name of the Cloud Build Custom Worker Pool that should be used to build the  // function. The format of this field is  // `projects/{project}/locations/{region}/workerPools/{workerPool}` where  // {project} and {region} are the project id and region respectively where the  // worker pool is defined and {workerPool} is the short name of the worker  // pool.  //  // If the project id is not the same as the function, then the Cloud  // Functions Service Agent  // (service-<project_number>@gcf-admin-robot.iam.gserviceaccount.com) must be  // granted the role Cloud Build Custom Workers Builder  // (roles/cloudbuild.customworkers.builder) in the project.  string worker_pool = 5 [(google.api.resource_reference) = {                            type: "cloudbuild.googleapis.com/WorkerPool"                          }];  // User-provided build-time environment variables for the function  map<string, string> environment_variables = 6;  // Optional. User managed repository created in Artifact Registry optionally with a  // customer managed encryption key. This is the repository to which the  // function docker image will be pushed after it is built by Cloud Build.  // If unspecified, GCF will create and use a repository named 'gcf-artifacts'  // for every deployed region.  //  // It must match the pattern  // `projects/{project}/locations/{location}/repositories/{repository}`.  //  // Cross-project repositories are not supported.  // Cross-location repositories are not supported.  // Repository format must be 'DOCKER'.  string docker_repository = 7 [    (google.api.field_behavior) = OPTIONAL,    (google.api.resource_reference) = {      type: "artifactregistry.googleapis.com/Repository"    }  ];}// Describes the Service being deployed.// Currently Supported : Cloud Run (fully managed).message ServiceConfig {  // Available egress settings.  //  // This controls what traffic is diverted through the VPC Access Connector  // resource. By default PRIVATE_RANGES_ONLY will be used.  enum VpcConnectorEgressSettings {    // Unspecified.    VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED = 0;    // Use the VPC Access Connector only for private IP space from RFC1918.    PRIVATE_RANGES_ONLY = 1;    // Force the use of VPC Access Connector for all egress traffic from the    // function.    ALL_TRAFFIC = 2;  }  // Available ingress settings.  //  // This controls what traffic can reach the function.  //  // If unspecified, ALLOW_ALL will be used.  enum IngressSettings {    // Unspecified.    INGRESS_SETTINGS_UNSPECIFIED = 0;    // Allow HTTP traffic from public and private sources.    ALLOW_ALL = 1;    // Allow HTTP traffic from only private VPC sources.    ALLOW_INTERNAL_ONLY = 2;    // Allow HTTP traffic from private VPC sources and through GCLB.    ALLOW_INTERNAL_AND_GCLB = 3;  }  // Output only. Name of the service associated with a Function.  // The format of this field is  // `projects/{project}/locations/{region}/services/{service}`  string service = 1 [    (google.api.field_behavior) = OUTPUT_ONLY,    (google.api.resource_reference) = {      type: "run.googleapis.com/Service"    }  ];  // The function execution timeout. Execution is considered failed and  // can be terminated if the function is not completed at the end of the  // timeout period. Defaults to 60 seconds.  int32 timeout_seconds = 2;  // The amount of memory available for a function.  // Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is  // supplied the value is interpreted as bytes.  // See  // https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go  // a full description.  string available_memory = 13;  // Environment variables that shall be available during function execution.  map<string, string> environment_variables = 4;  // The limit on the maximum number of function instances that may coexist at a  // given time.  //  // In some cases, such as rapid traffic surges, Cloud Functions may, for a  // short period of time, create more instances than the specified max  // instances limit. If your function cannot tolerate this temporary behavior,  // you may want to factor in a safety margin and set a lower max instances  // value than your function can tolerate.  //  // See the [Max  // Instances](https://cloud.google.com/functions/docs/max-instances) Guide for  // more details.  int32 max_instance_count = 5;  // The limit on the minimum number of function instances that may coexist at a  // given time.  //  // Function instances are kept in idle state for a short period after they  // finished executing the request to reduce cold start time for subsequent  // requests. Setting a minimum instance count will ensure that the given  // number of instances are kept running in idle state always. This can help  // with cold start times when jump in incoming request count occurs after the  // idle instance would have been stopped in the default case.  int32 min_instance_count = 12;  // The Serverless VPC Access connector that this cloud function can connect  // to. The format of this field is `projects/*/locations/*/connectors/*`.  string vpc_connector = 6 [(google.api.resource_reference) = {                              type: "vpcaccess.googleapis.com/Connector"                            }];  // The egress settings for the connector, controlling what traffic is diverted  // through it.  VpcConnectorEgressSettings vpc_connector_egress_settings = 7;  // The ingress settings for the function, controlling what traffic can reach  // it.  IngressSettings ingress_settings = 8;  // Output only. URI of the Service deployed.  string uri = 9 [(google.api.field_behavior) = OUTPUT_ONLY];  // The email of the service's service account. If empty, defaults to  // `{project_number}-compute@developer.gserviceaccount.com`.  string service_account_email = 10;  // Whether 100% of traffic is routed to the latest revision.  // On CreateFunction and UpdateFunction, when set to true, the revision being  // deployed will serve 100% of traffic, ignoring any traffic split settings,  // if any. On GetFunction, true will be returned if the latest revision is  // serving 100% of traffic.  bool all_traffic_on_latest_revision = 16;  // Secret environment variables configuration.  repeated SecretEnvVar secret_environment_variables = 17;  // Secret volumes configuration.  repeated SecretVolume secret_volumes = 19;  // Output only. The name of service revision.  string revision = 18 [(google.api.field_behavior) = OUTPUT_ONLY];}// Configuration for a secret environment variable. It has the information// necessary to fetch the secret value from secret manager and expose it as an// environment variable.message SecretEnvVar {  // Name of the environment variable.  string key = 1;  // Project identifier (preferably project number but can also be the  // project ID) of the project that contains the secret. If not set, it is  // assumed that the secret is in the same project as the function.  string project_id = 2;  // Name of the secret in secret manager (not the full resource name).  string secret = 3;  // Version of the secret (version number or the string 'latest'). It is  // recommended to use a numeric version for secret environment variables as  // any updates to the secret value is not reflected until new instances  // start.  string version = 4;}// Configuration for a secret volume. It has the information necessary to fetch// the secret value from secret manager and make it available as files mounted// at the requested paths within the application container.message SecretVolume {  // Configuration for a single version.  message SecretVersion {    // Version of the secret (version number or the string 'latest'). It is    // preferable to use `latest` version with secret volumes as secret value    // changes are reflected immediately.    string version = 1;    // Relative path of the file under the mount path where the secret value for    // this version will be fetched and made available. For example, setting the    // mount_path as '/etc/secrets' and path as `secret_foo` would mount the    // secret value file at `/etc/secrets/secret_foo`.    string path = 2;  }  // The path within the container to mount the secret volume. For example,  // setting the mount_path as `/etc/secrets` would mount the secret value files  // under the `/etc/secrets` directory. This directory will also be completely  // shadowed and unavailable to mount any other secrets.  // Recommended mount path: /etc/secrets  string mount_path = 1;  // Project identifier (preferably project number but can also be the project  // ID) of the project that contains the secret. If not set, it is  // assumed that the secret is in the same project as the function.  string project_id = 2;  // Name of the secret in secret manager (not the full resource name).  string secret = 3;  // List of secret versions to mount for this secret. If empty, the `latest`  // version of the secret will be made available in a file named after the  // secret under the mount point.  repeated SecretVersion versions = 4;}// Describes EventTrigger, used to request events to be sent from another// service.message EventTrigger {  // Describes the retry policy in case of function's execution failure.  // Retried execution is charged as any other execution.  enum RetryPolicy {    // Not specified.    RETRY_POLICY_UNSPECIFIED = 0;    // Do not retry.    RETRY_POLICY_DO_NOT_RETRY = 1;    // Retry on any failure, retry up to 7 days with an exponential backoff    // (capped at 10 seconds).    RETRY_POLICY_RETRY = 2;  }  // Output only. The resource name of the Eventarc trigger. The format of this field is  // `projects/{project}/locations/{region}/triggers/{trigger}`.  string trigger = 1 [    (google.api.field_behavior) = OUTPUT_ONLY,    (google.api.resource_reference) = {      type: "eventarc.googleapis.com/Trigger"    }  ];  // The region that the trigger will be in. The trigger will only receive  // events originating in this region. It can be the same  // region as the function, a different region or multi-region, or the global  // region. If not provided, defaults to the same region as the function.  string trigger_region = 2;  // Required. The type of event to observe. For example:  // `google.cloud.audit.log.v1.written` or  // `google.cloud.pubsub.topic.v1.messagePublished`.  string event_type = 3 [(google.api.field_behavior) = REQUIRED];  // Criteria used to filter events.  repeated EventFilter event_filters = 4;  // Optional. The name of a Pub/Sub topic in the same project that will be used  // as the transport topic for the event delivery. Format:  // `projects/{project}/topics/{topic}`.  //  // This is only valid for events of type  // `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here  // will not be deleted at function deletion.  string pubsub_topic = 5 [    (google.api.field_behavior) = OPTIONAL,    (google.api.resource_reference) = {      type: "pubsub.googleapis.com/Topic"    }  ];  // Optional. The email of the trigger's service account. The service account must have  // permission to invoke Cloud Run services, the permission is  // `run.routes.invoke`.  // If empty, defaults to the Compute Engine default service account:  // `{project_number}-compute@developer.gserviceaccount.com`.  string service_account_email = 6 [(google.api.field_behavior) = OPTIONAL];  // Optional. If unset, then defaults to ignoring failures (i.e. not retrying them).  RetryPolicy retry_policy = 7 [(google.api.field_behavior) = OPTIONAL];  // Optional. The name of the channel associated with the trigger in  // `projects/{project}/locations/{location}/channels/{channel}` format.  // You must provide a channel to receive events from Eventarc SaaS partners.  string channel = 8 [    (google.api.field_behavior) = OPTIONAL,    (google.api.resource_reference) = {      type: "eventarc.googleapis.com/Channel"    }  ];}// Filters events based on exact matches on the CloudEvents attributes.message EventFilter {  // Required. The name of a CloudEvents attribute.  string attribute = 1 [(google.api.field_behavior) = REQUIRED];  // Required. The value for the attribute.  string value = 2 [(google.api.field_behavior) = REQUIRED];  // Optional. The operator used for matching the events with the value of the  // filter. If not specified, only events that have an exact key-value pair  // specified in the filter are matched. The only allowed value is  // `match-path-pattern`.  string operator = 3 [(google.api.field_behavior) = OPTIONAL];}// Request for the `GetFunction` method.message GetFunctionRequest {  // Required. The name of the function which details should be obtained.  string name = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "cloudfunctions.googleapis.com/Function"    }  ];}// Request for the `ListFunctions` method.message ListFunctionsRequest {  // Required. The project and location from which the function should be listed,  // specified in the format `projects/*/locations/*`  // If you want to list functions in all locations, use "-" in place of a  // location. When listing functions in all locations, if one or more  // location(s) are unreachable, the response will contain functions from all  // reachable locations along with the names of any unreachable locations.  string parent = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      child_type: "cloudfunctions.googleapis.com/Function"    }  ];  // Maximum number of functions to return per call.  int32 page_size = 2;  // The value returned by the last  // `ListFunctionsResponse`; indicates that  // this is a continuation of a prior `ListFunctions` call, and that the  // system should return the next page of data.  string page_token = 3;  // The filter for Functions that match the filter expression,  // following the syntax outlined in https://google.aip.dev/160.  string filter = 4;  // The sorting order of the resources returned. Value should be a comma  // separated list of fields. The default sorting oder is ascending.  // See https://google.aip.dev/132#ordering.  string order_by = 5;}// Response for the `ListFunctions` method.message ListFunctionsResponse {  // The functions that match the request.  repeated Function functions = 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 that could not be reached. The response does not include any  // functions from these locations.  repeated string unreachable = 3;}// Request for the `CreateFunction` method.message CreateFunctionRequest {  // Required. The project and location in which the function should be created, specified  // in the format `projects/*/locations/*`  string parent = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "locations.googleapis.com/Location"    }  ];  // Required. Function to be created.  Function function = 2 [(google.api.field_behavior) = REQUIRED];  // The ID to use for the function, which will become the final component of  // the function's resource name.  //  // This value should be 4-63 characters, and valid characters  // are /[a-z][0-9]-/.  string function_id = 3;}// Request for the `UpdateFunction` method.message UpdateFunctionRequest {  // Required. New version of the function.  Function function = 1 [(google.api.field_behavior) = REQUIRED];  // The list of fields to be updated.  // If no field mask is provided, all provided fields in the request will be  // updated.  google.protobuf.FieldMask update_mask = 2;}// Request for the `DeleteFunction` method.message DeleteFunctionRequest {  // Required. The name of the function which should be deleted.  string name = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "cloudfunctions.googleapis.com/Function"    }  ];}// Request of `GenerateSourceUploadUrl` method.message GenerateUploadUrlRequest {  // Required. The project and location in which the Google Cloud Storage signed URL  // should be generated, specified in the format `projects/*/locations/*`.  string parent = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "locations.googleapis.com/Location"    }  ];}// Response of `GenerateSourceUploadUrl` method.message GenerateUploadUrlResponse {  // The generated Google Cloud Storage signed URL that should be used for a  // function source code upload. The uploaded file should be a zip archive  // which contains a function.  string upload_url = 1;  // The location of the source code in the upload bucket.  //  // Once the archive is uploaded using the `upload_url` use this field to  // set the `function.build_config.source.storage_source`  // during CreateFunction and UpdateFunction.  //  // Generation defaults to 0, as Cloud Storage provides a new generation only  // upon uploading a new object or version of an object.  StorageSource storage_source = 2;}// Request of `GenerateDownloadUrl` method.message GenerateDownloadUrlRequest {  // Required. The name of function for which source code Google Cloud Storage signed  // URL should be generated.  string name = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "cloudfunctions.googleapis.com/Function"    }  ];}// Response of `GenerateDownloadUrl` method.message GenerateDownloadUrlResponse {  // The generated Google Cloud Storage signed URL that should be used for  // function source code download.  string download_url = 1;}// Request for the `ListRuntimes` method.message ListRuntimesRequest {  // Required. The project and location from which the runtimes should be listed,  // specified in the format `projects/*/locations/*`  string parent = 1 [    (google.api.field_behavior) = REQUIRED,    (google.api.resource_reference) = {      type: "locations.googleapis.com/Location"    }  ];  // The filter for Runtimes that match the filter expression,  // following the syntax outlined in https://google.aip.dev/160.  string filter = 2;}// Response for the `ListRuntimes` method.message ListRuntimesResponse {  // Describes a runtime and any special information (e.g., deprecation status)  // related to it.  message Runtime {    // The name of the runtime, e.g., 'go113', 'nodejs12', etc.    string name = 1;    // The user facing name, eg 'Go 1.13', 'Node.js 12', etc.    string display_name = 5;    // The stage of life this runtime is in, e.g., BETA, GA, etc.    RuntimeStage stage = 2;    // Warning messages, e.g., a deprecation warning.    repeated string warnings = 3;    // The environment for the runtime.    Environment environment = 4;  }  // The various stages that a runtime can be in.  enum RuntimeStage {    // Not specified.    RUNTIME_STAGE_UNSPECIFIED = 0;    // The runtime is in development.    DEVELOPMENT = 1;    // The runtime is in the Alpha stage.    ALPHA = 2;    // The runtime is in the Beta stage.    BETA = 3;    // The runtime is generally available.    GA = 4;    // The runtime is deprecated.    DEPRECATED = 5;    // The runtime is no longer supported.    DECOMMISSIONED = 6;  }  // The runtimes that match the request.  repeated Runtime runtimes = 1;}// Represents the metadata of the long-running operation.message OperationMetadata {  // The time the operation was created.  google.protobuf.Timestamp create_time = 1;  // The time the operation finished running.  google.protobuf.Timestamp end_time = 2;  // Server-defined resource path for the target of the operation.  string target = 3;  // Name of the verb executed by the operation.  string verb = 4;  // Human-readable status of the operation, if any.  string status_detail = 5;  // Identifies whether the user has requested cancellation  // of the operation. Operations that have successfully been cancelled  // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,  // corresponding to `Code.CANCELLED`.  bool cancel_requested = 6;  // API version used to start the operation.  string api_version = 7;  // The original request that started the operation.  google.protobuf.Any request_resource = 8;  // Mechanism for reporting in-progress stages  repeated Stage stages = 9;}// Each Stage of the deployment processmessage Stage {  // Possible names for a Stage  enum Name {    // Not specified. Invalid name.    NAME_UNSPECIFIED = 0;    // Artifact Regsitry Stage    ARTIFACT_REGISTRY = 1;    // Build Stage    BUILD = 2;    // Service Stage    SERVICE = 3;    // Trigger Stage    TRIGGER = 4;    // Service Rollback Stage    SERVICE_ROLLBACK = 5;    // Trigger Rollback Stage    TRIGGER_ROLLBACK = 6;  }  // Possible states for a Stage  enum State {    // Not specified. Invalid state.    STATE_UNSPECIFIED = 0;    // Stage has not started.    NOT_STARTED = 1;    // Stage is in progress.    IN_PROGRESS = 2;    // Stage has completed.    COMPLETE = 3;  }  // Name of the Stage. This will be unique for each Stage.  Name name = 1;  // Message describing the Stage  string message = 2;  // Current state of the Stage  State state = 3;  // Resource of the Stage  string resource = 4;  // Link to the current Stage resource  string resource_uri = 5;  // State messages from the current Stage.  repeated StateMessage state_messages = 6;}
 |