google-cloud-bigtable 1.0.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_pb.rb +3 -0
  4. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_services_pb.rb +6 -3
  5. data/lib/google/bigtable/admin/v2/bigtable_table_admin_pb.rb +67 -0
  6. data/lib/google/bigtable/admin/v2/bigtable_table_admin_services_pb.rb +33 -6
  7. data/lib/google/bigtable/admin/v2/common_pb.rb +6 -1
  8. data/lib/google/bigtable/admin/v2/instance_pb.rb +2 -1
  9. data/lib/google/bigtable/admin/v2/table_pb.rb +39 -1
  10. data/lib/google/cloud/bigtable/admin.rb +3 -3
  11. data/lib/google/cloud/bigtable/admin/v2.rb +4 -3
  12. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client.rb +61 -51
  13. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client_config.json +1 -1
  14. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client.rb +548 -59
  15. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client_config.json +31 -1
  16. data/lib/google/cloud/bigtable/admin/v2/credentials.rb +1 -1
  17. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_instance_admin.rb +47 -40
  18. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_table_admin.rb +282 -54
  19. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/instance.rb +16 -18
  20. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/table.rb +120 -27
  21. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/iam_policy.rb +1 -1
  22. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/options.rb +1 -1
  23. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/policy.rb +1 -1
  24. data/lib/google/cloud/bigtable/admin/v2/doc/google/longrunning/operations.rb +2 -2
  25. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/any.rb +1 -1
  26. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/duration.rb +1 -1
  27. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/empty.rb +1 -1
  28. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/field_mask.rb +1 -1
  29. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/timestamp.rb +1 -1
  30. data/lib/google/cloud/bigtable/admin/v2/doc/google/rpc/status.rb +7 -55
  31. data/lib/google/cloud/bigtable/admin/v2/doc/google/type/expr.rb +1 -1
  32. data/lib/google/cloud/bigtable/instance.rb +4 -7
  33. data/lib/google/cloud/bigtable/policy.rb +1 -1
  34. data/lib/google/cloud/bigtable/service.rb +52 -0
  35. data/lib/google/cloud/bigtable/table.rb +112 -0
  36. data/lib/google/cloud/bigtable/v2.rb +2 -2
  37. data/lib/google/cloud/bigtable/v2/bigtable_client.rb +4 -10
  38. data/lib/google/cloud/bigtable/v2/bigtable_client_config.json +7 -7
  39. data/lib/google/cloud/bigtable/v2/credentials.rb +1 -1
  40. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/bigtable.rb +1 -19
  41. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/data.rb +1 -1
  42. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/any.rb +1 -1
  43. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/wrappers.rb +1 -1
  44. data/lib/google/cloud/bigtable/v2/doc/google/rpc/status.rb +7 -55
  45. data/lib/google/cloud/bigtable/version.rb +1 -1
  46. metadata +4 -4
@@ -854,7 +854,7 @@ module Google
854
854
  # policy.add("roles/owner", "user:owner@example.com")
855
855
  # updated_policy = instance.update_policy(policy)
856
856
  #
857
- # puts update_policy.roles
857
+ # puts updated_policy.roles
858
858
  #
859
859
  def update_policy new_policy
860
860
  ensure_service!
@@ -884,7 +884,7 @@ module Google
884
884
  # * bigtable.tables.get
885
885
  # * bigtable.tables.list
886
886
  #
887
- # @return [Array<Strings>] The permissions that have access.
887
+ # @return [Array<String>] The permissions that are configured for the policy.
888
888
  #
889
889
  # @example
890
890
  # require "google/cloud/bigtable"
@@ -902,11 +902,8 @@ module Google
902
902
  #
903
903
  def test_iam_permissions *permissions
904
904
  ensure_service!
905
- grpc = service.test_instance_permissions(
906
- instance_id,
907
- Array(permissions).flatten
908
- )
909
- grpc.permissions
905
+ grpc = service.test_instance_permissions instance_id, permissions.flatten
906
+ grpc.permissions.to_a
910
907
  end
911
908
 
912
909
  # @private
@@ -19,7 +19,7 @@ module Google
19
19
  ##
20
20
  # # Policy
21
21
  #
22
- # Represents a Cloud IAM Policy for Bigtable instance resources.
22
+ # Represents a Cloud IAM Policy for Bigtable resources.
23
23
  #
24
24
  # A common pattern for updating a resource's metadata, such as its policy,
25
25
  # is to read the current data from the service, update the data locally,
@@ -640,6 +640,58 @@ module Google
640
640
  end
641
641
  end
642
642
 
643
+ ##
644
+ # Gets the access control policy for an table resource. Returns an empty
645
+ # policy if an table exists but does not have a policy set.
646
+ #
647
+ # @param table_id [String]
648
+ # Unique ID of the table for which the policy is being requested.
649
+ # @return [Google::Iam::V1::Policy]
650
+ #
651
+ def get_table_policy instance_id, table_id
652
+ execute do
653
+ tables.get_iam_policy table_path(instance_id, table_id)
654
+ end
655
+ end
656
+
657
+ ##
658
+ # Sets the access control policy on an table resource. Replaces any
659
+ # existing policy.
660
+ #
661
+ # @param table_id [String]
662
+ # Unique ID of the table the policy is for.
663
+ # @param policy [Google::Iam::V1::Policy | Hash]
664
+ # REQUIRED: The complete policy to be applied to the +resource+. The size of
665
+ # the policy is limited to a few 10s of KB. An empty policy is valid
666
+ # for Cloud Bigtable, but certain Cloud Platform services (such as Projects)
667
+ # might reject an empty policy.
668
+ # Alternatively, provide a hash similar to `Google::Iam::V1::Policy`.
669
+ # @return [Google::Iam::V1::Policy]
670
+ #
671
+ def set_table_policy instance_id, table_id, policy
672
+ execute do
673
+ tables.set_iam_policy table_path(instance_id, table_id), policy
674
+ end
675
+ end
676
+
677
+ ##
678
+ # Returns permissions that the caller has for the specified table resource.
679
+ #
680
+ # @param table_id [String]
681
+ # The table ID that the policy detail is being requested for.
682
+ # @param permissions [Array<String>]
683
+ # The set of permissions to check for the +resource+. Permissions with
684
+ # wildcards (such as '*' or 'storage.*') are not allowed. For more
685
+ # information see
686
+ # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
687
+ # @return [Google::Iam::V1::TestIamPermissionsResponse]
688
+ #
689
+ def test_table_permissions instance_id, table_id, permissions
690
+ execute do
691
+ tables.test_iam_permissions table_path(instance_id, table_id), permissions
692
+ end
693
+ end
694
+
643
695
  def read_rows instance_id, table_id, app_profile_id: nil, rows: nil, filter: nil, rows_limit: nil
644
696
  # execute is not used because error handling is in ReadOperations#read_rows
645
697
  client.read_rows table_path(instance_id, table_id),
@@ -20,6 +20,7 @@ require "google/cloud/bigtable/table/cluster_state"
20
20
  require "google/cloud/bigtable/column_family_map"
21
21
  require "google/cloud/bigtable/gc_rule"
22
22
  require "google/cloud/bigtable/mutation_operations"
23
+ require "google/cloud/bigtable/policy"
23
24
  require "google/cloud/bigtable/read_operations"
24
25
 
25
26
  module Google
@@ -239,6 +240,117 @@ module Google
239
240
  granularity == :MILLIS
240
241
  end
241
242
 
243
+ ##
244
+ # Gets the [Cloud IAM](https://cloud.google.com/iam/) access control
245
+ # policy for the table.
246
+ #
247
+ # @see https://cloud.google.com/bigtable/docs/access-control
248
+ #
249
+ # @yield [policy] A block for updating the policy. The latest policy
250
+ # will be read from the Bigtable service and passed to the block. After
251
+ # the block completes, the modified policy will be written to the
252
+ # service.
253
+ # @yieldparam [Policy] policy the current Cloud IAM Policy for this
254
+ # table.
255
+ #
256
+ # @return [Policy] The current Cloud IAM Policy for the table.
257
+ #
258
+ # @example
259
+ # require "google/cloud/bigtable"
260
+ #
261
+ # bigtable = Google::Cloud::Bigtable.new
262
+ #
263
+ # table = bigtable.table("my-instance", "my-table", perform_lookup: true)
264
+ # policy = table.policy
265
+ #
266
+ # @example Update the policy by passing a block.
267
+ # require "google/cloud/bigtable"
268
+ #
269
+ # bigtable = Google::Cloud::Bigtable.new
270
+ #
271
+ # table = bigtable.table("my-instance", "my-table", perform_lookup: true)
272
+ #
273
+ # table.policy do |p|
274
+ # p.add("roles/owner", "user:owner@example.com")
275
+ # end # 2 API calls
276
+ #
277
+ def policy
278
+ ensure_service!
279
+ grpc = service.get_table_policy instance_id, name
280
+ policy = Policy.from_grpc grpc
281
+ return policy unless block_given?
282
+ yield policy
283
+ update_policy policy
284
+ end
285
+
286
+ ##
287
+ # Updates the [Cloud IAM](https://cloud.google.com/iam/) access control
288
+ # policy for the table. The policy should be read from {#policy}.
289
+ # See {Google::Cloud::Bigtable::Policy} for an explanation of the policy
290
+ # `etag` property and how to modify policies.
291
+ #
292
+ # You can also update the policy by passing a block to {#policy}, which
293
+ # will call this method internally after the block completes.
294
+ #
295
+ # @param new_policy [Policy] a new or modified Cloud IAM Policy for this
296
+ # table
297
+ #
298
+ # @return [Policy] The policy returned by the API update operation.
299
+ #
300
+ # @example
301
+ # require "google/cloud/bigtable"
302
+ #
303
+ # bigtable = Google::Cloud::Bigtable.new
304
+ #
305
+ # table = bigtable.table("my-instance", "my-table", perform_lookup: true)
306
+ #
307
+ # policy = table.policy
308
+ # policy.add("roles/owner", "user:owner@example.com")
309
+ # updated_policy = table.update_policy(policy)
310
+ #
311
+ # puts updated_policy.roles
312
+ #
313
+ def update_policy new_policy
314
+ ensure_service!
315
+ grpc = service.set_table_policy instance_id, name, new_policy.to_grpc
316
+ Policy.from_grpc grpc
317
+ end
318
+ alias policy= update_policy
319
+
320
+ ##
321
+ # Tests the specified permissions against the [Cloud
322
+ # IAM](https://cloud.google.com/iam/) access control policy.
323
+ #
324
+ # @see https://cloud.google.com/iam/docs/managing-policies Managing Policies
325
+ # @see https://cloud.google.com/bigtable/docs/access-control Access Control
326
+ #
327
+ # @param permissions [String, Array<String>] permissions The set of permissions to
328
+ # check access for. Permissions with wildcards (such as `*` or
329
+ # `bigtable.*`) are not allowed.
330
+ # See [Access Control](https://cloud.google.com/bigtable/docs/access-control).
331
+ #
332
+ # @return [Array<String>] The permissions that are configured for the policy.
333
+ #
334
+ # @example
335
+ # require "google/cloud/bigtable"
336
+ #
337
+ # bigtable = Google::Cloud::Bigtable.new
338
+ #
339
+ # table = bigtable.table("my-instance", "my-table", perform_lookup: true)
340
+ #
341
+ # permissions = table.test_iam_permissions(
342
+ # "bigtable.tables.delete",
343
+ # "bigtable.tables.get"
344
+ # )
345
+ # permissions.include? "bigtable.tables.delete" #=> false
346
+ # permissions.include? "bigtable.tables.get" #=> true
347
+ #
348
+ def test_iam_permissions *permissions
349
+ ensure_service!
350
+ grpc = service.test_table_permissions instance_id, name, permissions.flatten
351
+ grpc.permissions.to_a
352
+ end
353
+
242
354
  ##
243
355
  # Permanently deletes the table from a instance.
244
356
  #
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ module Google
21
21
  # rubocop:disable LineLength
22
22
 
23
23
  ##
24
- # # Ruby Client for Cloud Bigtable API ([GA](https://github.com/googleapis/google-cloud-ruby#versioning))
24
+ # # Ruby Client for Cloud Bigtable API
25
25
  #
26
26
  # [Cloud Bigtable API][Product Documentation]:
27
27
  # API for reading and writing the contents of Bigtables associated with a
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -160,6 +160,9 @@ module Google
160
160
  google_api_client.freeze
161
161
 
162
162
  headers = { :"x-goog-api-client" => google_api_client }
163
+ if credentials.respond_to?(:quota_project_id) && credentials.quota_project_id
164
+ headers[:"x-goog-user-project"] = credentials.quota_project_id
165
+ end
163
166
  headers.merge!(metadata) unless metadata.nil?
164
167
  client_config_file = Pathname.new(__dir__).join(
165
168
  "bigtable_client_config.json"
@@ -351,9 +354,6 @@ module Google
351
354
  # `projects/<project>/instances/<instance>/tables/<table>`.
352
355
  # @param row_key [String]
353
356
  # Required. The key of the row to which the mutation should be applied.
354
- #
355
- # Classified as IDENTIFYING_ID to provide context around data accesses for
356
- # auditing systems.
357
357
  # @param mutations [Array<Google::Bigtable::V2::Mutation | Hash>]
358
358
  # Required. Changes to be atomically applied to the specified row. Entries are applied
359
359
  # in order, meaning that earlier mutations can be masked by later ones.
@@ -460,9 +460,6 @@ module Google
460
460
  # `projects/<project>/instances/<instance>/tables/<table>`.
461
461
  # @param row_key [String]
462
462
  # Required. The key of the row to which the conditional mutation should be applied.
463
- #
464
- # Classified as IDENTIFYING_ID to provide context around data accesses for
465
- # auditing systems.
466
463
  # @param app_profile_id [String]
467
464
  # This value specifies routing for replication. If not specified, the
468
465
  # "default" application profile will be used.
@@ -541,9 +538,6 @@ module Google
541
538
  # `projects/<project>/instances/<instance>/tables/<table>`.
542
539
  # @param row_key [String]
543
540
  # Required. The key of the row to which the read/modify/write rules should be applied.
544
- #
545
- # Classified as IDENTIFYING_ID to provide context around data accesses for
546
- # auditing systems.
547
541
  # @param rules [Array<Google::Bigtable::V2::ReadModifyWriteRule | Hash>]
548
542
  # Required. Rules specifying how the specified row's contents are to be transformed
549
543
  # into writes. Entries are applied in order, meaning that earlier rules will
@@ -49,22 +49,22 @@
49
49
  "methods": {
50
50
  "ReadRows": {
51
51
  "timeout_millis": 43200000,
52
- "retry_codes_name": "idempotent",
52
+ "retry_codes_name": "non_idempotent",
53
53
  "retry_params_name": "read_rows_params"
54
54
  },
55
55
  "SampleRowKeys": {
56
- "timeout_millis": 20000,
57
- "retry_codes_name": "idempotent",
58
- "retry_params_name": "idempotent_params"
56
+ "timeout_millis": 60000,
57
+ "retry_codes_name": "non_idempotent",
58
+ "retry_params_name": "non_idempotent_params"
59
59
  },
60
60
  "MutateRow": {
61
- "timeout_millis": 20000,
61
+ "timeout_millis": 60000,
62
62
  "retry_codes_name": "idempotent",
63
63
  "retry_params_name": "idempotent_params"
64
64
  },
65
65
  "MutateRows": {
66
- "timeout_millis": 60000,
67
- "retry_codes_name": "idempotent",
66
+ "timeout_millis": 600000,
67
+ "retry_codes_name": "non_idempotent",
68
68
  "retry_params_name": "mutate_rows_params"
69
69
  },
70
70
  "CheckAndMutateRow": {
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -61,9 +61,6 @@ module Google
61
61
  # this CellChunk is a continuation of the same row as the previous
62
62
  # CellChunk in the response stream, even if that CellChunk was in a
63
63
  # previous ReadRowsResponse message.
64
- #
65
- # Classified as IDENTIFYING_ID to provide context around data accesses for
66
- # auditing systems.
67
64
  # @!attribute [rw] family_name
68
65
  # @return [Google::Protobuf::StringValue]
69
66
  # The column family name for this chunk of data. If this message
@@ -140,9 +137,6 @@ module Google
140
137
  # Note that row keys in this list may not have ever been written to or read
141
138
  # from, and users should therefore not make any assumptions about the row key
142
139
  # structure that are specific to their use case.
143
- #
144
- # Classified as IDENTIFYING_ID to provide context around data accesses for
145
- # auditing systems.
146
140
  # @!attribute [rw] offset_bytes
147
141
  # @return [Integer]
148
142
  # Approximate total storage space used by all rows in the table which precede
@@ -164,9 +158,6 @@ module Google
164
158
  # @!attribute [rw] row_key
165
159
  # @return [String]
166
160
  # Required. The key of the row to which the mutation should be applied.
167
- #
168
- # Classified as IDENTIFYING_ID to provide context around data accesses for
169
- # auditing systems.
170
161
  # @!attribute [rw] mutations
171
162
  # @return [Array<Google::Bigtable::V2::Mutation>]
172
163
  # Required. Changes to be atomically applied to the specified row. Entries are applied
@@ -197,9 +188,6 @@ module Google
197
188
  # @!attribute [rw] row_key
198
189
  # @return [String]
199
190
  # The key of the row to which the `mutations` should be applied.
200
- #
201
- # Classified as IDENTIFYING_ID to provide context around data accesses for
202
- # auditing systems.
203
191
  # @!attribute [rw] mutations
204
192
  # @return [Array<Google::Bigtable::V2::Mutation>]
205
193
  # Required. Changes to be atomically applied to the specified row. Mutations are
@@ -242,9 +230,6 @@ module Google
242
230
  # @!attribute [rw] row_key
243
231
  # @return [String]
244
232
  # Required. The key of the row to which the conditional mutation should be applied.
245
- #
246
- # Classified as IDENTIFYING_ID to provide context around data accesses for
247
- # auditing systems.
248
233
  # @!attribute [rw] predicate_filter
249
234
  # @return [Google::Bigtable::V2::RowFilter]
250
235
  # The filter to be applied to the contents of the specified row. Depending
@@ -288,9 +273,6 @@ module Google
288
273
  # @!attribute [rw] row_key
289
274
  # @return [String]
290
275
  # Required. The key of the row to which the read/modify/write rules should be applied.
291
- #
292
- # Classified as IDENTIFYING_ID to provide context around data accesses for
293
- # auditing systems.
294
276
  # @!attribute [rw] rules
295
277
  # @return [Array<Google::Bigtable::V2::ReadModifyWriteRule>]
296
278
  # Required. Rules specifying how the specified row's contents are to be transformed
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2019 Google LLC
1
+ # Copyright 2020 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -17,67 +17,19 @@ module Google
17
17
  module Rpc
18
18
  # The `Status` type defines a logical error model that is suitable for
19
19
  # different programming environments, including REST APIs and RPC APIs. It is
20
- # used by [gRPC](https://github.com/grpc). The error model is designed to be:
20
+ # used by [gRPC](https://github.com/grpc). Each `Status` message contains
21
+ # three pieces of data: error code, error message, and error details.
21
22
  #
22
- # * Simple to use and understand for most users
23
- # * Flexible enough to meet unexpected needs
24
- #
25
- # = Overview
26
- #
27
- # The `Status` message contains three pieces of data: error code, error
28
- # message, and error details. The error code should be an enum value of
29
- # {Google::Rpc::Code}, but it may accept additional error codes
30
- # if needed. The error message should be a developer-facing English message
31
- # that helps developers *understand* and *resolve* the error. If a localized
32
- # user-facing error message is needed, put the localized message in the error
33
- # details or localize it in the client. The optional error details may contain
34
- # arbitrary information about the error. There is a predefined set of error
35
- # detail types in the package `google.rpc` that can be used for common error
36
- # conditions.
37
- #
38
- # = Language mapping
39
- #
40
- # The `Status` message is the logical representation of the error model, but it
41
- # is not necessarily the actual wire format. When the `Status` message is
42
- # exposed in different client libraries and different wire protocols, it can be
43
- # mapped differently. For example, it will likely be mapped to some exceptions
44
- # in Java, but more likely mapped to some error codes in C.
45
- #
46
- # = Other uses
47
- #
48
- # The error model and the `Status` message can be used in a variety of
49
- # environments, either with or without APIs, to provide a
50
- # consistent developer experience across different environments.
51
- #
52
- # Example uses of this error model include:
53
- #
54
- # * Partial errors. If a service needs to return partial errors to the client,
55
- # it may embed the `Status` in the normal response to indicate the partial
56
- # errors.
57
- #
58
- # * Workflow errors. A typical workflow has multiple steps. Each step may
59
- # have a `Status` message for error reporting.
60
- #
61
- # * Batch operations. If a client uses batch request and batch response, the
62
- # `Status` message should be used directly inside batch response, one for
63
- # each error sub-response.
64
- #
65
- # * Asynchronous operations. If an API call embeds asynchronous operation
66
- # results in its response, the status of those operations should be
67
- # represented directly using the `Status` message.
68
- #
69
- # * Logging. If some API errors are stored in logs, the message `Status` could
70
- # be used directly after any stripping needed for security/privacy reasons.
23
+ # You can find out more about this error model and how to work with it in the
24
+ # [API Design Guide](https://cloud.google.com/apis/design/errors).
71
25
  # @!attribute [rw] code
72
26
  # @return [Integer]
73
- # The status code, which should be an enum value of
74
- # {Google::Rpc::Code}.
27
+ # The status code, which should be an enum value of {Google::Rpc::Code}.
75
28
  # @!attribute [rw] message
76
29
  # @return [String]
77
30
  # A developer-facing error message, which should be in English. Any
78
31
  # user-facing error message should be localized and sent in the
79
- # {Google::Rpc::Status#details} field, or localized
80
- # by the client.
32
+ # {Google::Rpc::Status#details} field, or localized by the client.
81
33
  # @!attribute [rw] details
82
34
  # @return [Array<Google::Protobuf::Any>]
83
35
  # A list of messages that carry the error details. There is a common set of