You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
313 lines
11 KiB
313 lines
11 KiB
6 years ago
|
// 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;
|
||
|
}
|