clouddms.proto 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  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.clouddms.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/clouddms/v1/clouddms_resources.proto";
  21. import "google/longrunning/operations.proto";
  22. import "google/protobuf/field_mask.proto";
  23. import "google/protobuf/timestamp.proto";
  24. option csharp_namespace = "Google.Cloud.CloudDms.V1";
  25. option go_package = "google.golang.org/genproto/googleapis/cloud/clouddms/v1;clouddms";
  26. option java_multiple_files = true;
  27. option java_outer_classname = "ClouddmsProto";
  28. option java_package = "com.google.cloud.clouddms.v1";
  29. option php_namespace = "Google\\Cloud\\CloudDms\\V1";
  30. option ruby_package = "Google::Cloud::CloudDMS::V1";
  31. // Database Migration service
  32. service DataMigrationService {
  33. option (google.api.default_host) = "datamigration.googleapis.com";
  34. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  35. // Lists migration jobs in a given project and location.
  36. rpc ListMigrationJobs(ListMigrationJobsRequest) returns (ListMigrationJobsResponse) {
  37. option (google.api.http) = {
  38. get: "/v1/{parent=projects/*/locations/*}/migrationJobs"
  39. };
  40. option (google.api.method_signature) = "parent";
  41. }
  42. // Gets details of a single migration job.
  43. rpc GetMigrationJob(GetMigrationJobRequest) returns (MigrationJob) {
  44. option (google.api.http) = {
  45. get: "/v1/{name=projects/*/locations/*/migrationJobs/*}"
  46. };
  47. option (google.api.method_signature) = "name";
  48. }
  49. // Creates a new migration job in a given project and location.
  50. rpc CreateMigrationJob(CreateMigrationJobRequest) returns (google.longrunning.Operation) {
  51. option (google.api.http) = {
  52. post: "/v1/{parent=projects/*/locations/*}/migrationJobs"
  53. body: "migration_job"
  54. };
  55. option (google.api.method_signature) = "parent,migration_job,migration_job_id";
  56. option (google.longrunning.operation_info) = {
  57. response_type: "MigrationJob"
  58. metadata_type: "OperationMetadata"
  59. };
  60. }
  61. // Updates the parameters of a single migration job.
  62. rpc UpdateMigrationJob(UpdateMigrationJobRequest) returns (google.longrunning.Operation) {
  63. option (google.api.http) = {
  64. patch: "/v1/{migration_job.name=projects/*/locations/*/migrationJobs/*}"
  65. body: "migration_job"
  66. };
  67. option (google.api.method_signature) = "migration_job,update_mask";
  68. option (google.longrunning.operation_info) = {
  69. response_type: "MigrationJob"
  70. metadata_type: "OperationMetadata"
  71. };
  72. }
  73. // Deletes a single migration job.
  74. rpc DeleteMigrationJob(DeleteMigrationJobRequest) returns (google.longrunning.Operation) {
  75. option (google.api.http) = {
  76. delete: "/v1/{name=projects/*/locations/*/migrationJobs/*}"
  77. };
  78. option (google.api.method_signature) = "name";
  79. option (google.longrunning.operation_info) = {
  80. response_type: "google.protobuf.Empty"
  81. metadata_type: "OperationMetadata"
  82. };
  83. }
  84. // Start an already created migration job.
  85. rpc StartMigrationJob(StartMigrationJobRequest) returns (google.longrunning.Operation) {
  86. option (google.api.http) = {
  87. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:start"
  88. body: "*"
  89. };
  90. option (google.longrunning.operation_info) = {
  91. response_type: "MigrationJob"
  92. metadata_type: "OperationMetadata"
  93. };
  94. }
  95. // Stops a running migration job.
  96. rpc StopMigrationJob(StopMigrationJobRequest) returns (google.longrunning.Operation) {
  97. option (google.api.http) = {
  98. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:stop"
  99. body: "*"
  100. };
  101. option (google.longrunning.operation_info) = {
  102. response_type: "MigrationJob"
  103. metadata_type: "OperationMetadata"
  104. };
  105. }
  106. // Resume a migration job that is currently stopped and is resumable (was
  107. // stopped during CDC phase).
  108. rpc ResumeMigrationJob(ResumeMigrationJobRequest) returns (google.longrunning.Operation) {
  109. option (google.api.http) = {
  110. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:resume"
  111. body: "*"
  112. };
  113. option (google.longrunning.operation_info) = {
  114. response_type: "MigrationJob"
  115. metadata_type: "OperationMetadata"
  116. };
  117. }
  118. // Promote a migration job, stopping replication to the destination and
  119. // promoting the destination to be a standalone database.
  120. rpc PromoteMigrationJob(PromoteMigrationJobRequest) returns (google.longrunning.Operation) {
  121. option (google.api.http) = {
  122. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:promote"
  123. body: "*"
  124. };
  125. option (google.longrunning.operation_info) = {
  126. response_type: "MigrationJob"
  127. metadata_type: "OperationMetadata"
  128. };
  129. }
  130. // Verify a migration job, making sure the destination can reach the source
  131. // and that all configuration and prerequisites are met.
  132. rpc VerifyMigrationJob(VerifyMigrationJobRequest) returns (google.longrunning.Operation) {
  133. option (google.api.http) = {
  134. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:verify"
  135. body: "*"
  136. };
  137. option (google.longrunning.operation_info) = {
  138. response_type: "MigrationJob"
  139. metadata_type: "OperationMetadata"
  140. };
  141. }
  142. // Restart a stopped or failed migration job, resetting the destination
  143. // instance to its original state and starting the migration process from
  144. // scratch.
  145. rpc RestartMigrationJob(RestartMigrationJobRequest) returns (google.longrunning.Operation) {
  146. option (google.api.http) = {
  147. post: "/v1/{name=projects/*/locations/*/migrationJobs/*}:restart"
  148. body: "*"
  149. };
  150. option (google.longrunning.operation_info) = {
  151. response_type: "MigrationJob"
  152. metadata_type: "OperationMetadata"
  153. };
  154. }
  155. // Generate a SSH configuration script to configure the reverse SSH
  156. // connectivity.
  157. rpc GenerateSshScript(GenerateSshScriptRequest) returns (SshScript) {
  158. option (google.api.http) = {
  159. post: "/v1/{migration_job=projects/*/locations/*/migrationJobs/*}:generateSshScript"
  160. body: "*"
  161. };
  162. }
  163. // Retrieve a list of all connection profiles in a given project and location.
  164. rpc ListConnectionProfiles(ListConnectionProfilesRequest) returns (ListConnectionProfilesResponse) {
  165. option (google.api.http) = {
  166. get: "/v1/{parent=projects/*/locations/*}/connectionProfiles"
  167. };
  168. option (google.api.method_signature) = "parent";
  169. }
  170. // Gets details of a single connection profile.
  171. rpc GetConnectionProfile(GetConnectionProfileRequest) returns (ConnectionProfile) {
  172. option (google.api.http) = {
  173. get: "/v1/{name=projects/*/locations/*/connectionProfiles/*}"
  174. };
  175. option (google.api.method_signature) = "name";
  176. }
  177. // Creates a new connection profile in a given project and location.
  178. rpc CreateConnectionProfile(CreateConnectionProfileRequest) returns (google.longrunning.Operation) {
  179. option (google.api.http) = {
  180. post: "/v1/{parent=projects/*/locations/*}/connectionProfiles"
  181. body: "connection_profile"
  182. };
  183. option (google.api.method_signature) = "parent,connection_profile,connection_profile_id";
  184. option (google.longrunning.operation_info) = {
  185. response_type: "ConnectionProfile"
  186. metadata_type: "OperationMetadata"
  187. };
  188. }
  189. // Update the configuration of a single connection profile.
  190. rpc UpdateConnectionProfile(UpdateConnectionProfileRequest) returns (google.longrunning.Operation) {
  191. option (google.api.http) = {
  192. patch: "/v1/{connection_profile.name=projects/*/locations/*/connectionProfiles/*}"
  193. body: "connection_profile"
  194. };
  195. option (google.api.method_signature) = "connection_profile,update_mask";
  196. option (google.longrunning.operation_info) = {
  197. response_type: "ConnectionProfile"
  198. metadata_type: "OperationMetadata"
  199. };
  200. }
  201. // Deletes a single Database Migration Service connection profile.
  202. // A connection profile can only be deleted if it is not in use by any
  203. // active migration jobs.
  204. rpc DeleteConnectionProfile(DeleteConnectionProfileRequest) returns (google.longrunning.Operation) {
  205. option (google.api.http) = {
  206. delete: "/v1/{name=projects/*/locations/*/connectionProfiles/*}"
  207. };
  208. option (google.api.method_signature) = "name";
  209. option (google.longrunning.operation_info) = {
  210. response_type: "google.protobuf.Empty"
  211. metadata_type: "OperationMetadata"
  212. };
  213. }
  214. }
  215. // Retrieve a list of all migration jobs in a given project and location.
  216. message ListMigrationJobsRequest {
  217. // Required. The parent, which owns this collection of migrationJobs.
  218. string parent = 1 [
  219. (google.api.field_behavior) = REQUIRED,
  220. (google.api.resource_reference) = {
  221. child_type: "datamigration.googleapis.com/MigrationJob"
  222. }
  223. ];
  224. // The maximum number of migration jobs to return. The service may return
  225. // fewer than this value. If unspecified, at most 50 migration jobs will be
  226. // returned. The maximum value is 1000; values above 1000 will be coerced to
  227. // 1000.
  228. int32 page_size = 2;
  229. // The nextPageToken value received in the previous call to
  230. // migrationJobs.list, used in the subsequent request to retrieve the next
  231. // page of results. On first call this should be left blank. When paginating,
  232. // all other parameters provided to migrationJobs.list must match the call
  233. // that provided the page token.
  234. string page_token = 3;
  235. // A filter expression that filters migration jobs listed in the response.
  236. // The expression must specify the field name, a comparison operator, and the
  237. // value that you want to use for filtering. The value must be a string,
  238. // a number, or a boolean. The comparison operator must be
  239. // either =, !=, >, or <. For example, list migration jobs created this year
  240. // by specifying **createTime %gt; 2020-01-01T00:00:00.000000000Z.**
  241. // You can also filter nested fields. For example, you could specify
  242. // **reverseSshConnectivity.vmIp = "1.2.3.4"** to select all migration
  243. // jobs connecting through the specific SSH tunnel bastion.
  244. string filter = 4;
  245. // Sort the results based on the migration job name.
  246. // Valid values are: "name", "name asc", and "name desc".
  247. string order_by = 5;
  248. }
  249. // Response message for 'ListMigrationJobs' request.
  250. message ListMigrationJobsResponse {
  251. // The list of migration jobs objects.
  252. repeated MigrationJob migration_jobs = 1;
  253. // A token, which can be sent as `page_token` to retrieve the next page.
  254. // If this field is omitted, there are no subsequent pages.
  255. string next_page_token = 2;
  256. // Locations that could not be reached.
  257. repeated string unreachable = 3;
  258. }
  259. // Request message for 'GetMigrationJob' request.
  260. message GetMigrationJobRequest {
  261. // Required. Name of the migration job resource to get.
  262. string name = 1 [
  263. (google.api.field_behavior) = REQUIRED,
  264. (google.api.resource_reference) = {
  265. type: "datamigration.googleapis.com/MigrationJob"
  266. }
  267. ];
  268. }
  269. // Request message to create a new Database Migration Service migration job
  270. // in the specified project and region.
  271. message CreateMigrationJobRequest {
  272. // Required. The parent, which owns this collection of migration jobs.
  273. string parent = 1 [
  274. (google.api.field_behavior) = REQUIRED,
  275. (google.api.resource_reference) = {
  276. child_type: "datamigration.googleapis.com/MigrationJob"
  277. }
  278. ];
  279. // Required. The ID of the instance to create.
  280. string migration_job_id = 2 [(google.api.field_behavior) = REQUIRED];
  281. // Required. Represents a [migration
  282. // job](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.migrationJobs)
  283. // object.
  284. MigrationJob migration_job = 3 [(google.api.field_behavior) = REQUIRED];
  285. // A unique id used to identify the request. If the server receives two
  286. // requests with the same id, then the second request will be ignored.
  287. //
  288. // It is recommended to always set this value to a UUID.
  289. //
  290. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  291. // (_), and hyphens (-). The maximum length is 40 characters.
  292. string request_id = 4;
  293. }
  294. // Request message for 'UpdateMigrationJob' request.
  295. message UpdateMigrationJobRequest {
  296. // Required. Field mask is used to specify the fields to be overwritten in the
  297. // migration job resource by the update.
  298. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED];
  299. // Required. The migration job parameters to update.
  300. MigrationJob migration_job = 2 [(google.api.field_behavior) = REQUIRED];
  301. // A unique id used to identify the request. If the server receives two
  302. // requests with the same id, then the second request will be ignored.
  303. //
  304. // It is recommended to always set this value to a UUID.
  305. //
  306. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  307. // (_), and hyphens (-). The maximum length is 40 characters.
  308. string request_id = 3;
  309. }
  310. // Request message for 'DeleteMigrationJob' request.
  311. message DeleteMigrationJobRequest {
  312. // Required. Name of the migration job resource to delete.
  313. string name = 1 [
  314. (google.api.field_behavior) = REQUIRED,
  315. (google.api.resource_reference) = {
  316. type: "datamigration.googleapis.com/MigrationJob"
  317. }
  318. ];
  319. // A unique id used to identify the request. If the server receives two
  320. // requests with the same id, then the second request will be ignored.
  321. //
  322. // It is recommended to always set this value to a UUID.
  323. //
  324. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  325. // (_), and hyphens (-). The maximum length is 40 characters.
  326. string request_id = 2;
  327. // The destination CloudSQL connection profile is always deleted with the
  328. // migration job. In case of force delete, the destination CloudSQL replica
  329. // database is also deleted.
  330. bool force = 3;
  331. }
  332. // Request message for 'StartMigrationJob' request.
  333. message StartMigrationJobRequest {
  334. // Name of the migration job resource to start.
  335. string name = 1 [(google.api.resource_reference) = {
  336. type: "datamigration.googleapis.com/MigrationJob"
  337. }];
  338. }
  339. // Request message for 'StopMigrationJob' request.
  340. message StopMigrationJobRequest {
  341. // Name of the migration job resource to stop.
  342. string name = 1 [(google.api.resource_reference) = {
  343. type: "datamigration.googleapis.com/MigrationJob"
  344. }];
  345. }
  346. // Request message for 'ResumeMigrationJob' request.
  347. message ResumeMigrationJobRequest {
  348. // Name of the migration job resource to resume.
  349. string name = 1 [(google.api.resource_reference) = {
  350. type: "datamigration.googleapis.com/MigrationJob"
  351. }];
  352. }
  353. // Request message for 'PromoteMigrationJob' request.
  354. message PromoteMigrationJobRequest {
  355. // Name of the migration job resource to promote.
  356. string name = 1 [(google.api.resource_reference) = {
  357. type: "datamigration.googleapis.com/MigrationJob"
  358. }];
  359. }
  360. // Request message for 'VerifyMigrationJob' request.
  361. message VerifyMigrationJobRequest {
  362. // Name of the migration job resource to verify.
  363. string name = 1 [(google.api.resource_reference) = {
  364. type: "datamigration.googleapis.com/MigrationJob"
  365. }];
  366. }
  367. // Request message for 'RestartMigrationJob' request.
  368. message RestartMigrationJobRequest {
  369. // Name of the migration job resource to restart.
  370. string name = 1 [(google.api.resource_reference) = {
  371. type: "datamigration.googleapis.com/MigrationJob"
  372. }];
  373. }
  374. // Request message for 'GenerateSshScript' request.
  375. message GenerateSshScriptRequest {
  376. // Name of the migration job resource to generate the SSH script.
  377. string migration_job = 1 [(google.api.resource_reference) = {
  378. type: "datamigration.googleapis.com/MigrationJob"
  379. }];
  380. // Required. Bastion VM Instance name to use or to create.
  381. string vm = 2 [(google.api.field_behavior) = REQUIRED];
  382. // The VM configuration
  383. oneof vm_config {
  384. // The VM creation configuration
  385. VmCreationConfig vm_creation_config = 100;
  386. // The VM selection configuration
  387. VmSelectionConfig vm_selection_config = 101;
  388. }
  389. // The port that will be open on the bastion host
  390. int32 vm_port = 3;
  391. }
  392. // VM creation configuration message
  393. message VmCreationConfig {
  394. // Required. VM instance machine type to create.
  395. string vm_machine_type = 1 [(google.api.field_behavior) = REQUIRED];
  396. // The Google Cloud Platform zone to create the VM in.
  397. string vm_zone = 2;
  398. // The subnet name the vm needs to be created in.
  399. string subnet = 3;
  400. }
  401. // VM selection configuration message
  402. message VmSelectionConfig {
  403. // Required. The Google Cloud Platform zone the VM is located.
  404. string vm_zone = 1 [(google.api.field_behavior) = REQUIRED];
  405. }
  406. // Response message for 'GenerateSshScript' request.
  407. message SshScript {
  408. // The ssh configuration script.
  409. string script = 1;
  410. }
  411. // Request message for 'ListConnectionProfiles' request.
  412. message ListConnectionProfilesRequest {
  413. // Required. The parent, which owns this collection of connection profiles.
  414. string parent = 1 [
  415. (google.api.field_behavior) = REQUIRED,
  416. (google.api.resource_reference) = {
  417. child_type: "datamigration.googleapis.com/ConnectionProfile"
  418. }
  419. ];
  420. // The maximum number of connection profiles to return. The service may return
  421. // fewer than this value. If unspecified, at most 50 connection profiles will
  422. // be returned. The maximum value is 1000; values above 1000 will be coerced
  423. // to 1000.
  424. int32 page_size = 2;
  425. // A page token, received from a previous `ListConnectionProfiles` call.
  426. // Provide this to retrieve the subsequent page.
  427. //
  428. // When paginating, all other parameters provided to `ListConnectionProfiles`
  429. // must match the call that provided the page token.
  430. string page_token = 3;
  431. // A filter expression that filters connection profiles listed in the
  432. // response. The expression must specify the field name, a comparison
  433. // operator, and the value that you want to use for filtering. The value must
  434. // be a string, a number, or a boolean. The comparison operator must be either
  435. // =, !=, >, or <. For example, list connection profiles created this year by
  436. // specifying **createTime %gt; 2020-01-01T00:00:00.000000000Z**. You can
  437. // also filter nested fields. For example, you could specify **mySql.username
  438. // = %lt;my_username%gt;** to list all connection profiles configured to
  439. // connect with a specific username.
  440. string filter = 4;
  441. // the order by fields for the result.
  442. string order_by = 5;
  443. }
  444. // Response message for 'ListConnectionProfiles' request.
  445. message ListConnectionProfilesResponse {
  446. // The response list of connection profiles.
  447. repeated ConnectionProfile connection_profiles = 1;
  448. // A token, which can be sent as `page_token` to retrieve the next page.
  449. // If this field is omitted, there are no subsequent pages.
  450. string next_page_token = 2;
  451. // Locations that could not be reached.
  452. repeated string unreachable = 3;
  453. }
  454. // Request message for 'GetConnectionProfile' request.
  455. message GetConnectionProfileRequest {
  456. // Required. Name of the connection profile resource to get.
  457. string name = 1 [
  458. (google.api.field_behavior) = REQUIRED,
  459. (google.api.resource_reference) = {
  460. type: "datamigration.googleapis.com/ConnectionProfile"
  461. }
  462. ];
  463. }
  464. // Request message for 'CreateConnectionProfile' request.
  465. message CreateConnectionProfileRequest {
  466. // Required. The parent, which owns this collection of connection profiles.
  467. string parent = 1 [
  468. (google.api.field_behavior) = REQUIRED,
  469. (google.api.resource_reference) = {
  470. type: "datamigration.googleapis.com/ConnectionProfile"
  471. }
  472. ];
  473. // Required. The connection profile identifier.
  474. string connection_profile_id = 2 [(google.api.field_behavior) = REQUIRED];
  475. // Required. The create request body including the connection profile data
  476. ConnectionProfile connection_profile = 3 [(google.api.field_behavior) = REQUIRED];
  477. // A unique id used to identify the request. If the server receives two
  478. // requests with the same id, then the second request will be ignored.
  479. //
  480. // It is recommended to always set this value to a UUID.
  481. //
  482. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  483. // (_), and hyphens (-). The maximum length is 40 characters.
  484. string request_id = 4;
  485. }
  486. // Request message for 'UpdateConnectionProfile' request.
  487. message UpdateConnectionProfileRequest {
  488. // Required. Field mask is used to specify the fields to be overwritten in the
  489. // connection profile resource by the update.
  490. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED];
  491. // Required. The connection profile parameters to update.
  492. ConnectionProfile connection_profile = 2 [(google.api.field_behavior) = REQUIRED];
  493. // A unique id used to identify the request. If the server receives two
  494. // requests with the same id, then the second request will be ignored.
  495. //
  496. // It is recommended to always set this value to a UUID.
  497. //
  498. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  499. // (_), and hyphens (-). The maximum length is 40 characters.
  500. string request_id = 3;
  501. }
  502. // Request message for 'DeleteConnectionProfile' request.
  503. message DeleteConnectionProfileRequest {
  504. // Required. Name of the connection profile resource to delete.
  505. string name = 1 [
  506. (google.api.field_behavior) = REQUIRED,
  507. (google.api.resource_reference) = {
  508. type: "datamigration.googleapis.com/ConnectionProfile"
  509. }
  510. ];
  511. // A unique id used to identify the request. If the server receives two
  512. // requests with the same id, then the second request will be ignored.
  513. //
  514. // It is recommended to always set this value to a UUID.
  515. //
  516. // The id must contain only letters (a-z, A-Z), numbers (0-9), underscores
  517. // (_), and hyphens (-). The maximum length is 40 characters.
  518. string request_id = 2;
  519. // In case of force delete, the CloudSQL replica database is also deleted
  520. // (only for CloudSQL connection profile).
  521. bool force = 3;
  522. }
  523. // Represents the metadata of the long-running operation.
  524. message OperationMetadata {
  525. // Output only. The time the operation was created.
  526. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  527. // Output only. The time the operation finished running.
  528. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  529. // Output only. Server-defined resource path for the target of the operation.
  530. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  531. // Output only. Name of the verb executed by the operation.
  532. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  533. // Output only. Human-readable status of the operation, if any.
  534. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  535. // Output only. Identifies whether the user has requested cancellation
  536. // of the operation. Operations that have successfully been cancelled
  537. // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
  538. // corresponding to `Code.CANCELLED`.
  539. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
  540. // Output only. API version used to start the operation.
  541. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  542. }