1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.ai.generativelanguage.v1beta; 18 19import "google/ai/generativelanguage/v1beta/permission.proto"; 20import "google/api/annotations.proto"; 21import "google/api/client.proto"; 22import "google/api/field_behavior.proto"; 23import "google/api/resource.proto"; 24import "google/protobuf/empty.proto"; 25import "google/protobuf/field_mask.proto"; 26 27option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1beta/generativelanguagepb;generativelanguagepb"; 28option java_multiple_files = true; 29option java_outer_classname = "PermissionServiceProto"; 30option java_package = "com.google.ai.generativelanguage.v1beta"; 31 32// Provides methods for managing permissions to PaLM API resources. 33service PermissionService { 34 option (google.api.default_host) = "generativelanguage.googleapis.com"; 35 36 // Create a permission to a specific resource. 37 rpc CreatePermission(CreatePermissionRequest) returns (Permission) { 38 option (google.api.http) = { 39 post: "/v1beta/{parent=tunedModels/*}/permissions" 40 body: "permission" 41 additional_bindings { 42 post: "/v1beta/{parent=corpora/*}/permissions" 43 body: "permission" 44 } 45 }; 46 option (google.api.method_signature) = "parent,permission"; 47 } 48 49 // Gets information about a specific Permission. 50 rpc GetPermission(GetPermissionRequest) returns (Permission) { 51 option (google.api.http) = { 52 get: "/v1beta/{name=tunedModels/*/permissions/*}" 53 additional_bindings { get: "/v1beta/{name=corpora/*/permissions/*}" } 54 }; 55 option (google.api.method_signature) = "name"; 56 } 57 58 // Lists permissions for the specific resource. 59 rpc ListPermissions(ListPermissionsRequest) 60 returns (ListPermissionsResponse) { 61 option (google.api.http) = { 62 get: "/v1beta/{parent=tunedModels/*}/permissions" 63 additional_bindings { get: "/v1beta/{parent=corpora/*}/permissions" } 64 }; 65 option (google.api.method_signature) = "parent"; 66 } 67 68 // Updates the permission. 69 rpc UpdatePermission(UpdatePermissionRequest) returns (Permission) { 70 option (google.api.http) = { 71 patch: "/v1beta/{permission.name=tunedModels/*/permissions/*}" 72 body: "permission" 73 additional_bindings { 74 patch: "/v1beta/{permission.name=corpora/*/permissions/*}" 75 body: "permission" 76 } 77 }; 78 option (google.api.method_signature) = "permission,update_mask"; 79 } 80 81 // Deletes the permission. 82 rpc DeletePermission(DeletePermissionRequest) 83 returns (google.protobuf.Empty) { 84 option (google.api.http) = { 85 delete: "/v1beta/{name=tunedModels/*/permissions/*}" 86 additional_bindings { delete: "/v1beta/{name=corpora/*/permissions/*}" } 87 }; 88 option (google.api.method_signature) = "name"; 89 } 90 91 // Transfers ownership of the tuned model. 92 // This is the only way to change ownership of the tuned model. 93 // The current owner will be downgraded to writer role. 94 rpc TransferOwnership(TransferOwnershipRequest) 95 returns (TransferOwnershipResponse) { 96 option (google.api.http) = { 97 post: "/v1beta/{name=tunedModels/*}:transferOwnership" 98 body: "*" 99 }; 100 } 101} 102 103// Request to create a `Permission`. 104message CreatePermissionRequest { 105 // Required. The parent resource of the `Permission`. 106 // Formats: 107 // `tunedModels/{tuned_model}` 108 // `corpora/{corpus}` 109 string parent = 1 [ 110 (google.api.field_behavior) = REQUIRED, 111 (google.api.resource_reference) = { 112 child_type: "generativelanguage.googleapis.com/Permission" 113 } 114 ]; 115 116 // Required. The permission to create. 117 Permission permission = 2 [(google.api.field_behavior) = REQUIRED]; 118} 119 120// Request for getting information about a specific `Permission`. 121message GetPermissionRequest { 122 // Required. The resource name of the permission. 123 // 124 // Formats: 125 // `tunedModels/{tuned_model}/permissions/{permission}` 126 // `corpora/{corpus}/permissions/{permission}` 127 string name = 1 [ 128 (google.api.field_behavior) = REQUIRED, 129 (google.api.resource_reference) = { 130 type: "generativelanguage.googleapis.com/Permission" 131 } 132 ]; 133} 134 135// Request for listing permissions. 136message ListPermissionsRequest { 137 // Required. The parent resource of the permissions. 138 // Formats: 139 // `tunedModels/{tuned_model}` 140 // `corpora/{corpus}` 141 string parent = 1 [ 142 (google.api.field_behavior) = REQUIRED, 143 (google.api.resource_reference) = { type: "*" } 144 ]; 145 146 // Optional. The maximum number of `Permission`s to return (per page). 147 // The service may return fewer permissions. 148 // 149 // If unspecified, at most 10 permissions will be returned. 150 // This method returns at most 1000 permissions per page, even if you pass 151 // larger page_size. 152 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 153 154 // Optional. A page token, received from a previous `ListPermissions` call. 155 // 156 // Provide the `page_token` returned by one request as an argument to the 157 // next request to retrieve the next page. 158 // 159 // When paginating, all other parameters provided to `ListPermissions` 160 // must match the call that provided the page token. 161 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 162} 163 164// Response from `ListPermissions` containing a paginated list of 165// permissions. 166message ListPermissionsResponse { 167 // Returned permissions. 168 repeated Permission permissions = 1; 169 170 // A token, which can be sent as `page_token` to retrieve the next page. 171 // 172 // If this field is omitted, there are no more pages. 173 string next_page_token = 2; 174} 175 176// Request to update the `Permission`. 177message UpdatePermissionRequest { 178 // Required. The permission to update. 179 // 180 // The permission's `name` field is used to identify the permission to update. 181 Permission permission = 1 [(google.api.field_behavior) = REQUIRED]; 182 183 // Required. The list of fields to update. Accepted ones: 184 // - role (`Permission.role` field) 185 google.protobuf.FieldMask update_mask = 2 186 [(google.api.field_behavior) = REQUIRED]; 187} 188 189// Request to delete the `Permission`. 190message DeletePermissionRequest { 191 // Required. The resource name of the permission. 192 // Formats: 193 // `tunedModels/{tuned_model}/permissions/{permission}` 194 // `corpora/{corpus}/permissions/{permission}` 195 string name = 1 [ 196 (google.api.field_behavior) = REQUIRED, 197 (google.api.resource_reference) = { 198 type: "generativelanguage.googleapis.com/Permission" 199 } 200 ]; 201} 202 203// Request to transfer the ownership of the tuned model. 204message TransferOwnershipRequest { 205 // Required. The resource name of the tuned model to transfer ownership. 206 // 207 // Format: `tunedModels/my-model-id` 208 string name = 1 [ 209 (google.api.field_behavior) = REQUIRED, 210 (google.api.resource_reference) = { 211 child_type: "generativelanguage.googleapis.com/Permission" 212 } 213 ]; 214 215 // Required. The email address of the user to whom the tuned model is being 216 // transferred to. 217 string email_address = 2 [(google.api.field_behavior) = REQUIRED]; 218} 219 220// Response from `TransferOwnership`. 221message TransferOwnershipResponse {} 222