diff options
Diffstat (limited to 'google/cloud/functions/v1beta2/functions.proto')
-rw-r--r-- | google/cloud/functions/v1beta2/functions.proto | 312 |
1 files changed, 312 insertions, 0 deletions
diff --git a/google/cloud/functions/v1beta2/functions.proto b/google/cloud/functions/v1beta2/functions.proto new file mode 100644 index 000000000..77a66841a --- /dev/null +++ b/google/cloud/functions/v1beta2/functions.proto @@ -0,0 +1,312 @@ +// 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; +} |