| // Copyright 2017 Google Inc. |
| // |
| // 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.v1beta2; |
| |
| import "google/api/annotations.proto"; |
| import "google/api/auth.proto"; |
| import "google/cloud/functions/v1beta2/operations.proto"; |
| import "google/longrunning/operations.proto"; |
| import "google/protobuf/duration.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| option go_package = "google.golang.org/genproto/googleapis/cloud/functions/v1beta2;functions"; |
| option java_multiple_files = true; |
| option java_outer_classname = "FunctionsProto"; |
| option java_package = "com.google.cloud.functions.v1beta2"; |
| option objc_class_prefix = "GCF"; |
| |
| |
| // A service that application uses to manipulate triggers and functions. |
| service CloudFunctionsService { |
| // Returns a list of functions that belong to the requested project. |
| rpc ListFunctions(ListFunctionsRequest) returns (ListFunctionsResponse) { |
| option (google.api.http) = { get: "/v1beta2/{location=projects/*/locations/*}/functions" }; |
| } |
| |
| // Returns a function with the given name from the requested project. |
| rpc GetFunction(GetFunctionRequest) returns (CloudFunction) { |
| option (google.api.http) = { get: "/v1beta2/{name=projects/*/locations/*/functions/*}" }; |
| } |
| |
| // 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: "/v1beta2/{location=projects/*/locations/*}/functions" body: "function" }; |
| } |
| |
| // Updates existing function. |
| rpc UpdateFunction(UpdateFunctionRequest) returns (google.longrunning.Operation) { |
| option (google.api.http) = { put: "/v1beta2/{name=projects/*/locations/*/functions/*}" body: "function" }; |
| } |
| |
| // 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: "/v1beta2/{name=projects/*/locations/*/functions/*}" }; |
| } |
| |
| // Invokes synchronously deployed function. To be used for testing, very |
| // limited traffic allowed. |
| rpc CallFunction(CallFunctionRequest) returns (CallFunctionResponse) { |
| option (google.api.http) = { post: "/v1beta2/{name=projects/*/locations/*/functions/*}:call" body: "*" }; |
| } |
| } |
| |
| // Describes a Cloud Function that contains user computation executed in |
| // response to an event. It encapsulate function and triggers configurations. |
| message CloudFunction { |
| // A user-defined name of the function. Function names must be unique |
| // globally and match pattern `projects/*/locations/*/functions/*` |
| string name = 1; |
| |
| // The location of the function source code. |
| oneof source_code { |
| // The URL, starting with gs://, pointing to the zip archive which contains |
| // the function. |
| string source_archive_url = 14; |
| |
| // The hosted repository where the function is defined. |
| SourceRepository source_repository = 3; |
| } |
| |
| // An event that triggers the function. |
| oneof trigger { |
| // An HTTPS endpoint type of source that can be triggered via URL. |
| HTTPSTrigger https_trigger = 6; |
| |
| // A source that fires events in response to a condition in another service. |
| EventTrigger event_trigger = 12; |
| } |
| |
| // Output only. Status of the function deployment. |
| CloudFunctionStatus status = 7; |
| |
| // Output only. Name of the most recent operation modifying the function. If |
| // the function status is `DEPLOYING` or `DELETING`, then it points to the |
| // active operation. |
| string latest_operation = 8; |
| |
| // 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 = 9; |
| |
| // 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. |
| google.protobuf.Duration timeout = 10; |
| |
| // The amount of memory in MB available for a function. |
| // Defaults to 256MB. |
| int32 available_memory_mb = 11; |
| |
| // Output only. The service account of the function. |
| string service_account = 13; |
| |
| // Output only. The last update timestamp of a Cloud Function. |
| google.protobuf.Timestamp update_time = 15; |
| } |
| |
| // Describes HTTPSTrigger, could be used to connect web hooks to function. |
| message HTTPSTrigger { |
| // Output only. The deployed url for the function. |
| string url = 1; |
| } |
| |
| // Describes EventTrigger, used to request events be sent from another |
| // service. |
| message EventTrigger { |
| // `event_type` names contain the service that is sending an event and the |
| // kind of event that was fired. Must be of the form |
| // `providers/*/eventTypes/*` e.g. Directly handle a Message published to |
| // Google Cloud Pub/Sub `providers/cloud.pubsub/eventTypes/topic.publish` |
| // |
| // Handle an object changing in Google Cloud Storage |
| // `providers/cloud.storage/eventTypes/object.change` |
| // |
| // Handle a write to the Firebase Realtime Database |
| // `providers/firebase.database/eventTypes/data.write` |
| string event_type = 1; |
| |
| // Which instance of the source's service should send events. E.g. for Pub/Sub |
| // this would be a Pub/Sub topic at `projects/*/topics/*`. For Google Cloud |
| // Storage this would be a bucket at `projects/*/buckets/*`. For any source |
| // that only supports one instance per-project, this should be the name of the |
| // project (`projects/*`) |
| string resource = 2; |
| } |
| |
| // Describes the location of the function source in a remote repository. |
| message SourceRepository { |
| // URL to the hosted repository where the function is defined. Only paths in |
| // https://source.developers.google.com domain are supported. The path should |
| // contain the name of the repository. |
| string repository_url = 1; |
| |
| // The path within the repository where the function is defined. The path |
| // should point to the directory where Cloud Functions files are located. Use |
| // "/" if the function is defined directly in the root directory of a |
| // repository. |
| string source_path = 2; |
| |
| // The version of a function. Defaults to the latest version of the master |
| // branch. |
| oneof version { |
| // The name of the branch from which the function should be fetched. |
| string branch = 3; |
| |
| // The name of the tag that captures the state of the repository from |
| // which the function should be fetched. |
| string tag = 4; |
| |
| // The id of the revision that captures the state of the repository from |
| // which the function should be fetched. |
| string revision = 5; |
| } |
| |
| // Output only. The id of the revision that was resolved at the moment of |
| // function creation or update. For example when a user deployed from a |
| // branch, it will be the revision id of the latest change on this branch at |
| // that time. If user deployed from revision then this value will be always |
| // equal to the revision specified by the user. |
| string deployed_revision = 6; |
| } |
| |
| // Request for the `CreateFunction` method. |
| message CreateFunctionRequest { |
| // The project and location in which the function should be created, specified |
| // in the format `projects/*/locations/*` |
| string location = 1; |
| |
| // Function to be created. |
| CloudFunction function = 2; |
| } |
| |
| // Request for the `UpdateFunction` method. |
| message UpdateFunctionRequest { |
| // The name of the function to be updated. |
| string name = 1; |
| |
| // New version of the function. |
| CloudFunction function = 2; |
| } |
| |
| // Request for the `GetFunction` method. |
| message GetFunctionRequest { |
| // The name of the function which details should be obtained. |
| string name = 1; |
| } |
| |
| // Request for the `ListFunctions` method. |
| message ListFunctionsRequest { |
| // 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. |
| string location = 1; |
| |
| // 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; |
| } |
| |
| // Response for the `ListFunctions` method. |
| message ListFunctionsResponse { |
| // The functions that match the request. |
| repeated CloudFunction functions = 1; |
| |
| // If not empty, indicates that there may be more functions that match |
| // the request; this value should be passed in a new |
| // [google.cloud.functions.v1beta2.ListFunctionsRequest][] |
| // to get more functions. |
| string next_page_token = 2; |
| } |
| |
| // Request for the `DeleteFunction` method. |
| message DeleteFunctionRequest { |
| // The name of the function which should be deleted. |
| string name = 1; |
| } |
| |
| // Request for the `CallFunction` method. |
| message CallFunctionRequest { |
| // The name of the function to be called. |
| string name = 1; |
| |
| // Input to be passed to the function. |
| string data = 2; |
| } |
| |
| // Response of `CallFunction` method. |
| message CallFunctionResponse { |
| // Execution id of function invocation. |
| string execution_id = 1; |
| |
| // Result populated for successful execution of synchronous function. Will |
| // not be populated if function does not return a result through context. |
| string result = 2; |
| |
| // Either system or user-function generated error. Set if execution |
| // was not successful. |
| string error = 3; |
| } |
| |
| // Describes the current stage of a deployment. |
| enum CloudFunctionStatus { |
| // Status not specified. |
| STATUS_UNSPECIFIED = 0; |
| |
| // Successfully deployed. |
| READY = 1; |
| |
| // Not deployed correctly - behavior is undefined. The item should be updated |
| // or deleted to move it out of this state. |
| FAILED = 2; |
| |
| // Creation or update in progress. |
| DEPLOYING = 3; |
| |
| // Deletion in progress. |
| DELETING = 4; |
| } |