// 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; }