service.proto 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. // Copyright 2021 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.secretmanager.v1;
  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/secretmanager/v1/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.V1";
  27. option go_package = "google.golang.org/genproto/googleapis/cloud/secretmanager/v1;secretmanager";
  28. option java_multiple_files = true;
  29. option java_outer_classname = "ServiceProto";
  30. option java_package = "com.google.cloud.secretmanager.v1";
  31. option objc_class_prefix = "GSM";
  32. option php_namespace = "Google\\Cloud\\SecretManager\\V1";
  33. option ruby_package = "Google::Cloud::SecretManager::V1";
  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.secretmanager.v1.Secret]
  40. // * [SecretVersion][google.cloud.secretmanager.v1.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.secretmanager.v1.Secret].
  45. rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) {
  46. option (google.api.http) = {
  47. get: "/v1/{parent=projects/*}/secrets"
  48. };
  49. option (google.api.method_signature) = "parent";
  50. }
  51. // Creates a new [Secret][google.cloud.secretmanager.v1.Secret] containing no [SecretVersions][google.cloud.secretmanager.v1.SecretVersion].
  52. rpc CreateSecret(CreateSecretRequest) returns (Secret) {
  53. option (google.api.http) = {
  54. post: "/v1/{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.secretmanager.v1.SecretVersion] containing secret data and attaches
  60. // it to an existing [Secret][google.cloud.secretmanager.v1.Secret].
  61. rpc AddSecretVersion(AddSecretVersionRequest) returns (SecretVersion) {
  62. option (google.api.http) = {
  63. post: "/v1/{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.secretmanager.v1.Secret].
  69. rpc GetSecret(GetSecretRequest) returns (Secret) {
  70. option (google.api.http) = {
  71. get: "/v1/{name=projects/*/secrets/*}"
  72. };
  73. option (google.api.method_signature) = "name";
  74. }
  75. // Updates metadata of an existing [Secret][google.cloud.secretmanager.v1.Secret].
  76. rpc UpdateSecret(UpdateSecretRequest) returns (Secret) {
  77. option (google.api.http) = {
  78. patch: "/v1/{secret.name=projects/*/secrets/*}"
  79. body: "secret"
  80. };
  81. option (google.api.method_signature) = "secret,update_mask";
  82. }
  83. // Deletes a [Secret][google.cloud.secretmanager.v1.Secret].
  84. rpc DeleteSecret(DeleteSecretRequest) returns (google.protobuf.Empty) {
  85. option (google.api.http) = {
  86. delete: "/v1/{name=projects/*/secrets/*}"
  87. };
  88. option (google.api.method_signature) = "name";
  89. }
  90. // Lists [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]. This call does not return secret
  91. // data.
  92. rpc ListSecretVersions(ListSecretVersionsRequest) returns (ListSecretVersionsResponse) {
  93. option (google.api.http) = {
  94. get: "/v1/{parent=projects/*/secrets/*}/versions"
  95. };
  96. option (google.api.method_signature) = "parent";
  97. }
  98. // Gets metadata for a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  99. //
  100. // `projects/*/secrets/*/versions/latest` is an alias to the most recently
  101. // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  102. rpc GetSecretVersion(GetSecretVersionRequest) returns (SecretVersion) {
  103. option (google.api.http) = {
  104. get: "/v1/{name=projects/*/secrets/*/versions/*}"
  105. };
  106. option (google.api.method_signature) = "name";
  107. }
  108. // Accesses a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. This call returns the secret data.
  109. //
  110. // `projects/*/secrets/*/versions/latest` is an alias to the most recently
  111. // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  112. rpc AccessSecretVersion(AccessSecretVersionRequest) returns (AccessSecretVersionResponse) {
  113. option (google.api.http) = {
  114. get: "/v1/{name=projects/*/secrets/*/versions/*}:access"
  115. };
  116. option (google.api.method_signature) = "name";
  117. }
  118. // Disables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  119. //
  120. // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to
  121. // [DISABLED][google.cloud.secretmanager.v1.SecretVersion.State.DISABLED].
  122. rpc DisableSecretVersion(DisableSecretVersionRequest) returns (SecretVersion) {
  123. option (google.api.http) = {
  124. post: "/v1/{name=projects/*/secrets/*/versions/*}:disable"
  125. body: "*"
  126. };
  127. option (google.api.method_signature) = "name";
  128. }
  129. // Enables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  130. //
  131. // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to
  132. // [ENABLED][google.cloud.secretmanager.v1.SecretVersion.State.ENABLED].
  133. rpc EnableSecretVersion(EnableSecretVersionRequest) returns (SecretVersion) {
  134. option (google.api.http) = {
  135. post: "/v1/{name=projects/*/secrets/*/versions/*}:enable"
  136. body: "*"
  137. };
  138. option (google.api.method_signature) = "name";
  139. }
  140. // Destroys a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  141. //
  142. // Sets the [state][google.cloud.secretmanager.v1.SecretVersion.state] of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to
  143. // [DESTROYED][google.cloud.secretmanager.v1.SecretVersion.State.DESTROYED] and irrevocably destroys the
  144. // secret data.
  145. rpc DestroySecretVersion(DestroySecretVersionRequest) returns (SecretVersion) {
  146. option (google.api.http) = {
  147. post: "/v1/{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.secretmanager.v1.SecretVersion] are enforced according
  156. // to the policy set on the associated [Secret][google.cloud.secretmanager.v1.Secret].
  157. rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
  158. option (google.api.http) = {
  159. post: "/v1/{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: "/v1/{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: "/v1/{resource=projects/*/secrets/*}:testIamPermissions"
  180. body: "*"
  181. };
  182. }
  183. }
  184. // Request message for [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets].
  185. message ListSecretsRequest {
  186. // Required. The resource name of the project associated with the
  187. // [Secrets][google.cloud.secretmanager.v1.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.secretmanager.v1.ListSecretsResponse.next_page_token].
  200. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  201. // Optional. Filter string, adhering to the rules in
  202. // [List-operation
  203. // filtering](https://cloud.google.com/secret-manager/docs/filtering). List
  204. // only secrets matching the filter. If filter is empty, all secrets are
  205. // listed.
  206. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  207. }
  208. // Response message for [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets].
  209. message ListSecretsResponse {
  210. // The list of [Secrets][google.cloud.secretmanager.v1.Secret] sorted in reverse by create_time (newest
  211. // first).
  212. repeated Secret secrets = 1;
  213. // A token to retrieve the next page of results. Pass this value in
  214. // [ListSecretsRequest.page_token][google.cloud.secretmanager.v1.ListSecretsRequest.page_token] to retrieve the next page.
  215. string next_page_token = 2;
  216. // The total number of [Secrets][google.cloud.secretmanager.v1.Secret].
  217. int32 total_size = 3;
  218. }
  219. // Request message for [SecretManagerService.CreateSecret][google.cloud.secretmanager.v1.SecretManagerService.CreateSecret].
  220. message CreateSecretRequest {
  221. // Required. The resource name of the project to associate with the
  222. // [Secret][google.cloud.secretmanager.v1.Secret], in the format `projects/*`.
  223. string parent = 1 [
  224. (google.api.field_behavior) = REQUIRED,
  225. (google.api.resource_reference) = {
  226. type: "cloudresourcemanager.googleapis.com/Project"
  227. }
  228. ];
  229. // Required. This must be unique within the project.
  230. //
  231. // A secret ID is a string with a maximum length of 255 characters and can
  232. // contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and
  233. // underscore (`_`) characters.
  234. string secret_id = 2 [(google.api.field_behavior) = REQUIRED];
  235. // Required. A [Secret][google.cloud.secretmanager.v1.Secret] with initial field values.
  236. Secret secret = 3 [(google.api.field_behavior) = REQUIRED];
  237. }
  238. // Request message for [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion].
  239. message AddSecretVersionRequest {
  240. // Required. The resource name of the [Secret][google.cloud.secretmanager.v1.Secret] to associate with the
  241. // [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format `projects/*/secrets/*`.
  242. string parent = 1 [
  243. (google.api.field_behavior) = REQUIRED,
  244. (google.api.resource_reference) = {
  245. type: "secretmanager.googleapis.com/Secret"
  246. }
  247. ];
  248. // Required. The secret payload of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  249. SecretPayload payload = 2 [(google.api.field_behavior) = REQUIRED];
  250. }
  251. // Request message for [SecretManagerService.GetSecret][google.cloud.secretmanager.v1.SecretManagerService.GetSecret].
  252. message GetSecretRequest {
  253. // Required. The resource name of the [Secret][google.cloud.secretmanager.v1.Secret], in the format `projects/*/secrets/*`.
  254. string name = 1 [
  255. (google.api.field_behavior) = REQUIRED,
  256. (google.api.resource_reference) = {
  257. type: "secretmanager.googleapis.com/Secret"
  258. }
  259. ];
  260. }
  261. // Request message for [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions].
  262. message ListSecretVersionsRequest {
  263. // Required. The resource name of the [Secret][google.cloud.secretmanager.v1.Secret] associated with the
  264. // [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] to list, in the format
  265. // `projects/*/secrets/*`.
  266. string parent = 1 [
  267. (google.api.field_behavior) = REQUIRED,
  268. (google.api.resource_reference) = {
  269. type: "secretmanager.googleapis.com/Secret"
  270. }
  271. ];
  272. // Optional. The maximum number of results to be returned in a single page. If
  273. // set to 0, the server decides the number of results to return. If the
  274. // number is greater than 25000, it is capped at 25000.
  275. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  276. // Optional. Pagination token, returned earlier via
  277. // ListSecretVersionsResponse.next_page_token][].
  278. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  279. // Optional. Filter string, adhering to the rules in
  280. // [List-operation
  281. // filtering](https://cloud.google.com/secret-manager/docs/filtering). List
  282. // only secret versions matching the filter. If filter is empty, all secret
  283. // versions are listed.
  284. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  285. }
  286. // Response message for [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions].
  287. message ListSecretVersionsResponse {
  288. // The list of [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] sorted in reverse by
  289. // create_time (newest first).
  290. repeated SecretVersion versions = 1;
  291. // A token to retrieve the next page of results. Pass this value in
  292. // [ListSecretVersionsRequest.page_token][google.cloud.secretmanager.v1.ListSecretVersionsRequest.page_token] to retrieve the next page.
  293. string next_page_token = 2;
  294. // The total number of [SecretVersions][google.cloud.secretmanager.v1.SecretVersion].
  295. int32 total_size = 3;
  296. }
  297. // Request message for [SecretManagerService.GetSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.GetSecretVersion].
  298. message GetSecretVersionRequest {
  299. // Required. The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
  300. // `projects/*/secrets/*/versions/*`.
  301. //
  302. // `projects/*/secrets/*/versions/latest` is an alias to the most recently
  303. // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  304. string name = 1 [
  305. (google.api.field_behavior) = REQUIRED,
  306. (google.api.resource_reference) = {
  307. type: "secretmanager.googleapis.com/SecretVersion"
  308. }
  309. ];
  310. }
  311. // Request message for [SecretManagerService.UpdateSecret][google.cloud.secretmanager.v1.SecretManagerService.UpdateSecret].
  312. message UpdateSecretRequest {
  313. // Required. [Secret][google.cloud.secretmanager.v1.Secret] with updated field values.
  314. Secret secret = 1 [(google.api.field_behavior) = REQUIRED];
  315. // Required. Specifies the fields to be updated.
  316. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  317. }
  318. // Request message for [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion].
  319. message AccessSecretVersionRequest {
  320. // Required. The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
  321. // `projects/*/secrets/*/versions/*`.
  322. //
  323. // `projects/*/secrets/*/versions/latest` is an alias to the most recently
  324. // created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
  325. string name = 1 [
  326. (google.api.field_behavior) = REQUIRED,
  327. (google.api.resource_reference) = {
  328. type: "secretmanager.googleapis.com/SecretVersion"
  329. }
  330. ];
  331. }
  332. // Response message for [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion].
  333. message AccessSecretVersionResponse {
  334. // The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
  335. // `projects/*/secrets/*/versions/*`.
  336. string name = 1 [(google.api.resource_reference) = {
  337. type: "secretmanager.googleapis.com/SecretVersion"
  338. }];
  339. // Secret payload
  340. SecretPayload payload = 2;
  341. }
  342. // Request message for [SecretManagerService.DeleteSecret][google.cloud.secretmanager.v1.SecretManagerService.DeleteSecret].
  343. message DeleteSecretRequest {
  344. // Required. The resource name of the [Secret][google.cloud.secretmanager.v1.Secret] to delete in the format
  345. // `projects/*/secrets/*`.
  346. string name = 1 [
  347. (google.api.field_behavior) = REQUIRED,
  348. (google.api.resource_reference) = {
  349. type: "secretmanager.googleapis.com/Secret"
  350. }
  351. ];
  352. // Optional. Etag of the [Secret][google.cloud.secretmanager.v1.Secret]. The request succeeds if it matches
  353. // the etag of the currently stored secret object. If the etag is omitted,
  354. // the request succeeds.
  355. string etag = 2 [(google.api.field_behavior) = OPTIONAL];
  356. }
  357. // Request message for [SecretManagerService.DisableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DisableSecretVersion].
  358. message DisableSecretVersionRequest {
  359. // Required. The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to disable in the format
  360. // `projects/*/secrets/*/versions/*`.
  361. string name = 1 [
  362. (google.api.field_behavior) = REQUIRED,
  363. (google.api.resource_reference) = {
  364. type: "secretmanager.googleapis.com/SecretVersion"
  365. }
  366. ];
  367. // Optional. Etag of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request succeeds if it matches
  368. // the etag of the currently stored secret version object. If the etag is
  369. // omitted, the request succeeds.
  370. string etag = 2 [(google.api.field_behavior) = OPTIONAL];
  371. }
  372. // Request message for [SecretManagerService.EnableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.EnableSecretVersion].
  373. message EnableSecretVersionRequest {
  374. // Required. The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to enable in the format
  375. // `projects/*/secrets/*/versions/*`.
  376. string name = 1 [
  377. (google.api.field_behavior) = REQUIRED,
  378. (google.api.resource_reference) = {
  379. type: "secretmanager.googleapis.com/SecretVersion"
  380. }
  381. ];
  382. // Optional. Etag of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request succeeds if it matches
  383. // the etag of the currently stored secret version object. If the etag is
  384. // omitted, the request succeeds.
  385. string etag = 2 [(google.api.field_behavior) = OPTIONAL];
  386. }
  387. // Request message for [SecretManagerService.DestroySecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DestroySecretVersion].
  388. message DestroySecretVersionRequest {
  389. // Required. The resource name of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to destroy in the format
  390. // `projects/*/secrets/*/versions/*`.
  391. string name = 1 [
  392. (google.api.field_behavior) = REQUIRED,
  393. (google.api.resource_reference) = {
  394. type: "secretmanager.googleapis.com/SecretVersion"
  395. }
  396. ];
  397. // Optional. Etag of the [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request succeeds if it matches
  398. // the etag of the currently stored secret version object. If the etag is
  399. // omitted, the request succeeds.
  400. string etag = 2 [(google.api.field_behavior) = OPTIONAL];
  401. }