// Copyright 2020 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.reservation.v1beta1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/bigquery/reservation/v1beta1;reservation"; option java_multiple_files = true; option java_package = "com.google.cloud.bigquery.reservation.v1beta1"; // This API allows users to manage their flat-rate BigQuery reservations. // // A reservation provides computational resource guarantees, in the form of // [slots](https://cloud.google.com/bigquery/docs/slots), to users. A slot is a // unit of computational power in BigQuery, and serves as the basic unit of // parallelism. In a scan of a multi-partitioned table, a single slot operates // on a single partition of the table. A reservation resource exists as a child // resource of the admin project and location, e.g.: // projects/myproject/locations/US/reservations/reservationName. // // A capacity commitment is a way to purchase compute capacity for BigQuery jobs // (in the form of slots) with some committed period of usage. A capacity // commitment resource exists as a child resource of the admin project and // location, e.g.: // projects/myproject/locations/US/capacityCommitments/id. service ReservationService { option (google.api.default_host) = "bigqueryreservation.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/bigquery," "https://www.googleapis.com/auth/cloud-platform"; // Creates a new reservation resource. rpc CreateReservation(CreateReservationRequest) returns (Reservation) { option (google.api.http) = { post: "/v1beta1/{parent=projects/*/locations/*}/reservations" body: "reservation" }; option (google.api.method_signature) = "parent,reservation,reservation_id"; } // Lists all the reservations for the project in the specified location. rpc ListReservations(ListReservationsRequest) returns (ListReservationsResponse) { option (google.api.http) = { get: "/v1beta1/{parent=projects/*/locations/*}/reservations" }; option (google.api.method_signature) = "parent"; } // Returns information about the reservation. rpc GetReservation(GetReservationRequest) returns (Reservation) { option (google.api.http) = { get: "/v1beta1/{name=projects/*/locations/*/reservations/*}" }; option (google.api.method_signature) = "name"; } // Deletes a reservation. // Returns `google.rpc.Code.FAILED_PRECONDITION` when reservation has // assignments. rpc DeleteReservation(DeleteReservationRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1beta1/{name=projects/*/locations/*/reservations/*}" }; option (google.api.method_signature) = "name"; } // Updates an existing reservation resource. rpc UpdateReservation(UpdateReservationRequest) returns (Reservation) { option (google.api.http) = { patch: "/v1beta1/{reservation.name=projects/*/locations/*/reservations/*}" body: "reservation" }; option (google.api.method_signature) = "reservation,update_mask"; } // Lists all the capacity commitments for the admin project. rpc ListCapacityCommitments(ListCapacityCommitmentsRequest) returns (ListCapacityCommitmentsResponse) { option (google.api.http) = { get: "/v1beta1/{parent=projects/*/locations/*}/capacityCommitments" }; option (google.api.method_signature) = "parent"; } // Returns information about the capacity commitment. rpc GetCapacityCommitment(GetCapacityCommitmentRequest) returns (CapacityCommitment) { option (google.api.http) = { get: "/v1beta1/{name=projects/*/locations/*/capacityCommitments/*}" }; option (google.api.method_signature) = "name"; } // Deletes a capacity commitment. Attempting to delete capacity commitment // before its commitment_end_time will fail with the error code // `google.rpc.Code.FAILED_PRECONDITION`. rpc DeleteCapacityCommitment(DeleteCapacityCommitmentRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1beta1/{name=projects/*/locations/*/capacityCommitments/*}" }; option (google.api.method_signature) = "name"; } // Updates an existing capacity commitment. // // Only renewal_plan field can be updated. rpc UpdateCapacityCommitment(UpdateCapacityCommitmentRequest) returns (CapacityCommitment) { option (google.api.http) = { patch: "/v1beta1/{capacity_commitment.name=projects/*/locations/*/capacityCommitments/*}" body: "capacity_commitment" }; option (google.api.method_signature) = "capacity_commitment,update_mask"; } // Splits capacity commitment to two commitments of the same plan and // commitment_end_time. A common use case to do that is to perform a downgrade // e.g., in order to downgrade from 10000 slots to 8000, one might split 10000 // capacity commitment to 2000 and 8000, change the plan of the first one to // flex and then delete it. rpc SplitCapacityCommitment(SplitCapacityCommitmentRequest) returns (SplitCapacityCommitmentResponse) { option (google.api.http) = { post: "/v1beta1/{name=projects/*/locations/*/capacityCommitments/*}:split" body: "*" }; option (google.api.method_signature) = "name,slot_count"; } // Merges capacity commitments of the same plan into one. Resulting capacity // commitment has the longer commitment_end_time out of the two. Attempting to // merge capacity commitments of different plan will fail with the error code // `google.rpc.Code.FAILED_PRECONDITION`. rpc MergeCapacityCommitments(MergeCapacityCommitmentsRequest) returns (CapacityCommitment) { option (google.api.http) = { post: "/v1beta1/{parent=projects/*/locations/*}/capacityCommitments:merge" body: "*" }; option (google.api.method_signature) = "parent,capacity_commitment_ids"; } // Returns `google.rpc.Code.PERMISSION_DENIED` if user does not have // 'bigquery.admin' permissions on the project using the reservation // and the project that owns this reservation. // Returns `google.rpc.Code.INVALID_ARGUMENT` when location of the assignment // does not match location of the reservation. rpc CreateAssignment(CreateAssignmentRequest) returns (Assignment) { option (google.api.http) = { post: "/v1beta1/{parent=projects/*/locations/*/reservations/*}/assignments" body: "assignment" }; option (google.api.method_signature) = "parent,assignment"; } // Lists assignments. // Only explicitly created assignments will be returned. E.g: // organizationA contains project1 and project2. Reservation res1 exists. // CreateAssignment was invoked previously and following assignments were // created explicitly: // // // Then this API will just return the above two assignments for reservation // res1, and no expansion/merge will happen. Wildcard "-" can be used for // reservations in the request. In that case all assignments belongs to the // specified project and location will be listed. Note // "-" cannot be used for projects nor locations. rpc ListAssignments(ListAssignmentsRequest) returns (ListAssignmentsResponse) { option (google.api.http) = { get: "/v1beta1/{parent=projects/*/locations/*/reservations/*}/assignments" }; option (google.api.method_signature) = "parent"; } // Deletes a assignment. No expansion will happen. // E.g: // organizationA contains project1 and project2. Reservation res1 exists. // CreateAssignment was invoked previously and following assignments were // created explicitly: // // // Then deletion of won't affect . After // deletion of , queries from project1 will still use // res1, while queries from project2 will use on-demand mode. rpc DeleteAssignment(DeleteAssignmentRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1beta1/{name=projects/*/locations/*/reservations/*/assignments/*}" }; option (google.api.method_signature) = "name"; } // Looks up assignments for a specified resource for a particular region. // If the request is about a project: // 1) Assignments created on the project will be returned if they exist. // 2) Otherwise assignments created on the closest ancestor will be // returned. 3) Assignments for different JobTypes will all be returned. // Same logic applies if the request is about a folder. // If the request is about an organization, then assignments created on the // organization will be returned (organization doesn't have ancestors). // Comparing to ListAssignments, there are some behavior // differences: // 1) permission on the assignee will be verified in this API. // 2) Hierarchy lookup (project->folder->organization) happens in this API. // 3) Parent here is projects/*/locations/*, instead of // projects/*/locations/*reservations/*. // Note "-" cannot be used for projects // nor locations. rpc SearchAssignments(SearchAssignmentsRequest) returns (SearchAssignmentsResponse) { option (google.api.http) = { get: "/v1beta1/{parent=projects/*/locations/*}:searchAssignments" }; option (google.api.method_signature) = "parent,query"; } // Moves a assignment under a new reservation. Customers can do this by // deleting the existing assignment followed by creating another assignment // under the new reservation, but this method provides a transactional way to // do so, to make sure the assignee always has an associated reservation. // Without the method customers might see some queries run on-demand which // might be unexpected. rpc MoveAssignment(MoveAssignmentRequest) returns (Assignment) { option (google.api.http) = { post: "/v1beta1/{name=projects/*/locations/*/reservations/*/assignments/*}:move" body: "*" }; option (google.api.method_signature) = "name,destination_id"; } // Retrieves a BI reservation. rpc GetBiReservation(GetBiReservationRequest) returns (BiReservation) { option (google.api.http) = { get: "/v1beta1/{name=projects/*/locations/*/biReservation}" }; option (google.api.method_signature) = "name"; } // Updates a BI reservation. // Only fields specified in the field_mask are updated. // Singleton BI reservation always exists with default size 0. // In order to reserve BI capacity it needs to be updated to an amount // greater than 0. In order to release BI capacity reservation size // must be set to 0. rpc UpdateBiReservation(UpdateBiReservationRequest) returns (BiReservation) { option (google.api.http) = { patch: "/v1beta1/{bi_reservation.name=projects/*/locations/*/biReservation}" body: "bi_reservation" }; option (google.api.method_signature) = "bi_reservation,update_mask"; } } // A reservation is a mechanism used to guarantee slots to users. message Reservation { option (google.api.resource) = { type: "bigqueryreservation.googleapis.com/Reservation" pattern: "projects/{project}/locations/{location}/reservations/{reservation}" }; // The resource name of the reservation, e.g., // "projects/*/locations/*/reservations/team1-prod". string name = 1; // Minimum slots available to this reservation. A slot is a unit of // computational power in BigQuery, and serves as the unit of parallelism. // Queries using this reservation might use more slots during runtime if // ignore_idle_slots is set to false. // If the new reservation's slot capacity exceed the parent's slot capacity or // if total slot capacity of the new reservation and its siblings exceeds the // parent's slot capacity, the request will fail with // `google.rpc.Code.RESOURCE_EXHAUSTED`. int64 slot_capacity = 2; // If false, any query using this reservation will use idle slots from other // reservations within the same admin project. If true, a query using this // reservation will execute with the slot capacity specified above at most. bool ignore_idle_slots = 4; } // Capacity commitment is a way to purchase compute capacity for BigQuery jobs // (in the form of slots) with some committed period of usage. Monthly and // annual commitments renew by default. Only flex commitments can be removed. In // order to remove monthly or annual commitments, their plan needs to be changed // to flex first. // // A capacity commitment resource exists as a child resource of the admin // project. message CapacityCommitment { option (google.api.resource) = { type: "bigqueryreservation.googleapis.com/CapacityCommitment" pattern: "projects/{project}/locations/{location}/capacityCommitments/{capacity_commitment}" }; // Commitment plan defines the current committed period. Capacity commitment // cannot be deleted during it's committed period. enum CommitmentPlan { // Invalid plan value. Requests with this value will be rejected with // error code `google.rpc.Code.INVALID_ARGUMENT`. COMMITMENT_PLAN_UNSPECIFIED = 0; // Flex commitments have committed period of 1 minute after becoming ACTIVE. // After that, they are not in a committed period anymore and can be removed // any time. FLEX = 3; // Monthly commitments have a committed period of 30 days after becoming // ACTIVE. MONTHLY = 2; // Annual commitments have a committed period of 365 days after becoming // ACTIVE. ANNUAL = 4; } // Capacity commitment can either become ACTIVE right away or transition // from PENDING to ACTIVE or FAILED. enum State { // Invalid state value. STATE_UNSPECIFIED = 0; // Capacity commitment is pending provisioning. Pending capacity commitment // does not contribute to the parent's slot_capacity. PENDING = 1; // Once slots are provisioned, capacity commitment becomes active. // slot_count is added to the parent's slot_capacity. ACTIVE = 2; // Capacity commitment is failed to be activated by the backend. FAILED = 3; } // Output only. The resource name of the capacity commitment, e.g., // projects/myproject/locations/US/capacityCommitments/123 string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Number of slots in this commitment. int64 slot_count = 2; // Capacity commitment commitment plan. CommitmentPlan plan = 3; // Output only. State of the commitment. State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The end of the current commitment period. It is applicable // only for ACTIVE capacity commitments. google.protobuf.Timestamp commitment_end_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. For FAILED commitment plan, provides the reason of failure. google.rpc.Status failure_status = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // The plan this capacity commitment is converted to after commitment_end_time // passes. Once the plan is changed, committed period is extended according to // commitment plan. Only applicable for MONTHLY and ANNUAL commitments. CommitmentPlan renewal_plan = 8; } // The request for // [ReservationService.CreateReservation][google.cloud.bigquery.reservation.v1beta1.ReservationService.CreateReservation]. message CreateReservationRequest { // Required. Project, location. E.g., // projects/myproject/locations/US string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/Reservation" } ]; // The reservation ID. This field must only contain lower case alphanumeric // characters or dash. Max length is 64 characters. string reservation_id = 2; // Content of the new reservation to create. Reservation reservation = 3; } // The request for // [ReservationService.ListReservations][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListReservations]. message ListReservationsRequest { // Required. The parent resource name containing project and location, e.g.: // "projects/myproject/locations/US" string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/Reservation" } ]; // The maximum number of items to return. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; // Can be used to filter out reservations based on names, capacity, etc, e.g.: // filter="reservation.slot_capacity > 200" // filter="reservation.name = \"*dev/*\"" // Advanced filtering syntax can be // [here](https://cloud.google.com/logging/docs/view/advanced-filters). string filter = 4; } // The response for // [ReservationService.ListReservations][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListReservations]. message ListReservationsResponse { // List of reservations visible to the user. repeated Reservation reservations = 1; // Token to retrieve the next page of results, or empty if there are no // more results in the list. string next_page_token = 2; } // The request for // [ReservationService.GetReservation][google.cloud.bigquery.reservation.v1beta1.ReservationService.GetReservation]. message GetReservationRequest { // Required. Resource name of the reservation to retrieve. E.g., // projects/myproject/locations/US/reservations/team1-prod string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/Reservation" } ]; } // The request for // [ReservationService.DeleteReservation][google.cloud.bigquery.reservation.v1beta1.ReservationService.DeleteReservation]. message DeleteReservationRequest { // Required. Resource name of the reservation to retrieve. E.g., // projects/myproject/locations/US/reservations/team1-prod string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/Reservation" } ]; } // The request for // [ReservationService.UpdateReservation][google.cloud.bigquery.reservation.v1beta1.ReservationService.UpdateReservation]. message UpdateReservationRequest { // Content of the reservation to update. Reservation reservation = 1; // Standard field mask for the set of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request for // [ReservationService.ListCapacityCommitments][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListCapacityCommitments]. message ListCapacityCommitmentsRequest { // Required. Resource name of the parent reservation. E.g., // projects/myproject/locations/US string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/CapacityCommitment" } ]; // The maximum number of items to return. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; } // The response for // [ReservationService.ListCapacityCommitments][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListCapacityCommitments]. message ListCapacityCommitmentsResponse { // List of capacity commitments visible to the user. repeated CapacityCommitment capacity_commitments = 1; // Token to retrieve the next page of results, or empty if there are no // more results in the list. string next_page_token = 2; } // The request for // [ReservationService.GetCapacityCommitment][google.cloud.bigquery.reservation.v1beta1.ReservationService.GetCapacityCommitment]. message GetCapacityCommitmentRequest { // Required. Resource name of the capacity commitment to retrieve. E.g., // projects/myproject/locations/US/capacityCommitments/123 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/CapacityCommitment" } ]; } // The request for // [ReservationService.DeleteCapacityCommitment][google.cloud.bigquery.reservation.v1beta1.ReservationService.DeleteCapacityCommitment]. message DeleteCapacityCommitmentRequest { // Required. Resource name of the capacity commitment to delete. E.g., // projects/myproject/locations/US/capacityCommitments/123 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/CapacityCommitment" } ]; } // The request for // [ReservationService.UpdateCapacityCommitment][google.cloud.bigquery.reservation.v1beta1.ReservationService.UpdateCapacityCommitment]. message UpdateCapacityCommitmentRequest { // Content of the capacity commitment to update. CapacityCommitment capacity_commitment = 1; // Standard field mask for the set of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request for // [ReservationService.SplitCapacityCommitment][google.cloud.bigquery.reservation.v1beta1.ReservationService.SplitCapacityCommitment]. message SplitCapacityCommitmentRequest { // Required. The resource name e.g.,: // projects/myproject/locations/US/capacityCommitments/123 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/CapacityCommitment" } ]; // Number of slots in the capacity commitment after the split. int64 slot_count = 2; } // The response for // [ReservationService.SplitCapacityCommitment][google.cloud.bigquery.reservation.v1beta1.ReservationService.SplitCapacityCommitment]. message SplitCapacityCommitmentResponse { // First capacity commitment, result of a split. CapacityCommitment first = 1; // Second capacity commitment, result of a split. CapacityCommitment second = 2; } // The request for // [ReservationService.MergeCapacityCommitments][google.cloud.bigquery.reservation.v1beta1.ReservationService.MergeCapacityCommitments]. message MergeCapacityCommitmentsRequest { // Parent resource that identifies admin project and location e.g., // projects/myproject/locations/us string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/CapacityCommitment" } ]; // Ids of capacity commitments to merge. // These capacity commitments must exist under admin project and location // specified in the parent. repeated string capacity_commitment_ids = 2; } // A Assignment allows a project to submit jobs // of a certain type using slots from the specified reservation. message Assignment { option (google.api.resource) = { type: "bigqueryreservation.googleapis.com/Assignment" pattern: "projects/{project}/locations/{location}/reservations/{reservation}/assignments/{assignment}" }; // Types of job, which could be specified when using the reservation. enum JobType { // Invalid type. Requests with this value will be rejected with // error code `google.rpc.Code.INVALID_ARGUMENT`. JOB_TYPE_UNSPECIFIED = 0; // Pipeline (load/export) jobs from the project will use the reservation. PIPELINE = 1; // Query jobs from the project will use the reservation. QUERY = 2; } // Assignment will remain in PENDING state if no active capacity commitment is // present. It will become ACTIVE when some capacity commitment becomes // active. enum State { // Invalid state value. STATE_UNSPECIFIED = 0; // Queries from assignee will be executed as on-demand, if related // assignment is pending. PENDING = 1; // Assignment is ready. ACTIVE = 2; } // Output only. Name of the resource. E.g.: // projects/myproject/locations/US/reservations/team1-prod/assignments/123. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // The resource which will use the reservation. E.g. // projects/myproject, folders/123, organizations/456. string assignee = 4 [(google.api.resource_reference) = { type: "*" }]; // Which type of jobs will use the reservation. JobType job_type = 3; // Output only. State of the assignment. State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The request for // [ReservationService.CreateAssignment][google.cloud.bigquery.reservation.v1beta1.ReservationService.CreateAssignment]. // Note: "bigquery.reservationAssignments.create" permission is required on the // related assignee. message CreateAssignmentRequest { // Required. The parent resource name of the assignment // E.g.: projects/myproject/locations/US/reservations/team1-prod string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/Assignment" } ]; // Assignment resource to create. Assignment assignment = 2; } // The request for // [ReservationService.ListAssignments][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListAssignments]. message ListAssignmentsRequest { // Required. The parent resource name e.g.: // projects/myproject/locations/US/reservations/team1-prod // Or: // projects/myproject/locations/US/reservations/- string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/Assignment" } ]; // The maximum number of items to return. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; } // The response for // [ReservationService.ListAssignments][google.cloud.bigquery.reservation.v1beta1.ReservationService.ListAssignments]. message ListAssignmentsResponse { // List of assignments visible to the user. repeated Assignment assignments = 1; // Token to retrieve the next page of results, or empty if there are no // more results in the list. string next_page_token = 2; } // The request for // [ReservationService.DeleteAssignment][google.cloud.bigquery.reservation.v1beta1.ReservationService.DeleteAssignment]. // Note: "bigquery.reservationAssignments.delete" permission is required on the // related assignee. message DeleteAssignmentRequest { // Required. Name of the resource, e.g.: // projects/myproject/locations/US/reservations/team1-prod/assignments/123 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/Assignment" } ]; } // The request for // [ReservationService.SearchAssignments][google.cloud.bigquery.reservation.v1beta1.ReservationService.SearchAssignments]. // Note: "bigquery.reservationAssignments.search" permission is required on the // related assignee. message SearchAssignmentsRequest { // Required. The resource name of the admin project(containing project and // location), e.g.: // "projects/myproject/locations/US". string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Please specify resource name as assignee in the query. // e.g., "assignee=projects/myproject" // "assignee=folders/123" // "assignee=organizations/456" string query = 2; // The maximum number of items to return. int32 page_size = 3; // The next_page_token value returned from a previous List request, if any. string page_token = 4; } // The response for // [ReservationService.SearchAssignments][google.cloud.bigquery.reservation.v1beta1.ReservationService.SearchAssignments]. message SearchAssignmentsResponse { // List of assignments visible to the user. repeated Assignment assignments = 1; // Token to retrieve the next page of results, or empty if there are no // more results in the list. string next_page_token = 2; } // The request for // [ReservationService.MoveAssignment][google.cloud.bigquery.reservation.v1beta1.ReservationService.MoveAssignment]. // Note: "bigquery.reservationAssignments.create" permission is required on the // destination_id. Note: "bigquery.reservationAssignments.create" and // "bigquery.reservationAssignments.delete" permission is required on the // related assignee. message MoveAssignmentRequest { // Required. The resource name of the assignment, // e.g.: // projects/myproject/locations/US/reservations/team1-prod/assignments/123 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/Assignment" } ]; // The new reservation ID, e.g.: // projects/myotherproject/locations/US/reservations/team2-prod string destination_id = 3 [(google.api.resource_reference) = { child_type: "bigqueryreservation.googleapis.com/Assignment" }]; } // Represents a BI Reservation. message BiReservation { option (google.api.resource) = { type: "bigqueryreservation.googleapis.com/BiReservation" pattern: "projects/{project}/locations/{location}/bireservation" }; // The resource name of the singleton BI reservation. // Reservation names have the form // `projects/{project_id}/locations/{location_id}/bireservation`. string name = 1; // Output only. The last update timestamp of a reservation. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Size of a reservation, in bytes. int64 size = 4; } // A request to get a singleton BI reservation. message GetBiReservationRequest { // Required. Name of the requested reservation, for example: // `projects/{project_id}/locations/{location_id}/bireservation` string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "bigqueryreservation.googleapis.com/BiReservation" } ]; } // A request to update a BI reservation. message UpdateBiReservationRequest { // A reservation to update. BiReservation bi_reservation = 1; // A list of fields to be updated in this request. google.protobuf.FieldMask update_mask = 2; }