service.proto 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. // Copyright 2020 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. syntax = "proto3";
  15. package google.cloud.secrets.v1beta1;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/cloud/secrets/v1beta1/resources.proto";
  21. import "google/iam/v1/iam_policy.proto";
  22. import "google/iam/v1/policy.proto";
  23. import "google/protobuf/empty.proto";
  24. import "google/protobuf/field_mask.proto";
  25. option cc_enable_arenas = true;
  26. option csharp_namespace = "Google.Cloud.SecretManager.V1Beta1";
  27. option go_package = "google.golang.org/genproto/googleapis/cloud/secretmanager/v1beta1;secretmanager";
  28. option java_multiple_files = true;
  29. option java_outer_classname = "ServiceProto";
  30. option java_package = "com.google.cloud.secretmanager.v1beta1";
  31. option objc_class_prefix = "GSM";
  32. option php_namespace = "Google\\Cloud\\SecretManager\\V1beta1";
  33. option ruby_package = "Google::Cloud::SecretManager::V1beta1";
  34. // Secret Manager Service
  35. //
  36. // Manages secrets and operations using those secrets. Implements a REST
  37. // model with the following objects:
  38. //
  39. // * [Secret][google.cloud.secrets.v1beta1.Secret]
  40. // * [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion]
  41. service SecretManagerService {
  42. option (google.api.default_host) = "secretmanager.googleapis.com";
  43. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  44. // Lists [Secrets][google.cloud.secrets.v1beta1.Secret].
  45. rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) {
  46. option (google.api.http) = {
  47. get: "/v1beta1/{parent=projects/*}/secrets"
  48. };
  49. option (google.api.method_signature) = "parent";
  50. }
  51. // Creates a new [Secret][google.cloud.secrets.v1beta1.Secret] containing no [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion].
  52. rpc CreateSecret(CreateSecretRequest) returns (Secret) {
  53. option (google.api.http) = {
  54. post: "/v1beta1/{parent=projects/*}/secrets"
  55. body: "secret"
  56. };
  57. option (google.api.method_signature) = "parent,secret_id,secret";
  58. }
  59. // Creates a new [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] containing secret data and attaches
  60. // it to an existing [Secret][google.cloud.secrets.v1beta1.Secret].
  61. rpc AddSecretVersion(AddSecretVersionRequest) returns (SecretVersion) {
  62. option (google.api.http) = {
  63. post: "/v1beta1/{parent=projects/*/secrets/*}:addVersion"
  64. body: "*"
  65. };
  66. option (google.api.method_signature) = "parent,payload";
  67. }
  68. // Gets metadata for a given [Secret][google.cloud.secrets.v1beta1.Secret].
  69. rpc GetSecret(GetSecretRequest) returns (Secret) {
  70. option (google.api.http) = {
  71. get: "/v1beta1/{name=projects/*/secrets/*}"
  72. };
  73. option (google.api.method_signature) = "name";
  74. }
  75. // Updates metadata of an existing [Secret][google.cloud.secrets.v1beta1.Secret].
  76. rpc UpdateSecret(UpdateSecretRequest) returns (Secret) {
  77. option (google.api.http) = {
  78. patch: "/v1beta1/{secret.name=projects/*/secrets/*}"
  79. body: "secret"
  80. };
  81. option (google.api.method_signature) = "secret,update_mask";
  82. }
  83. // Deletes a [Secret][google.cloud.secrets.v1beta1.Secret].
  84. rpc DeleteSecret(DeleteSecretRequest) returns (google.protobuf.Empty) {
  85. option (google.api.http) = {
  86. delete: "/v1beta1/{name=projects/*/secrets/*}"
  87. };
  88. option (google.api.method_signature) = "name";
  89. }
  90. // Lists [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion]. This call does not return secret
  91. // data.
  92. rpc ListSecretVersions(ListSecretVersionsRequest) returns (ListSecretVersionsResponse) {
  93. option (google.api.http) = {
  94. get: "/v1beta1/{parent=projects/*/secrets/*}/versions"
  95. };
  96. option (google.api.method_signature) = "parent";
  97. }
  98. // Gets metadata for a [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  99. //
  100. // `projects/*/secrets/*/versions/latest` is an alias to the `latest`
  101. // [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  102. rpc GetSecretVersion(GetSecretVersionRequest) returns (SecretVersion) {
  103. option (google.api.http) = {
  104. get: "/v1beta1/{name=projects/*/secrets/*/versions/*}"
  105. };
  106. option (google.api.method_signature) = "name";
  107. }
  108. // Accesses a [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion]. This call returns the secret data.
  109. //
  110. // `projects/*/secrets/*/versions/latest` is an alias to the `latest`
  111. // [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  112. rpc AccessSecretVersion(AccessSecretVersionRequest) returns (AccessSecretVersionResponse) {
  113. option (google.api.http) = {
  114. get: "/v1beta1/{name=projects/*/secrets/*/versions/*}:access"
  115. };
  116. option (google.api.method_signature) = "name";
  117. }
  118. // Disables a [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  119. //
  120. // Sets the [state][google.cloud.secrets.v1beta1.SecretVersion.state] of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to
  121. // [DISABLED][google.cloud.secrets.v1beta1.SecretVersion.State.DISABLED].
  122. rpc DisableSecretVersion(DisableSecretVersionRequest) returns (SecretVersion) {
  123. option (google.api.http) = {
  124. post: "/v1beta1/{name=projects/*/secrets/*/versions/*}:disable"
  125. body: "*"
  126. };
  127. option (google.api.method_signature) = "name";
  128. }
  129. // Enables a [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  130. //
  131. // Sets the [state][google.cloud.secrets.v1beta1.SecretVersion.state] of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to
  132. // [ENABLED][google.cloud.secrets.v1beta1.SecretVersion.State.ENABLED].
  133. rpc EnableSecretVersion(EnableSecretVersionRequest) returns (SecretVersion) {
  134. option (google.api.http) = {
  135. post: "/v1beta1/{name=projects/*/secrets/*/versions/*}:enable"
  136. body: "*"
  137. };
  138. option (google.api.method_signature) = "name";
  139. }
  140. // Destroys a [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  141. //
  142. // Sets the [state][google.cloud.secrets.v1beta1.SecretVersion.state] of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to
  143. // [DESTROYED][google.cloud.secrets.v1beta1.SecretVersion.State.DESTROYED] and irrevocably destroys the
  144. // secret data.
  145. rpc DestroySecretVersion(DestroySecretVersionRequest) returns (SecretVersion) {
  146. option (google.api.http) = {
  147. post: "/v1beta1/{name=projects/*/secrets/*/versions/*}:destroy"
  148. body: "*"
  149. };
  150. option (google.api.method_signature) = "name";
  151. }
  152. // Sets the access control policy on the specified secret. Replaces any
  153. // existing policy.
  154. //
  155. // Permissions on [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion] are enforced according
  156. // to the policy set on the associated [Secret][google.cloud.secrets.v1beta1.Secret].
  157. rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
  158. option (google.api.http) = {
  159. post: "/v1beta1/{resource=projects/*/secrets/*}:setIamPolicy"
  160. body: "*"
  161. };
  162. }
  163. // Gets the access control policy for a secret.
  164. // Returns empty policy if the secret exists and does not have a policy set.
  165. rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) {
  166. option (google.api.http) = {
  167. get: "/v1beta1/{resource=projects/*/secrets/*}:getIamPolicy"
  168. };
  169. }
  170. // Returns permissions that a caller has for the specified secret.
  171. // If the secret does not exist, this call returns an empty set of
  172. // permissions, not a NOT_FOUND error.
  173. //
  174. // Note: This operation is designed to be used for building permission-aware
  175. // UIs and command-line tools, not for authorization checking. This operation
  176. // may "fail open" without warning.
  177. rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) {
  178. option (google.api.http) = {
  179. post: "/v1beta1/{resource=projects/*/secrets/*}:testIamPermissions"
  180. body: "*"
  181. };
  182. }
  183. }
  184. // Request message for [SecretManagerService.ListSecrets][google.cloud.secrets.v1beta1.SecretManagerService.ListSecrets].
  185. message ListSecretsRequest {
  186. // Required. The resource name of the project associated with the
  187. // [Secrets][google.cloud.secrets.v1beta1.Secret], in the format `projects/*`.
  188. string parent = 1 [
  189. (google.api.field_behavior) = REQUIRED,
  190. (google.api.resource_reference) = {
  191. type: "cloudresourcemanager.googleapis.com/Project"
  192. }
  193. ];
  194. // Optional. The maximum number of results to be returned in a single page. If
  195. // set to 0, the server decides the number of results to return. If the
  196. // number is greater than 25000, it is capped at 25000.
  197. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  198. // Optional. Pagination token, returned earlier via
  199. // [ListSecretsResponse.next_page_token][google.cloud.secrets.v1beta1.ListSecretsResponse.next_page_token].
  200. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  201. }
  202. // Response message for [SecretManagerService.ListSecrets][google.cloud.secrets.v1beta1.SecretManagerService.ListSecrets].
  203. message ListSecretsResponse {
  204. // The list of [Secrets][google.cloud.secrets.v1beta1.Secret] sorted in reverse by create_time (newest
  205. // first).
  206. repeated Secret secrets = 1;
  207. // A token to retrieve the next page of results. Pass this value in
  208. // [ListSecretsRequest.page_token][google.cloud.secrets.v1beta1.ListSecretsRequest.page_token] to retrieve the next page.
  209. string next_page_token = 2;
  210. // The total number of [Secrets][google.cloud.secrets.v1beta1.Secret].
  211. int32 total_size = 3;
  212. }
  213. // Request message for [SecretManagerService.CreateSecret][google.cloud.secrets.v1beta1.SecretManagerService.CreateSecret].
  214. message CreateSecretRequest {
  215. // Required. The resource name of the project to associate with the
  216. // [Secret][google.cloud.secrets.v1beta1.Secret], in the format `projects/*`.
  217. string parent = 1 [
  218. (google.api.field_behavior) = REQUIRED,
  219. (google.api.resource_reference) = {
  220. type: "cloudresourcemanager.googleapis.com/Project"
  221. }
  222. ];
  223. // Required. This must be unique within the project.
  224. //
  225. // A secret ID is a string with a maximum length of 255 characters and can
  226. // contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and
  227. // underscore (`_`) characters.
  228. string secret_id = 2 [(google.api.field_behavior) = REQUIRED];
  229. // Required. A [Secret][google.cloud.secrets.v1beta1.Secret] with initial field values.
  230. Secret secret = 3 [(google.api.field_behavior) = REQUIRED];
  231. }
  232. // Request message for [SecretManagerService.AddSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.AddSecretVersion].
  233. message AddSecretVersionRequest {
  234. // Required. The resource name of the [Secret][google.cloud.secrets.v1beta1.Secret] to associate with the
  235. // [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] in the format `projects/*/secrets/*`.
  236. string parent = 1 [
  237. (google.api.field_behavior) = REQUIRED,
  238. (google.api.resource_reference) = {
  239. type: "secretmanager.googleapis.com/Secret"
  240. }
  241. ];
  242. // Required. The secret payload of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  243. SecretPayload payload = 2 [(google.api.field_behavior) = REQUIRED];
  244. }
  245. // Request message for [SecretManagerService.GetSecret][google.cloud.secrets.v1beta1.SecretManagerService.GetSecret].
  246. message GetSecretRequest {
  247. // Required. The resource name of the [Secret][google.cloud.secrets.v1beta1.Secret], in the format `projects/*/secrets/*`.
  248. string name = 1 [
  249. (google.api.field_behavior) = REQUIRED,
  250. (google.api.resource_reference) = {
  251. type: "secretmanager.googleapis.com/Secret"
  252. }
  253. ];
  254. }
  255. // Request message for [SecretManagerService.ListSecretVersions][google.cloud.secrets.v1beta1.SecretManagerService.ListSecretVersions].
  256. message ListSecretVersionsRequest {
  257. // Required. The resource name of the [Secret][google.cloud.secrets.v1beta1.Secret] associated with the
  258. // [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion] to list, in the format
  259. // `projects/*/secrets/*`.
  260. string parent = 1 [
  261. (google.api.field_behavior) = REQUIRED,
  262. (google.api.resource_reference) = {
  263. type: "secretmanager.googleapis.com/Secret"
  264. }
  265. ];
  266. // Optional. The maximum number of results to be returned in a single page. If
  267. // set to 0, the server decides the number of results to return. If the
  268. // number is greater than 25000, it is capped at 25000.
  269. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  270. // Optional. Pagination token, returned earlier via
  271. // ListSecretVersionsResponse.next_page_token][].
  272. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  273. }
  274. // Response message for [SecretManagerService.ListSecretVersions][google.cloud.secrets.v1beta1.SecretManagerService.ListSecretVersions].
  275. message ListSecretVersionsResponse {
  276. // The list of [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion] sorted in reverse by
  277. // create_time (newest first).
  278. repeated SecretVersion versions = 1;
  279. // A token to retrieve the next page of results. Pass this value in
  280. // [ListSecretVersionsRequest.page_token][google.cloud.secrets.v1beta1.ListSecretVersionsRequest.page_token] to retrieve the next page.
  281. string next_page_token = 2;
  282. // The total number of [SecretVersions][google.cloud.secrets.v1beta1.SecretVersion].
  283. int32 total_size = 3;
  284. }
  285. // Request message for [SecretManagerService.GetSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.GetSecretVersion].
  286. message GetSecretVersionRequest {
  287. // Required. The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] in the format
  288. // `projects/*/secrets/*/versions/*`.
  289. // `projects/*/secrets/*/versions/latest` is an alias to the `latest`
  290. // [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion].
  291. string name = 1 [
  292. (google.api.field_behavior) = REQUIRED,
  293. (google.api.resource_reference) = {
  294. type: "secretmanager.googleapis.com/SecretVersion"
  295. }
  296. ];
  297. }
  298. // Request message for [SecretManagerService.UpdateSecret][google.cloud.secrets.v1beta1.SecretManagerService.UpdateSecret].
  299. message UpdateSecretRequest {
  300. // Required. [Secret][google.cloud.secrets.v1beta1.Secret] with updated field values.
  301. Secret secret = 1 [(google.api.field_behavior) = REQUIRED];
  302. // Required. Specifies the fields to be updated.
  303. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  304. }
  305. // Request message for [SecretManagerService.AccessSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.AccessSecretVersion].
  306. message AccessSecretVersionRequest {
  307. // Required. The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] in the format
  308. // `projects/*/secrets/*/versions/*`.
  309. string name = 1 [
  310. (google.api.field_behavior) = REQUIRED,
  311. (google.api.resource_reference) = {
  312. type: "secretmanager.googleapis.com/SecretVersion"
  313. }
  314. ];
  315. }
  316. // Response message for [SecretManagerService.AccessSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.AccessSecretVersion].
  317. message AccessSecretVersionResponse {
  318. // The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] in the format
  319. // `projects/*/secrets/*/versions/*`.
  320. string name = 1 [(google.api.resource_reference) = {
  321. type: "secretmanager.googleapis.com/SecretVersion"
  322. }];
  323. // Secret payload
  324. SecretPayload payload = 2;
  325. }
  326. // Request message for [SecretManagerService.DeleteSecret][google.cloud.secrets.v1beta1.SecretManagerService.DeleteSecret].
  327. message DeleteSecretRequest {
  328. // Required. The resource name of the [Secret][google.cloud.secrets.v1beta1.Secret] to delete in the format
  329. // `projects/*/secrets/*`.
  330. string name = 1 [
  331. (google.api.field_behavior) = REQUIRED,
  332. (google.api.resource_reference) = {
  333. type: "secretmanager.googleapis.com/Secret"
  334. }
  335. ];
  336. }
  337. // Request message for [SecretManagerService.DisableSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.DisableSecretVersion].
  338. message DisableSecretVersionRequest {
  339. // Required. The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to disable in the format
  340. // `projects/*/secrets/*/versions/*`.
  341. string name = 1 [
  342. (google.api.field_behavior) = REQUIRED,
  343. (google.api.resource_reference) = {
  344. type: "secretmanager.googleapis.com/SecretVersion"
  345. }
  346. ];
  347. }
  348. // Request message for [SecretManagerService.EnableSecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.EnableSecretVersion].
  349. message EnableSecretVersionRequest {
  350. // Required. The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to enable in the format
  351. // `projects/*/secrets/*/versions/*`.
  352. string name = 1 [
  353. (google.api.field_behavior) = REQUIRED,
  354. (google.api.resource_reference) = {
  355. type: "secretmanager.googleapis.com/SecretVersion"
  356. }
  357. ];
  358. }
  359. // Request message for [SecretManagerService.DestroySecretVersion][google.cloud.secrets.v1beta1.SecretManagerService.DestroySecretVersion].
  360. message DestroySecretVersionRequest {
  361. // Required. The resource name of the [SecretVersion][google.cloud.secrets.v1beta1.SecretVersion] to destroy in the format
  362. // `projects/*/secrets/*/versions/*`.
  363. string name = 1 [
  364. (google.api.field_behavior) = REQUIRED,
  365. (google.api.resource_reference) = {
  366. type: "secretmanager.googleapis.com/SecretVersion"
  367. }
  368. ];
  369. }