google-cloud-bigtable 1.0.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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