mirror of
https://github.com/googleapis/googleapis.git
synced 2026-08-14 12:42:59 +02:00
536 lines
20 KiB
Protocol Buffer
536 lines
20 KiB
Protocol Buffer
// Copyright 2025 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.bigquery.v2;
|
|
|
|
import "google/api/annotations.proto";
|
|
import "google/api/client.proto";
|
|
import "google/api/field_behavior.proto";
|
|
import "google/cloud/bigquery/v2/routine_reference.proto";
|
|
import "google/cloud/bigquery/v2/standard_sql.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "google/protobuf/field_mask.proto";
|
|
import "google/protobuf/wrappers.proto";
|
|
|
|
option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb";
|
|
option java_outer_classname = "RoutineProto";
|
|
option java_package = "com.google.cloud.bigquery.v2";
|
|
|
|
// RoutineService provides management access to BigQuery routines.
|
|
service RoutineService {
|
|
option (google.api.default_host) = "bigquery.googleapis.com";
|
|
option (google.api.oauth_scopes) =
|
|
"https://www.googleapis.com/auth/bigquery,"
|
|
"https://www.googleapis.com/auth/cloud-platform,"
|
|
"https://www.googleapis.com/auth/cloud-platform.read-only";
|
|
|
|
// Gets the specified routine resource by routine ID.
|
|
rpc GetRoutine(GetRoutineRequest) returns (Routine) {
|
|
option (google.api.http) = {
|
|
get: "/bigquery/v2/projects/{project_id=*}/datasets/{dataset_id=*}/routines/{routine_id=*}"
|
|
};
|
|
}
|
|
|
|
// Creates a new routine in the dataset.
|
|
rpc InsertRoutine(InsertRoutineRequest) returns (Routine) {
|
|
option (google.api.http) = {
|
|
post: "/bigquery/v2/projects/{project_id=*}/datasets/{dataset_id=*}/routines"
|
|
body: "routine"
|
|
};
|
|
}
|
|
|
|
// Updates information in an existing routine. The update method replaces the
|
|
// entire Routine resource.
|
|
rpc UpdateRoutine(UpdateRoutineRequest) returns (Routine) {
|
|
option (google.api.http) = {
|
|
put: "/bigquery/v2/projects/{project_id=*}/datasets/{dataset_id=*}/routines/{routine_id=*}"
|
|
body: "routine"
|
|
};
|
|
}
|
|
|
|
// Patches information in an existing routine. The patch method does a partial
|
|
// update to an existing Routine resource.
|
|
rpc PatchRoutine(PatchRoutineRequest) returns (Routine) {}
|
|
|
|
// Deletes the routine specified by routineId from the dataset.
|
|
rpc DeleteRoutine(DeleteRoutineRequest) returns (google.protobuf.Empty) {
|
|
option (google.api.http) = {
|
|
delete: "/bigquery/v2/projects/{project_id=*}/datasets/{dataset_id=*}/routines/{routine_id=*}"
|
|
};
|
|
}
|
|
|
|
// Lists all routines in the specified dataset. Requires the READER dataset
|
|
// role.
|
|
rpc ListRoutines(ListRoutinesRequest) returns (ListRoutinesResponse) {
|
|
option (google.api.http) = {
|
|
get: "/bigquery/v2/projects/{project_id=*}/datasets/{dataset_id=*}/routines"
|
|
};
|
|
}
|
|
}
|
|
|
|
// A user-defined function or a stored procedure.
|
|
message Routine {
|
|
// The fine-grained type of the routine.
|
|
enum RoutineType {
|
|
// Default value.
|
|
ROUTINE_TYPE_UNSPECIFIED = 0;
|
|
|
|
// Non-built-in persistent scalar function.
|
|
SCALAR_FUNCTION = 1;
|
|
|
|
// Stored procedure.
|
|
PROCEDURE = 2;
|
|
|
|
// Non-built-in persistent TVF.
|
|
TABLE_VALUED_FUNCTION = 3;
|
|
|
|
// Non-built-in persistent aggregate function.
|
|
AGGREGATE_FUNCTION = 4;
|
|
}
|
|
|
|
// The language of the routine.
|
|
enum Language {
|
|
// Default value.
|
|
LANGUAGE_UNSPECIFIED = 0;
|
|
|
|
// SQL language.
|
|
SQL = 1;
|
|
|
|
// JavaScript language.
|
|
JAVASCRIPT = 2;
|
|
|
|
// Python language.
|
|
PYTHON = 3;
|
|
|
|
// Java language.
|
|
JAVA = 4;
|
|
|
|
// Scala language.
|
|
SCALA = 5;
|
|
}
|
|
|
|
// Input/output argument of a function or a stored procedure.
|
|
message Argument {
|
|
// Represents the kind of a given argument.
|
|
enum ArgumentKind {
|
|
// Default value.
|
|
ARGUMENT_KIND_UNSPECIFIED = 0;
|
|
|
|
// The argument is a variable with fully specified type, which can be a
|
|
// struct or an array, but not a table.
|
|
FIXED_TYPE = 1;
|
|
|
|
// The argument is any type, including struct or array, but not a table.
|
|
ANY_TYPE = 2;
|
|
}
|
|
|
|
// The input/output mode of the argument.
|
|
enum Mode {
|
|
// Default value.
|
|
MODE_UNSPECIFIED = 0;
|
|
|
|
// The argument is input-only.
|
|
IN = 1;
|
|
|
|
// The argument is output-only.
|
|
OUT = 2;
|
|
|
|
// The argument is both an input and an output.
|
|
INOUT = 3;
|
|
}
|
|
|
|
// Optional. The name of this argument. Can be absent for function return
|
|
// argument.
|
|
string name = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Defaults to FIXED_TYPE.
|
|
ArgumentKind argument_kind = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Specifies whether the argument is input or output.
|
|
// Can be set for procedures only.
|
|
Mode mode = 3;
|
|
|
|
// Set if argument_kind == FIXED_TYPE.
|
|
StandardSqlDataType data_type = 4;
|
|
|
|
// Optional. Whether the argument is an aggregate function parameter.
|
|
// Must be Unset for routine types other than AGGREGATE_FUNCTION.
|
|
// For AGGREGATE_FUNCTION, if set to false, it is equivalent to adding "NOT
|
|
// AGGREGATE" clause in DDL; Otherwise, it is equivalent to omitting "NOT
|
|
// AGGREGATE" clause in DDL.
|
|
google.protobuf.BoolValue is_aggregate = 6
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// JavaScript UDF determinism levels.
|
|
//
|
|
// If all JavaScript UDFs are DETERMINISTIC, the query result is
|
|
// potentially cacheable (see below). If any JavaScript UDF is
|
|
// NOT_DETERMINISTIC, the query result is not cacheable.
|
|
//
|
|
// Even if a JavaScript UDF is deterministic, many other factors can prevent
|
|
// usage of cached query results. Example factors include but not limited to:
|
|
// DDL/DML, non-deterministic SQL function calls, update of referenced
|
|
// tables/views/UDFs or imported JavaScript libraries.
|
|
//
|
|
// SQL UDFs cannot have determinism specified. Their determinism is
|
|
// automatically determined.
|
|
enum DeterminismLevel {
|
|
// The determinism of the UDF is unspecified.
|
|
DETERMINISM_LEVEL_UNSPECIFIED = 0;
|
|
|
|
// The UDF is deterministic, meaning that 2 function calls with the same
|
|
// inputs always produce the same result, even across 2 query runs.
|
|
DETERMINISTIC = 1;
|
|
|
|
// The UDF is not deterministic.
|
|
NOT_DETERMINISTIC = 2;
|
|
}
|
|
|
|
// Security mode.
|
|
enum SecurityMode {
|
|
// The security mode of the routine is unspecified.
|
|
SECURITY_MODE_UNSPECIFIED = 0;
|
|
|
|
// The routine is to be executed with the privileges of the user who
|
|
// defines it.
|
|
DEFINER = 1;
|
|
|
|
// The routine is to be executed with the privileges of the user who
|
|
// invokes it.
|
|
INVOKER = 2;
|
|
}
|
|
|
|
// Options for a remote user-defined function.
|
|
message RemoteFunctionOptions {
|
|
// Endpoint of the user-provided remote service, e.g.
|
|
// ```https://us-east1-my_gcf_project.cloudfunctions.net/remote_add```
|
|
string endpoint = 1;
|
|
|
|
// Fully qualified name of the user-provided connection object which holds
|
|
// the authentication information to send requests to the remote service.
|
|
// Format:
|
|
// ```"projects/{projectId}/locations/{locationId}/connections/{connectionId}"```
|
|
string connection = 2;
|
|
|
|
// User-defined context as a set of key/value pairs, which will be sent as
|
|
// function invocation context together with batched arguments in the
|
|
// requests to the remote service. The total number of bytes of keys and
|
|
// values must be less than 8KB.
|
|
map<string, string> user_defined_context = 3;
|
|
|
|
// Max number of rows in each batch sent to the remote service.
|
|
// If absent or if 0, BigQuery dynamically decides the number of rows in a
|
|
// batch.
|
|
int64 max_batching_rows = 4;
|
|
}
|
|
|
|
// Data governance type values. Only supports `DATA_MASKING`.
|
|
enum DataGovernanceType {
|
|
// The data governance type is unspecified.
|
|
DATA_GOVERNANCE_TYPE_UNSPECIFIED = 0;
|
|
|
|
// The data governance type is data masking.
|
|
DATA_MASKING = 1;
|
|
}
|
|
|
|
// Output only. A hash of this resource.
|
|
string etag = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Required. Reference describing the ID of this routine.
|
|
RoutineReference routine_reference = 2
|
|
[(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. The type of routine.
|
|
RoutineType routine_type = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Output only. The time when this routine was created, in milliseconds since
|
|
// the epoch.
|
|
int64 creation_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Output only. The time when this routine was last modified, in milliseconds
|
|
// since the epoch.
|
|
int64 last_modified_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Optional. Defaults to "SQL" if remote_function_options field is absent, not
|
|
// set otherwise.
|
|
Language language = 6 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional.
|
|
repeated Argument arguments = 7;
|
|
|
|
// Optional if language = "SQL"; required otherwise.
|
|
// Cannot be set if routine_type = "TABLE_VALUED_FUNCTION".
|
|
//
|
|
// If absent, the return type is inferred from definition_body at query time
|
|
// in each query that references this routine. If present, then the evaluated
|
|
// result will be cast to the specified returned type at query time.
|
|
//
|
|
// For example, for the functions created with the following statements:
|
|
//
|
|
// * `CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);`
|
|
//
|
|
// * `CREATE FUNCTION Increment(x FLOAT64) AS (Add(x, 1));`
|
|
//
|
|
// * `CREATE FUNCTION Decrement(x FLOAT64) RETURNS FLOAT64 AS (Add(x, -1));`
|
|
//
|
|
// The return_type is `{type_kind: "FLOAT64"}` for `Add` and `Decrement`, and
|
|
// is absent for `Increment` (inferred as FLOAT64 at query time).
|
|
//
|
|
// Suppose the function `Add` is replaced by
|
|
// `CREATE OR REPLACE FUNCTION Add(x INT64, y INT64) AS (x + y);`
|
|
//
|
|
// Then the inferred return type of `Increment` is automatically changed to
|
|
// INT64 at query time, while the return type of `Decrement` remains FLOAT64.
|
|
StandardSqlDataType return_type = 10;
|
|
|
|
// Optional. Can be set only if routine_type = "TABLE_VALUED_FUNCTION".
|
|
//
|
|
// If absent, the return table type is inferred from definition_body at query
|
|
// time in each query that references this routine. If present, then the
|
|
// columns in the evaluated table result will be cast to match the column
|
|
// types specified in return table type, at query time.
|
|
StandardSqlTableType return_table_type = 13
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. If language = "JAVASCRIPT", this field stores the path of the
|
|
// imported JAVASCRIPT libraries.
|
|
repeated string imported_libraries = 8;
|
|
|
|
// Required. The body of the routine.
|
|
//
|
|
// For functions, this is the expression in the AS clause.
|
|
//
|
|
// If language=SQL, it is the substring inside (but excluding) the
|
|
// parentheses. For example, for the function created with the following
|
|
// statement:
|
|
//
|
|
// `CREATE FUNCTION JoinLines(x string, y string) as (concat(x, "\n", y))`
|
|
//
|
|
// The definition_body is `concat(x, "\n", y)` (\n is not replaced with
|
|
// linebreak).
|
|
//
|
|
// If language=JAVASCRIPT, it is the evaluated string in the AS clause.
|
|
// For example, for the function created with the following statement:
|
|
//
|
|
// `CREATE FUNCTION f() RETURNS STRING LANGUAGE js AS 'return "\n";\n'`
|
|
//
|
|
// The definition_body is
|
|
//
|
|
// `return "\n";\n`
|
|
//
|
|
// Note that both \n are replaced with linebreaks.
|
|
string definition_body = 9;
|
|
|
|
// Optional. The description of the routine, if defined.
|
|
string description = 11 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The determinism level of the JavaScript UDF, if defined.
|
|
DeterminismLevel determinism_level = 12
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The security mode of the routine, if defined. If not defined, the
|
|
// security mode is automatically determined from the routine's configuration.
|
|
SecurityMode security_mode = 18 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Use this option to catch many common errors. Error checking is
|
|
// not exhaustive, and successfully creating a procedure doesn't guarantee
|
|
// that the procedure will successfully execute at runtime. If `strictMode` is
|
|
// set to `TRUE`, the procedure body is further checked for errors such as
|
|
// non-existent tables or columns. The `CREATE PROCEDURE` statement fails if
|
|
// the body fails any of these checks.
|
|
//
|
|
// If `strictMode` is set to `FALSE`, the procedure body is checked only for
|
|
// syntax. For procedures that invoke themselves recursively, specify
|
|
// `strictMode=FALSE` to avoid non-existent procedure errors during
|
|
// validation.
|
|
//
|
|
// Default value is `TRUE`.
|
|
google.protobuf.BoolValue strict_mode = 14
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Remote function specific options.
|
|
RemoteFunctionOptions remote_function_options = 15
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Spark specific options.
|
|
SparkOptions spark_options = 16 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. If set to `DATA_MASKING`, the function is validated and made
|
|
// available as a masking function. For more information, see [Create custom
|
|
// masking
|
|
// routines](https://cloud.google.com/bigquery/docs/user-defined-functions#custom-mask).
|
|
DataGovernanceType data_governance_type = 17
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Options for a user-defined Spark routine.
|
|
message SparkOptions {
|
|
// Fully qualified name of the user-provided Spark connection object. Format:
|
|
// ```"projects/{project_id}/locations/{location_id}/connections/{connection_id}"```
|
|
string connection = 1;
|
|
|
|
// Runtime version. If not specified, the default runtime version is used.
|
|
string runtime_version = 2;
|
|
|
|
// Custom container image for the runtime environment.
|
|
string container_image = 3;
|
|
|
|
// Configuration properties as a set of key/value pairs, which will be passed
|
|
// on to the Spark application. For more information, see
|
|
// [Apache Spark](https://spark.apache.org/docs/latest/index.html) and the
|
|
// [procedure option
|
|
// list](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#procedure_option_list).
|
|
map<string, string> properties = 4;
|
|
|
|
// The main file/jar URI of the Spark application. Exactly one of the
|
|
// definition_body field and the main_file_uri field must be set for Python.
|
|
// Exactly one of main_class and main_file_uri field
|
|
// should be set for Java/Scala language type.
|
|
string main_file_uri = 5;
|
|
|
|
// Python files to be placed on the PYTHONPATH for PySpark application.
|
|
// Supported file types: `.py`, `.egg`, and `.zip`. For more information
|
|
// about Apache Spark, see
|
|
// [Apache Spark](https://spark.apache.org/docs/latest/index.html).
|
|
repeated string py_file_uris = 6;
|
|
|
|
// JARs to include on the driver and executor CLASSPATH.
|
|
// For more information about Apache Spark, see
|
|
// [Apache Spark](https://spark.apache.org/docs/latest/index.html).
|
|
repeated string jar_uris = 7;
|
|
|
|
// Files to be placed in the working directory of each executor.
|
|
// For more information about Apache Spark, see
|
|
// [Apache Spark](https://spark.apache.org/docs/latest/index.html).
|
|
repeated string file_uris = 8;
|
|
|
|
// Archive files to be extracted into the working directory of each executor.
|
|
// For more information about Apache Spark, see
|
|
// [Apache Spark](https://spark.apache.org/docs/latest/index.html).
|
|
repeated string archive_uris = 9;
|
|
|
|
// The fully qualified name of a class in jar_uris, for example,
|
|
// com.example.wordcount. Exactly one of main_class and main_jar_uri field
|
|
// should be set for Java/Scala language type.
|
|
string main_class = 10;
|
|
}
|
|
|
|
// Describes the format for getting information about a routine.
|
|
message GetRoutineRequest {
|
|
// Required. Project ID of the requested routine
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the requested routine
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Routine ID of the requested routine
|
|
string routine_id = 3 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Describes the format for inserting a routine.
|
|
message InsertRoutineRequest {
|
|
// Required. Project ID of the new routine
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the new routine
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. A routine resource to insert
|
|
Routine routine = 3 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Describes the format for updating a routine.
|
|
message UpdateRoutineRequest {
|
|
// Required. Project ID of the routine to update
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the routine to update
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Routine ID of the routine to update
|
|
string routine_id = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. A routine resource which will replace the specified routine
|
|
Routine routine = 4 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Describes the format for the partial update (patch) of a routine.
|
|
message PatchRoutineRequest {
|
|
// Required. Project ID of the routine to update
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the routine to update
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Routine ID of the routine to update
|
|
string routine_id = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. A routine resource which will be used to partially
|
|
// update the specified routine
|
|
Routine routine = 4 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Only the Routine fields in the field mask are updated
|
|
// by the given routine. Repeated routine fields will be fully replaced
|
|
// if contained in the field mask.
|
|
google.protobuf.FieldMask field_mask = 5;
|
|
}
|
|
|
|
// Describes the format for deleting a routine.
|
|
message DeleteRoutineRequest {
|
|
// Required. Project ID of the routine to delete
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the routine to delete
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Routine ID of the routine to delete
|
|
string routine_id = 3 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Describes the format for listing routines.
|
|
message ListRoutinesRequest {
|
|
// Required. Project ID of the routines to list
|
|
string project_id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Dataset ID of the routines to list
|
|
string dataset_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The maximum number of results to return in a single response page.
|
|
// Leverage the page tokens to iterate through the entire collection.
|
|
google.protobuf.UInt32Value max_results = 3;
|
|
|
|
// Page token, returned by a previous call, to request the next page of
|
|
// results
|
|
string page_token = 4;
|
|
|
|
// If set, then only the Routines matching this filter are returned.
|
|
// The supported format is `routineType:{RoutineType}`, where `{RoutineType}`
|
|
// is a RoutineType enum. For example: `routineType:SCALAR_FUNCTION`.
|
|
string filter = 6;
|
|
}
|
|
|
|
// Describes the format of a single result page when listing routines.
|
|
message ListRoutinesResponse {
|
|
// Routines in the requested dataset. Unless read_mask is set in the request,
|
|
// only the following fields are populated:
|
|
// etag, project_id, dataset_id, routine_id, routine_type, creation_time,
|
|
// last_modified_time, language, and remote_function_options.
|
|
repeated Routine routines = 1;
|
|
|
|
// A token to request the next page of results.
|
|
string next_page_token = 2;
|
|
}
|