google-api-client 0.10.1 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/api_names.yaml +395 -0
  4. data/generated/google/apis/adexchangebuyer2_v2beta1.rb +1 -1
  5. data/generated/google/apis/adexchangebuyer2_v2beta1/classes.rb +254 -254
  6. data/generated/google/apis/adexchangebuyer2_v2beta1/representations.rb +65 -65
  7. data/generated/google/apis/adexchangebuyer2_v2beta1/service.rb +220 -220
  8. data/generated/google/apis/admin_directory_v1.rb +1 -1
  9. data/generated/google/apis/admin_directory_v1/classes.rb +106 -0
  10. data/generated/google/apis/admin_directory_v1/representations.rb +37 -0
  11. data/generated/google/apis/admin_reports_v1.rb +3 -3
  12. data/generated/google/apis/admin_reports_v1/service.rb +6 -6
  13. data/generated/google/apis/adsense_v1_4.rb +1 -1
  14. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  15. data/generated/google/apis/analytics_v3.rb +1 -1
  16. data/generated/google/apis/analytics_v3/service.rb +39 -0
  17. data/generated/google/apis/analyticsreporting_v4/classes.rb +920 -920
  18. data/generated/google/apis/analyticsreporting_v4/representations.rb +197 -197
  19. data/generated/google/apis/analyticsreporting_v4/service.rb +4 -4
  20. data/generated/google/apis/androidenterprise_v1.rb +1 -1
  21. data/generated/google/apis/androidenterprise_v1/classes.rb +8 -13
  22. data/generated/google/apis/androidenterprise_v1/service.rb +3 -3
  23. data/generated/google/apis/appengine_v1beta5.rb +1 -1
  24. data/generated/google/apis/appengine_v1beta5/classes.rb +115 -5
  25. data/generated/google/apis/appengine_v1beta5/representations.rb +37 -0
  26. data/generated/google/apis/appengine_v1beta5/service.rb +12 -9
  27. data/generated/google/apis/appstate_v1.rb +1 -1
  28. data/generated/google/apis/bigquery_v2.rb +1 -1
  29. data/generated/google/apis/bigquery_v2/classes.rb +32 -37
  30. data/generated/google/apis/bigquery_v2/service.rb +10 -2
  31. data/generated/google/apis/calendar_v3.rb +1 -1
  32. data/generated/google/apis/calendar_v3/classes.rb +205 -0
  33. data/generated/google/apis/calendar_v3/representations.rb +97 -0
  34. data/generated/google/apis/classroom_v1.rb +22 -25
  35. data/generated/google/apis/classroom_v1/classes.rb +998 -907
  36. data/generated/google/apis/classroom_v1/representations.rb +240 -240
  37. data/generated/google/apis/classroom_v1/service.rb +1269 -1061
  38. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  39. data/generated/google/apis/cloudbuild_v1/classes.rb +164 -163
  40. data/generated/google/apis/cloudbuild_v1/representations.rb +31 -31
  41. data/generated/google/apis/cloudbuild_v1/service.rb +114 -114
  42. data/generated/google/apis/clouddebugger_v2.rb +1 -1
  43. data/generated/google/apis/clouddebugger_v2/classes.rb +687 -687
  44. data/generated/google/apis/clouddebugger_v2/representations.rb +147 -147
  45. data/generated/google/apis/clouddebugger_v2/service.rb +132 -132
  46. data/generated/google/apis/cloudkms_v1.rb +1 -1
  47. data/generated/google/apis/cloudkms_v1/classes.rb +231 -248
  48. data/generated/google/apis/cloudkms_v1/representations.rb +74 -74
  49. data/generated/google/apis/cloudkms_v1/service.rb +228 -228
  50. data/generated/google/apis/cloudmonitoring_v2beta2.rb +1 -1
  51. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  52. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +738 -128
  53. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +245 -23
  54. data/generated/google/apis/cloudresourcemanager_v1/service.rb +1293 -249
  55. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +4 -4
  56. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +982 -372
  57. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +293 -71
  58. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +626 -277
  59. data/generated/google/apis/cloudtrace_v1.rb +1 -1
  60. data/generated/google/apis/cloudtrace_v1/classes.rb +19 -19
  61. data/generated/google/apis/cloudtrace_v1/representations.rb +2 -2
  62. data/generated/google/apis/cloudtrace_v1/service.rb +30 -30
  63. data/generated/google/apis/compute_beta.rb +1 -1
  64. data/generated/google/apis/compute_beta/classes.rb +116 -0
  65. data/generated/google/apis/compute_beta/representations.rb +48 -0
  66. data/generated/google/apis/compute_beta/service.rb +46 -1
  67. data/generated/google/apis/compute_v1.rb +1 -1
  68. data/generated/google/apis/dataflow_v1b3.rb +1 -1
  69. data/generated/google/apis/dataflow_v1b3/classes.rb +3276 -3320
  70. data/generated/google/apis/dataflow_v1b3/representations.rb +779 -781
  71. data/generated/google/apis/dataflow_v1b3/service.rb +225 -225
  72. data/generated/google/apis/dataproc_v1.rb +1 -1
  73. data/generated/google/apis/dataproc_v1/classes.rb +1221 -1207
  74. data/generated/google/apis/dataproc_v1/representations.rb +255 -253
  75. data/generated/google/apis/dataproc_v1/service.rb +100 -100
  76. data/generated/google/apis/deploymentmanager_v2.rb +1 -1
  77. data/generated/google/apis/deploymentmanager_v2/classes.rb +5 -5
  78. data/generated/google/apis/dns_v1.rb +1 -1
  79. data/generated/google/apis/dns_v2beta1.rb +1 -1
  80. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  81. data/generated/google/apis/drive_v2.rb +1 -1
  82. data/generated/google/apis/drive_v2/classes.rb +3 -1
  83. data/generated/google/apis/drive_v3.rb +1 -1
  84. data/generated/google/apis/drive_v3/classes.rb +3 -1
  85. data/generated/google/apis/fusiontables_v2.rb +1 -1
  86. data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
  87. data/generated/google/apis/games_management_v1management.rb +1 -1
  88. data/generated/google/apis/games_v1.rb +1 -1
  89. data/generated/google/apis/genomics_v1.rb +7 -7
  90. data/generated/google/apis/genomics_v1/classes.rb +959 -959
  91. data/generated/google/apis/genomics_v1/representations.rb +238 -238
  92. data/generated/google/apis/genomics_v1/service.rb +996 -996
  93. data/generated/google/apis/iam_v1.rb +1 -1
  94. data/generated/google/apis/iam_v1/classes.rb +440 -440
  95. data/generated/google/apis/iam_v1/representations.rb +94 -94
  96. data/generated/google/apis/iam_v1/service.rb +170 -173
  97. data/generated/google/apis/identitytoolkit_v3.rb +1 -1
  98. data/generated/google/apis/identitytoolkit_v3/classes.rb +55 -0
  99. data/generated/google/apis/identitytoolkit_v3/representations.rb +8 -0
  100. data/generated/google/apis/kgsearch_v1/service.rb +4 -4
  101. data/generated/google/apis/language_v1beta1.rb +1 -1
  102. data/generated/google/apis/language_v1beta1/classes.rb +427 -427
  103. data/generated/google/apis/language_v1beta1/representations.rb +113 -113
  104. data/generated/google/apis/language_v1beta1/service.rb +25 -24
  105. data/generated/google/apis/licensing_v1.rb +2 -2
  106. data/generated/google/apis/licensing_v1/classes.rb +14 -2
  107. data/generated/google/apis/licensing_v1/representations.rb +2 -0
  108. data/generated/google/apis/licensing_v1/service.rb +1 -1
  109. data/generated/google/apis/logging_v2beta1.rb +1 -1
  110. data/generated/google/apis/logging_v2beta1/classes.rb +864 -864
  111. data/generated/google/apis/logging_v2beta1/representations.rb +168 -168
  112. data/generated/google/apis/logging_v2beta1/service.rb +261 -261
  113. data/generated/google/apis/manufacturers_v1.rb +1 -1
  114. data/generated/google/apis/manufacturers_v1/classes.rb +452 -105
  115. data/generated/google/apis/manufacturers_v1/representations.rb +138 -18
  116. data/generated/google/apis/manufacturers_v1/service.rb +11 -11
  117. data/generated/google/apis/mirror_v1.rb +1 -1
  118. data/generated/google/apis/monitoring_v3.rb +7 -7
  119. data/generated/google/apis/monitoring_v3/classes.rb +668 -670
  120. data/generated/google/apis/monitoring_v3/representations.rb +140 -140
  121. data/generated/google/apis/monitoring_v3/service.rb +208 -208
  122. data/generated/google/apis/partners_v2.rb +1 -1
  123. data/generated/google/apis/partners_v2/classes.rb +505 -505
  124. data/generated/google/apis/partners_v2/representations.rb +118 -118
  125. data/generated/google/apis/partners_v2/service.rb +275 -275
  126. data/generated/google/apis/people_v1.rb +1 -1
  127. data/generated/google/apis/people_v1/classes.rb +1037 -1031
  128. data/generated/google/apis/people_v1/representations.rb +247 -246
  129. data/generated/google/apis/people_v1/service.rb +20 -20
  130. data/generated/google/apis/plus_domains_v1.rb +1 -1
  131. data/generated/google/apis/plus_v1.rb +1 -1
  132. data/generated/google/apis/proximitybeacon_v1beta1.rb +1 -1
  133. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +392 -392
  134. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +93 -93
  135. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +381 -381
  136. data/generated/google/apis/pubsub_v1.rb +4 -4
  137. data/generated/google/apis/pubsub_v1/classes.rb +131 -132
  138. data/generated/google/apis/pubsub_v1/representations.rb +35 -35
  139. data/generated/google/apis/pubsub_v1/service.rb +399 -408
  140. data/generated/google/apis/reseller_v1.rb +1 -1
  141. data/generated/google/apis/reseller_v1/classes.rb +9 -0
  142. data/generated/google/apis/reseller_v1/representations.rb +1 -0
  143. data/generated/google/apis/script_v1.rb +9 -9
  144. data/generated/google/apis/script_v1/classes.rb +110 -110
  145. data/generated/google/apis/script_v1/representations.rb +26 -26
  146. data/generated/google/apis/sheets_v4.rb +4 -4
  147. data/generated/google/apis/sheets_v4/classes.rb +4329 -4329
  148. data/generated/google/apis/sheets_v4/representations.rb +856 -856
  149. data/generated/google/apis/sheets_v4/service.rb +106 -106
  150. data/generated/google/apis/slides_v1.rb +4 -4
  151. data/generated/google/apis/slides_v1/classes.rb +2923 -2841
  152. data/generated/google/apis/slides_v1/representations.rb +722 -691
  153. data/generated/google/apis/slides_v1/service.rb +58 -15
  154. data/generated/google/apis/speech_v1beta1.rb +1 -1
  155. data/generated/google/apis/speech_v1beta1/classes.rb +191 -191
  156. data/generated/google/apis/speech_v1beta1/representations.rb +57 -57
  157. data/generated/google/apis/speech_v1beta1/service.rb +70 -70
  158. data/generated/google/apis/storage_v1.rb +1 -1
  159. data/generated/google/apis/storage_v1/classes.rb +151 -0
  160. data/generated/google/apis/storage_v1/representations.rb +45 -0
  161. data/generated/google/apis/storage_v1/service.rb +248 -0
  162. data/generated/google/apis/vision_v1.rb +1 -1
  163. data/generated/google/apis/vision_v1/classes.rb +1227 -1221
  164. data/generated/google/apis/vision_v1/representations.rb +217 -215
  165. data/generated/google/apis/webmasters_v3.rb +1 -1
  166. data/generated/google/apis/youtube_analytics_v1.rb +1 -1
  167. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  168. data/generated/google/apis/youtube_partner_v1/classes.rb +78 -0
  169. data/generated/google/apis/youtube_partner_v1/representations.rb +34 -0
  170. data/generated/google/apis/youtube_partner_v1/service.rb +40 -0
  171. data/generated/google/apis/youtubereporting_v1.rb +4 -4
  172. data/generated/google/apis/youtubereporting_v1/classes.rb +65 -65
  173. data/generated/google/apis/youtubereporting_v1/representations.rb +18 -18
  174. data/generated/google/apis/youtubereporting_v1/service.rb +111 -111
  175. data/lib/google/apis/version.rb +1 -1
  176. metadata +2 -2
@@ -172,12 +172,30 @@ module Google
172
172
  include Google::Apis::Core::JsonObjectSupport
173
173
  end
174
174
 
175
+ class Policy
176
+ class Representation < Google::Apis::Core::JsonRepresentation; end
177
+
178
+ class Binding
179
+ class Representation < Google::Apis::Core::JsonRepresentation; end
180
+
181
+ include Google::Apis::Core::JsonObjectSupport
182
+ end
183
+
184
+ include Google::Apis::Core::JsonObjectSupport
185
+ end
186
+
175
187
  class RewriteResponse
176
188
  class Representation < Google::Apis::Core::JsonRepresentation; end
177
189
 
178
190
  include Google::Apis::Core::JsonObjectSupport
179
191
  end
180
192
 
193
+ class TestIamPermissionsResponse
194
+ class Representation < Google::Apis::Core::JsonRepresentation; end
195
+
196
+ include Google::Apis::Core::JsonObjectSupport
197
+ end
198
+
181
199
  class Bucket
182
200
  # @private
183
201
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -485,6 +503,25 @@ module Google
485
503
  end
486
504
  end
487
505
 
506
+ class Policy
507
+ # @private
508
+ class Representation < Google::Apis::Core::JsonRepresentation
509
+ collection :bindings, as: 'bindings', class: Google::Apis::StorageV1::Policy::Binding, decorator: Google::Apis::StorageV1::Policy::Binding::Representation
510
+
511
+ property :etag, :base64 => true, as: 'etag'
512
+ property :kind, as: 'kind'
513
+ property :resource_id, as: 'resourceId'
514
+ end
515
+
516
+ class Binding
517
+ # @private
518
+ class Representation < Google::Apis::Core::JsonRepresentation
519
+ collection :members, as: 'members'
520
+ property :role, as: 'role'
521
+ end
522
+ end
523
+ end
524
+
488
525
  class RewriteResponse
489
526
  # @private
490
527
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -497,6 +534,14 @@ module Google
497
534
  property :total_bytes_rewritten, as: 'totalBytesRewritten'
498
535
  end
499
536
  end
537
+
538
+ class TestIamPermissionsResponse
539
+ # @private
540
+ class Representation < Google::Apis::Core::JsonRepresentation
541
+ property :kind, as: 'kind'
542
+ collection :permissions, as: 'permissions'
543
+ end
544
+ end
500
545
  end
501
546
  end
502
547
  end
@@ -373,6 +373,41 @@ module Google
373
373
  execute_or_queue_command(command, &block)
374
374
  end
375
375
 
376
+ # Returns an IAM policy for the specified bucket.
377
+ # @param [String] bucket
378
+ # Name of a bucket.
379
+ # @param [String] fields
380
+ # Selector specifying which fields to include in a partial response.
381
+ # @param [String] quota_user
382
+ # Available to use for quota purposes for server-side applications. Can be any
383
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
384
+ # Overrides userIp if both are provided.
385
+ # @param [String] user_ip
386
+ # IP address of the site where the request originates. Use this if you want to
387
+ # enforce per-user limits.
388
+ # @param [Google::Apis::RequestOptions] options
389
+ # Request-specific options
390
+ #
391
+ # @yield [result, err] Result & error if block supplied
392
+ # @yieldparam result [Google::Apis::StorageV1::Policy] parsed result object
393
+ # @yieldparam err [StandardError] error object if request failed
394
+ #
395
+ # @return [Google::Apis::StorageV1::Policy]
396
+ #
397
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
398
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
399
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
400
+ def get_bucket_iam_policy(bucket, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
401
+ command = make_simple_command(:get, 'b/{bucket}/iam', options)
402
+ command.response_representation = Google::Apis::StorageV1::Policy::Representation
403
+ command.response_class = Google::Apis::StorageV1::Policy
404
+ command.params['bucket'] = bucket unless bucket.nil?
405
+ command.query['fields'] = fields unless fields.nil?
406
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
407
+ command.query['userIp'] = user_ip unless user_ip.nil?
408
+ execute_or_queue_command(command, &block)
409
+ end
410
+
376
411
  # Creates a new bucket.
377
412
  # @param [String] project
378
413
  # A valid API project identifier.
@@ -527,6 +562,83 @@ module Google
527
562
  execute_or_queue_command(command, &block)
528
563
  end
529
564
 
565
+ # Updates an IAM policy for the specified bucket.
566
+ # @param [String] bucket
567
+ # Name of a bucket.
568
+ # @param [Google::Apis::StorageV1::Policy] policy_object
569
+ # @param [String] fields
570
+ # Selector specifying which fields to include in a partial response.
571
+ # @param [String] quota_user
572
+ # Available to use for quota purposes for server-side applications. Can be any
573
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
574
+ # Overrides userIp if both are provided.
575
+ # @param [String] user_ip
576
+ # IP address of the site where the request originates. Use this if you want to
577
+ # enforce per-user limits.
578
+ # @param [Google::Apis::RequestOptions] options
579
+ # Request-specific options
580
+ #
581
+ # @yield [result, err] Result & error if block supplied
582
+ # @yieldparam result [Google::Apis::StorageV1::Policy] parsed result object
583
+ # @yieldparam err [StandardError] error object if request failed
584
+ #
585
+ # @return [Google::Apis::StorageV1::Policy]
586
+ #
587
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
588
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
589
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
590
+ def set_bucket_iam_policy(bucket, policy_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
591
+ command = make_simple_command(:put, 'b/{bucket}/iam', options)
592
+ command.request_representation = Google::Apis::StorageV1::Policy::Representation
593
+ command.request_object = policy_object
594
+ command.response_representation = Google::Apis::StorageV1::Policy::Representation
595
+ command.response_class = Google::Apis::StorageV1::Policy
596
+ command.params['bucket'] = bucket unless bucket.nil?
597
+ command.query['fields'] = fields unless fields.nil?
598
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
599
+ command.query['userIp'] = user_ip unless user_ip.nil?
600
+ execute_or_queue_command(command, &block)
601
+ end
602
+
603
+ # Tests a set of permissions on the given bucket to see which, if any, are held
604
+ # by the caller.
605
+ # @param [String] bucket
606
+ # Name of a bucket.
607
+ # @param [Array<String>, String] permissions
608
+ # Permissions to test.
609
+ # @param [String] fields
610
+ # Selector specifying which fields to include in a partial response.
611
+ # @param [String] quota_user
612
+ # Available to use for quota purposes for server-side applications. Can be any
613
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
614
+ # Overrides userIp if both are provided.
615
+ # @param [String] user_ip
616
+ # IP address of the site where the request originates. Use this if you want to
617
+ # enforce per-user limits.
618
+ # @param [Google::Apis::RequestOptions] options
619
+ # Request-specific options
620
+ #
621
+ # @yield [result, err] Result & error if block supplied
622
+ # @yieldparam result [Google::Apis::StorageV1::TestIamPermissionsResponse] parsed result object
623
+ # @yieldparam err [StandardError] error object if request failed
624
+ #
625
+ # @return [Google::Apis::StorageV1::TestIamPermissionsResponse]
626
+ #
627
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
628
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
629
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
630
+ def test_bucket_iam_permissions(bucket, permissions, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
631
+ command = make_simple_command(:get, 'b/{bucket}/iam/testPermissions', options)
632
+ command.response_representation = Google::Apis::StorageV1::TestIamPermissionsResponse::Representation
633
+ command.response_class = Google::Apis::StorageV1::TestIamPermissionsResponse
634
+ command.params['bucket'] = bucket unless bucket.nil?
635
+ command.query['permissions'] = permissions unless permissions.nil?
636
+ command.query['fields'] = fields unless fields.nil?
637
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
638
+ command.query['userIp'] = user_ip unless user_ip.nil?
639
+ execute_or_queue_command(command, &block)
640
+ end
641
+
530
642
  # Updates a bucket. Changes to the bucket will be readable immediately after
531
643
  # writing, but configuration changes may take time to propagate.
532
644
  # @param [String] bucket
@@ -1431,6 +1543,49 @@ module Google
1431
1543
  execute_or_queue_command(command, &block)
1432
1544
  end
1433
1545
 
1546
+ # Returns an IAM policy for the specified object.
1547
+ # @param [String] bucket
1548
+ # Name of the bucket in which the object resides.
1549
+ # @param [String] object
1550
+ # Name of the object. For information about how to URL encode object names to be
1551
+ # path safe, see Encoding URI Path Parts.
1552
+ # @param [String] generation
1553
+ # If present, selects a specific revision of this object (as opposed to the
1554
+ # latest version, the default).
1555
+ # @param [String] fields
1556
+ # Selector specifying which fields to include in a partial response.
1557
+ # @param [String] quota_user
1558
+ # Available to use for quota purposes for server-side applications. Can be any
1559
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
1560
+ # Overrides userIp if both are provided.
1561
+ # @param [String] user_ip
1562
+ # IP address of the site where the request originates. Use this if you want to
1563
+ # enforce per-user limits.
1564
+ # @param [Google::Apis::RequestOptions] options
1565
+ # Request-specific options
1566
+ #
1567
+ # @yield [result, err] Result & error if block supplied
1568
+ # @yieldparam result [Google::Apis::StorageV1::Policy] parsed result object
1569
+ # @yieldparam err [StandardError] error object if request failed
1570
+ #
1571
+ # @return [Google::Apis::StorageV1::Policy]
1572
+ #
1573
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
1574
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
1575
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
1576
+ def get_object_iam_policy(bucket, object, generation: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
1577
+ command = make_simple_command(:get, 'b/{bucket}/o/{object}/iam', options)
1578
+ command.response_representation = Google::Apis::StorageV1::Policy::Representation
1579
+ command.response_class = Google::Apis::StorageV1::Policy
1580
+ command.params['bucket'] = bucket unless bucket.nil?
1581
+ command.params['object'] = object unless object.nil?
1582
+ command.query['generation'] = generation unless generation.nil?
1583
+ command.query['fields'] = fields unless fields.nil?
1584
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
1585
+ command.query['userIp'] = user_ip unless user_ip.nil?
1586
+ execute_or_queue_command(command, &block)
1587
+ end
1588
+
1434
1589
  # Stores a new object and metadata.
1435
1590
  # @param [String] bucket
1436
1591
  # Name of the bucket in which to store the new object. Overrides the provided
@@ -1756,6 +1911,99 @@ module Google
1756
1911
  execute_or_queue_command(command, &block)
1757
1912
  end
1758
1913
 
1914
+ # Updates an IAM policy for the specified object.
1915
+ # @param [String] bucket
1916
+ # Name of the bucket in which the object resides.
1917
+ # @param [String] object
1918
+ # Name of the object. For information about how to URL encode object names to be
1919
+ # path safe, see Encoding URI Path Parts.
1920
+ # @param [Google::Apis::StorageV1::Policy] policy_object
1921
+ # @param [String] generation
1922
+ # If present, selects a specific revision of this object (as opposed to the
1923
+ # latest version, the default).
1924
+ # @param [String] fields
1925
+ # Selector specifying which fields to include in a partial response.
1926
+ # @param [String] quota_user
1927
+ # Available to use for quota purposes for server-side applications. Can be any
1928
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
1929
+ # Overrides userIp if both are provided.
1930
+ # @param [String] user_ip
1931
+ # IP address of the site where the request originates. Use this if you want to
1932
+ # enforce per-user limits.
1933
+ # @param [Google::Apis::RequestOptions] options
1934
+ # Request-specific options
1935
+ #
1936
+ # @yield [result, err] Result & error if block supplied
1937
+ # @yieldparam result [Google::Apis::StorageV1::Policy] parsed result object
1938
+ # @yieldparam err [StandardError] error object if request failed
1939
+ #
1940
+ # @return [Google::Apis::StorageV1::Policy]
1941
+ #
1942
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
1943
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
1944
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
1945
+ def set_object_iam_policy(bucket, object, policy_object = nil, generation: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
1946
+ command = make_simple_command(:put, 'b/{bucket}/o/{object}/iam', options)
1947
+ command.request_representation = Google::Apis::StorageV1::Policy::Representation
1948
+ command.request_object = policy_object
1949
+ command.response_representation = Google::Apis::StorageV1::Policy::Representation
1950
+ command.response_class = Google::Apis::StorageV1::Policy
1951
+ command.params['bucket'] = bucket unless bucket.nil?
1952
+ command.params['object'] = object unless object.nil?
1953
+ command.query['generation'] = generation unless generation.nil?
1954
+ command.query['fields'] = fields unless fields.nil?
1955
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
1956
+ command.query['userIp'] = user_ip unless user_ip.nil?
1957
+ execute_or_queue_command(command, &block)
1958
+ end
1959
+
1960
+ # Tests a set of permissions on the given object to see which, if any, are held
1961
+ # by the caller.
1962
+ # @param [String] bucket
1963
+ # Name of the bucket in which the object resides.
1964
+ # @param [String] object
1965
+ # Name of the object. For information about how to URL encode object names to be
1966
+ # path safe, see Encoding URI Path Parts.
1967
+ # @param [Array<String>, String] permissions
1968
+ # Permissions to test.
1969
+ # @param [String] generation
1970
+ # If present, selects a specific revision of this object (as opposed to the
1971
+ # latest version, the default).
1972
+ # @param [String] fields
1973
+ # Selector specifying which fields to include in a partial response.
1974
+ # @param [String] quota_user
1975
+ # Available to use for quota purposes for server-side applications. Can be any
1976
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
1977
+ # Overrides userIp if both are provided.
1978
+ # @param [String] user_ip
1979
+ # IP address of the site where the request originates. Use this if you want to
1980
+ # enforce per-user limits.
1981
+ # @param [Google::Apis::RequestOptions] options
1982
+ # Request-specific options
1983
+ #
1984
+ # @yield [result, err] Result & error if block supplied
1985
+ # @yieldparam result [Google::Apis::StorageV1::TestIamPermissionsResponse] parsed result object
1986
+ # @yieldparam err [StandardError] error object if request failed
1987
+ #
1988
+ # @return [Google::Apis::StorageV1::TestIamPermissionsResponse]
1989
+ #
1990
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
1991
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
1992
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
1993
+ def test_object_iam_permissions(bucket, object, permissions, generation: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
1994
+ command = make_simple_command(:get, 'b/{bucket}/o/{object}/iam/testPermissions', options)
1995
+ command.response_representation = Google::Apis::StorageV1::TestIamPermissionsResponse::Representation
1996
+ command.response_class = Google::Apis::StorageV1::TestIamPermissionsResponse
1997
+ command.params['bucket'] = bucket unless bucket.nil?
1998
+ command.params['object'] = object unless object.nil?
1999
+ command.query['generation'] = generation unless generation.nil?
2000
+ command.query['permissions'] = permissions unless permissions.nil?
2001
+ command.query['fields'] = fields unless fields.nil?
2002
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
2003
+ command.query['userIp'] = user_ip unless user_ip.nil?
2004
+ execute_or_queue_command(command, &block)
2005
+ end
2006
+
1759
2007
  # Updates an object's metadata.
1760
2008
  # @param [String] bucket
1761
2009
  # Name of the bucket in which the object resides.
@@ -27,7 +27,7 @@ module Google
27
27
  # @see https://cloud.google.com/vision/
28
28
  module VisionV1
29
29
  VERSION = 'V1'
30
- REVISION = '20170301'
30
+ REVISION = '20170321'
31
31
 
32
32
  # View and manage your data across Google Cloud Platform services
33
33
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -22,25 +22,25 @@ module Google
22
22
  module Apis
23
23
  module VisionV1
24
24
 
25
- # Entity deduced from similar images on the Internet.
26
- class WebEntity
25
+ # Request for performing Google Cloud Vision API tasks over a user-provided
26
+ # image, with user-requested features.
27
+ class AnnotateImageRequest
27
28
  include Google::Apis::Core::Hashable
28
29
 
29
- # Opaque entity ID.
30
- # Corresponds to the JSON property `entityId`
31
- # @return [String]
32
- attr_accessor :entity_id
30
+ # Client image to perform Google Cloud Vision API tasks over.
31
+ # Corresponds to the JSON property `image`
32
+ # @return [Google::Apis::VisionV1::Image]
33
+ attr_accessor :image
33
34
 
34
- # Canonical description of the entity, in English.
35
- # Corresponds to the JSON property `description`
36
- # @return [String]
37
- attr_accessor :description
35
+ # Requested features.
36
+ # Corresponds to the JSON property `features`
37
+ # @return [Array<Google::Apis::VisionV1::Feature>]
38
+ attr_accessor :features
38
39
 
39
- # Overall relevancy score for the entity.
40
- # Not normalized and not comparable across different image queries.
41
- # Corresponds to the JSON property `score`
42
- # @return [Float]
43
- attr_accessor :score
40
+ # Image context and/or feature-specific parameters.
41
+ # Corresponds to the JSON property `imageContext`
42
+ # @return [Google::Apis::VisionV1::ImageContext]
43
+ attr_accessor :image_context
44
44
 
45
45
  def initialize(**args)
46
46
  update!(**args)
@@ -48,20 +48,71 @@ module Google
48
48
 
49
49
  # Update properties of this object
50
50
  def update!(**args)
51
- @entity_id = args[:entity_id] if args.key?(:entity_id)
52
- @description = args[:description] if args.key?(:description)
53
- @score = args[:score] if args.key?(:score)
51
+ @image = args[:image] if args.key?(:image)
52
+ @features = args[:features] if args.key?(:features)
53
+ @image_context = args[:image_context] if args.key?(:image_context)
54
54
  end
55
55
  end
56
56
 
57
- # A bounding polygon for the detected image annotation.
58
- class BoundingPoly
57
+ # The `Status` type defines a logical error model that is suitable for different
58
+ # programming environments, including REST APIs and RPC APIs. It is used by
59
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
60
+ # - Simple to use and understand for most users
61
+ # - Flexible enough to meet unexpected needs
62
+ # # Overview
63
+ # The `Status` message contains three pieces of data: error code, error message,
64
+ # and error details. The error code should be an enum value of
65
+ # google.rpc.Code, but it may accept additional error codes if needed. The
66
+ # error message should be a developer-facing English message that helps
67
+ # developers *understand* and *resolve* the error. If a localized user-facing
68
+ # error message is needed, put the localized message in the error details or
69
+ # localize it in the client. The optional error details may contain arbitrary
70
+ # information about the error. There is a predefined set of error detail types
71
+ # in the package `google.rpc` which can be used for common error conditions.
72
+ # # Language mapping
73
+ # The `Status` message is the logical representation of the error model, but it
74
+ # is not necessarily the actual wire format. When the `Status` message is
75
+ # exposed in different client libraries and different wire protocols, it can be
76
+ # mapped differently. For example, it will likely be mapped to some exceptions
77
+ # in Java, but more likely mapped to some error codes in C.
78
+ # # Other uses
79
+ # The error model and the `Status` message can be used in a variety of
80
+ # environments, either with or without APIs, to provide a
81
+ # consistent developer experience across different environments.
82
+ # Example uses of this error model include:
83
+ # - Partial errors. If a service needs to return partial errors to the client,
84
+ # it may embed the `Status` in the normal response to indicate the partial
85
+ # errors.
86
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
87
+ # have a `Status` message for error reporting purpose.
88
+ # - Batch operations. If a client uses batch request and batch response, the
89
+ # `Status` message should be used directly inside batch response, one for
90
+ # each error sub-response.
91
+ # - Asynchronous operations. If an API call embeds asynchronous operation
92
+ # results in its response, the status of those operations should be
93
+ # represented directly using the `Status` message.
94
+ # - Logging. If some API errors are stored in logs, the message `Status` could
95
+ # be used directly after any stripping needed for security/privacy reasons.
96
+ class Status
59
97
  include Google::Apis::Core::Hashable
60
98
 
61
- # The bounding polygon vertices.
62
- # Corresponds to the JSON property `vertices`
63
- # @return [Array<Google::Apis::VisionV1::Vertex>]
64
- attr_accessor :vertices
99
+ # The status code, which should be an enum value of google.rpc.Code.
100
+ # Corresponds to the JSON property `code`
101
+ # @return [Fixnum]
102
+ attr_accessor :code
103
+
104
+ # A developer-facing error message, which should be in English. Any
105
+ # user-facing error message should be localized and sent in the
106
+ # google.rpc.Status.details field, or localized by the client.
107
+ # Corresponds to the JSON property `message`
108
+ # @return [String]
109
+ attr_accessor :message
110
+
111
+ # A list of messages that carry the error details. There will be a
112
+ # common set of message types for APIs to use.
113
+ # Corresponds to the JSON property `details`
114
+ # @return [Array<Hash<String,Object>>]
115
+ attr_accessor :details
65
116
 
66
117
  def initialize(**args)
67
118
  update!(**args)
@@ -69,23 +120,97 @@ module Google
69
120
 
70
121
  # Update properties of this object
71
122
  def update!(**args)
72
- @vertices = args[:vertices] if args.key?(:vertices)
123
+ @code = args[:code] if args.key?(:code)
124
+ @message = args[:message] if args.key?(:message)
125
+ @details = args[:details] if args.key?(:details)
73
126
  end
74
127
  end
75
128
 
76
- # Additional information detected on the structural component.
77
- class TextProperty
129
+ # Rectangle determined by min and max `LatLng` pairs.
130
+ class LatLongRect
78
131
  include Google::Apis::Core::Hashable
79
132
 
80
- # A list of detected languages together with confidence.
81
- # Corresponds to the JSON property `detectedLanguages`
82
- # @return [Array<Google::Apis::VisionV1::DetectedLanguage>]
83
- attr_accessor :detected_languages
133
+ # An object representing a latitude/longitude pair. This is expressed as a pair
134
+ # of doubles representing degrees latitude and degrees longitude. Unless
135
+ # specified otherwise, this must conform to the
136
+ # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
137
+ # standard</a>. Values must be within normalized ranges.
138
+ # Example of normalization code in Python:
139
+ # def NormalizeLongitude(longitude):
140
+ # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
141
+ # q, r = divmod(longitude, 360.0)
142
+ # if r > 180.0 or (r == 180.0 and q <= -1.0):
143
+ # return r - 360.0
144
+ # return r
145
+ # def NormalizeLatLng(latitude, longitude):
146
+ # """Wraps decimal degrees latitude and longitude to
147
+ # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
148
+ # r = latitude % 360.0
149
+ # if r <= 90.0:
150
+ # return r, NormalizeLongitude(longitude)
151
+ # elif r >= 270.0:
152
+ # return r - 360, NormalizeLongitude(longitude)
153
+ # else:
154
+ # return 180 - r, NormalizeLongitude(longitude + 180.0)
155
+ # assert 180.0 == NormalizeLongitude(180.0)
156
+ # assert -180.0 == NormalizeLongitude(-180.0)
157
+ # assert -179.0 == NormalizeLongitude(181.0)
158
+ # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
159
+ # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
160
+ # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
161
+ # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
162
+ # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
163
+ # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
164
+ # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
165
+ # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
166
+ # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
167
+ # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
168
+ # The code in logs/storage/validator/logs_validator_traits.cc treats this type
169
+ # as if it were annotated as ST_LOCATION.
170
+ # Corresponds to the JSON property `minLatLng`
171
+ # @return [Google::Apis::VisionV1::LatLng]
172
+ attr_accessor :min_lat_lng
84
173
 
85
- # Detected start or end of a structural component.
86
- # Corresponds to the JSON property `detectedBreak`
87
- # @return [Google::Apis::VisionV1::DetectedBreak]
88
- attr_accessor :detected_break
174
+ # An object representing a latitude/longitude pair. This is expressed as a pair
175
+ # of doubles representing degrees latitude and degrees longitude. Unless
176
+ # specified otherwise, this must conform to the
177
+ # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
178
+ # standard</a>. Values must be within normalized ranges.
179
+ # Example of normalization code in Python:
180
+ # def NormalizeLongitude(longitude):
181
+ # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
182
+ # q, r = divmod(longitude, 360.0)
183
+ # if r > 180.0 or (r == 180.0 and q <= -1.0):
184
+ # return r - 360.0
185
+ # return r
186
+ # def NormalizeLatLng(latitude, longitude):
187
+ # """Wraps decimal degrees latitude and longitude to
188
+ # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
189
+ # r = latitude % 360.0
190
+ # if r <= 90.0:
191
+ # return r, NormalizeLongitude(longitude)
192
+ # elif r >= 270.0:
193
+ # return r - 360, NormalizeLongitude(longitude)
194
+ # else:
195
+ # return 180 - r, NormalizeLongitude(longitude + 180.0)
196
+ # assert 180.0 == NormalizeLongitude(180.0)
197
+ # assert -180.0 == NormalizeLongitude(-180.0)
198
+ # assert -179.0 == NormalizeLongitude(181.0)
199
+ # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
200
+ # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
201
+ # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
202
+ # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
203
+ # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
204
+ # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
205
+ # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
206
+ # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
207
+ # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
208
+ # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
209
+ # The code in logs/storage/validator/logs_validator_traits.cc treats this type
210
+ # as if it were annotated as ST_LOCATION.
211
+ # Corresponds to the JSON property `maxLatLng`
212
+ # @return [Google::Apis::VisionV1::LatLng]
213
+ attr_accessor :max_lat_lng
89
214
 
90
215
  def initialize(**args)
91
216
  update!(**args)
@@ -93,115 +218,50 @@ module Google
93
218
 
94
219
  # Update properties of this object
95
220
  def update!(**args)
96
- @detected_languages = args[:detected_languages] if args.key?(:detected_languages)
97
- @detected_break = args[:detected_break] if args.key?(:detected_break)
221
+ @min_lat_lng = args[:min_lat_lng] if args.key?(:min_lat_lng)
222
+ @max_lat_lng = args[:max_lat_lng] if args.key?(:max_lat_lng)
98
223
  end
99
224
  end
100
225
 
101
- # Response to an image annotation request.
102
- class AnnotateImageResponse
226
+ # A single symbol representation.
227
+ class Symbol
103
228
  include Google::Apis::Core::Hashable
104
229
 
105
- # TextAnnotation contains a structured representation of OCR extracted text.
106
- # The hierarchy of an OCR extracted text structure is like this:
107
- # TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
108
- # Each structural component, starting from Page, may further have their own
109
- # properties. Properties describe detected languages, breaks etc.. Please
110
- # refer to the google.cloud.vision.v1.TextAnnotation.TextProperty message
111
- # definition below for more detail.
112
- # Corresponds to the JSON property `fullTextAnnotation`
113
- # @return [Google::Apis::VisionV1::TextAnnotation]
114
- attr_accessor :full_text_annotation
115
-
116
- # If present, landmark detection has completed successfully.
117
- # Corresponds to the JSON property `landmarkAnnotations`
118
- # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
119
- attr_accessor :landmark_annotations
230
+ # The actual UTF-8 representation of the symbol.
231
+ # Corresponds to the JSON property `text`
232
+ # @return [String]
233
+ attr_accessor :text
120
234
 
121
- # If present, text (OCR) detection has completed successfully.
122
- # Corresponds to the JSON property `textAnnotations`
123
- # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
124
- attr_accessor :text_annotations
235
+ # Additional information detected on the structural component.
236
+ # Corresponds to the JSON property `property`
237
+ # @return [Google::Apis::VisionV1::TextProperty]
238
+ attr_accessor :property
125
239
 
126
- # If present, face detection has completed successfully.
127
- # Corresponds to the JSON property `faceAnnotations`
128
- # @return [Array<Google::Apis::VisionV1::FaceAnnotation>]
129
- attr_accessor :face_annotations
240
+ # A bounding polygon for the detected image annotation.
241
+ # Corresponds to the JSON property `boundingBox`
242
+ # @return [Google::Apis::VisionV1::BoundingPoly]
243
+ attr_accessor :bounding_box
130
244
 
131
- # Stores image properties, such as dominant colors.
132
- # Corresponds to the JSON property `imagePropertiesAnnotation`
133
- # @return [Google::Apis::VisionV1::ImageProperties]
134
- attr_accessor :image_properties_annotation
245
+ def initialize(**args)
246
+ update!(**args)
247
+ end
135
248
 
136
- # If present, logo detection has completed successfully.
137
- # Corresponds to the JSON property `logoAnnotations`
138
- # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
139
- attr_accessor :logo_annotations
249
+ # Update properties of this object
250
+ def update!(**args)
251
+ @text = args[:text] if args.key?(:text)
252
+ @property = args[:property] if args.key?(:property)
253
+ @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
254
+ end
255
+ end
140
256
 
141
- # Relevant information for the image from the Internet.
142
- # Corresponds to the JSON property `webDetection`
143
- # @return [Google::Apis::VisionV1::WebDetection]
144
- attr_accessor :web_detection
145
-
146
- # Set of crop hints that are used to generate new crops when serving images.
147
- # Corresponds to the JSON property `cropHintsAnnotation`
148
- # @return [Google::Apis::VisionV1::CropHintsAnnotation]
149
- attr_accessor :crop_hints_annotation
150
-
151
- # Set of features pertaining to the image, computed by computer vision
152
- # methods over safe-search verticals (for example, adult, spoof, medical,
153
- # violence).
154
- # Corresponds to the JSON property `safeSearchAnnotation`
155
- # @return [Google::Apis::VisionV1::SafeSearchAnnotation]
156
- attr_accessor :safe_search_annotation
157
-
158
- # If present, label detection has completed successfully.
159
- # Corresponds to the JSON property `labelAnnotations`
160
- # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
161
- attr_accessor :label_annotations
257
+ # Set of crop hints that are used to generate new crops when serving images.
258
+ class CropHintsAnnotation
259
+ include Google::Apis::Core::Hashable
162
260
 
163
- # The `Status` type defines a logical error model that is suitable for different
164
- # programming environments, including REST APIs and RPC APIs. It is used by
165
- # [gRPC](https://github.com/grpc). The error model is designed to be:
166
- # - Simple to use and understand for most users
167
- # - Flexible enough to meet unexpected needs
168
- # # Overview
169
- # The `Status` message contains three pieces of data: error code, error message,
170
- # and error details. The error code should be an enum value of
171
- # google.rpc.Code, but it may accept additional error codes if needed. The
172
- # error message should be a developer-facing English message that helps
173
- # developers *understand* and *resolve* the error. If a localized user-facing
174
- # error message is needed, put the localized message in the error details or
175
- # localize it in the client. The optional error details may contain arbitrary
176
- # information about the error. There is a predefined set of error detail types
177
- # in the package `google.rpc` which can be used for common error conditions.
178
- # # Language mapping
179
- # The `Status` message is the logical representation of the error model, but it
180
- # is not necessarily the actual wire format. When the `Status` message is
181
- # exposed in different client libraries and different wire protocols, it can be
182
- # mapped differently. For example, it will likely be mapped to some exceptions
183
- # in Java, but more likely mapped to some error codes in C.
184
- # # Other uses
185
- # The error model and the `Status` message can be used in a variety of
186
- # environments, either with or without APIs, to provide a
187
- # consistent developer experience across different environments.
188
- # Example uses of this error model include:
189
- # - Partial errors. If a service needs to return partial errors to the client,
190
- # it may embed the `Status` in the normal response to indicate the partial
191
- # errors.
192
- # - Workflow errors. A typical workflow has multiple steps. Each step may
193
- # have a `Status` message for error reporting purpose.
194
- # - Batch operations. If a client uses batch request and batch response, the
195
- # `Status` message should be used directly inside batch response, one for
196
- # each error sub-response.
197
- # - Asynchronous operations. If an API call embeds asynchronous operation
198
- # results in its response, the status of those operations should be
199
- # represented directly using the `Status` message.
200
- # - Logging. If some API errors are stored in logs, the message `Status` could
201
- # be used directly after any stripping needed for security/privacy reasons.
202
- # Corresponds to the JSON property `error`
203
- # @return [Google::Apis::VisionV1::Status]
204
- attr_accessor :error
261
+ # Crop hint results.
262
+ # Corresponds to the JSON property `cropHints`
263
+ # @return [Array<Google::Apis::VisionV1::CropHint>]
264
+ attr_accessor :crop_hints
205
265
 
206
266
  def initialize(**args)
207
267
  update!(**args)
@@ -209,33 +269,59 @@ module Google
209
269
 
210
270
  # Update properties of this object
211
271
  def update!(**args)
212
- @full_text_annotation = args[:full_text_annotation] if args.key?(:full_text_annotation)
213
- @landmark_annotations = args[:landmark_annotations] if args.key?(:landmark_annotations)
214
- @text_annotations = args[:text_annotations] if args.key?(:text_annotations)
215
- @face_annotations = args[:face_annotations] if args.key?(:face_annotations)
216
- @image_properties_annotation = args[:image_properties_annotation] if args.key?(:image_properties_annotation)
217
- @logo_annotations = args[:logo_annotations] if args.key?(:logo_annotations)
218
- @web_detection = args[:web_detection] if args.key?(:web_detection)
219
- @crop_hints_annotation = args[:crop_hints_annotation] if args.key?(:crop_hints_annotation)
220
- @safe_search_annotation = args[:safe_search_annotation] if args.key?(:safe_search_annotation)
221
- @label_annotations = args[:label_annotations] if args.key?(:label_annotations)
222
- @error = args[:error] if args.key?(:error)
272
+ @crop_hints = args[:crop_hints] if args.key?(:crop_hints)
223
273
  end
224
274
  end
225
275
 
226
- # Parameters for crop hints annotation request.
227
- class CropHintsParams
276
+ # An object representing a latitude/longitude pair. This is expressed as a pair
277
+ # of doubles representing degrees latitude and degrees longitude. Unless
278
+ # specified otherwise, this must conform to the
279
+ # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
280
+ # standard</a>. Values must be within normalized ranges.
281
+ # Example of normalization code in Python:
282
+ # def NormalizeLongitude(longitude):
283
+ # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
284
+ # q, r = divmod(longitude, 360.0)
285
+ # if r > 180.0 or (r == 180.0 and q <= -1.0):
286
+ # return r - 360.0
287
+ # return r
288
+ # def NormalizeLatLng(latitude, longitude):
289
+ # """Wraps decimal degrees latitude and longitude to
290
+ # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
291
+ # r = latitude % 360.0
292
+ # if r <= 90.0:
293
+ # return r, NormalizeLongitude(longitude)
294
+ # elif r >= 270.0:
295
+ # return r - 360, NormalizeLongitude(longitude)
296
+ # else:
297
+ # return 180 - r, NormalizeLongitude(longitude + 180.0)
298
+ # assert 180.0 == NormalizeLongitude(180.0)
299
+ # assert -180.0 == NormalizeLongitude(-180.0)
300
+ # assert -179.0 == NormalizeLongitude(181.0)
301
+ # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
302
+ # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
303
+ # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
304
+ # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
305
+ # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
306
+ # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
307
+ # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
308
+ # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
309
+ # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
310
+ # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
311
+ # The code in logs/storage/validator/logs_validator_traits.cc treats this type
312
+ # as if it were annotated as ST_LOCATION.
313
+ class LatLng
228
314
  include Google::Apis::Core::Hashable
229
315
 
230
- # Aspect ratios in floats, representing the ratio of the width to the height
231
- # of the image. For example, if the desired aspect ratio is 4/3, the
232
- # corresponding float value should be 1.33333. If not specified, the
233
- # best possible crop is returned. The number of provided aspect ratios is
234
- # limited to a maximum of 16; any aspect ratios provided after the 16th are
235
- # ignored.
236
- # Corresponds to the JSON property `aspectRatios`
237
- # @return [Array<Float>]
238
- attr_accessor :aspect_ratios
316
+ # The latitude in degrees. It must be in the range [-90.0, +90.0].
317
+ # Corresponds to the JSON property `latitude`
318
+ # @return [Float]
319
+ attr_accessor :latitude
320
+
321
+ # The longitude in degrees. It must be in the range [-180.0, +180.0].
322
+ # Corresponds to the JSON property `longitude`
323
+ # @return [Float]
324
+ attr_accessor :longitude
239
325
 
240
326
  def initialize(**args)
241
327
  update!(**args)
@@ -243,33 +329,140 @@ module Google
243
329
 
244
330
  # Update properties of this object
245
331
  def update!(**args)
246
- @aspect_ratios = args[:aspect_ratios] if args.key?(:aspect_ratios)
332
+ @latitude = args[:latitude] if args.key?(:latitude)
333
+ @longitude = args[:longitude] if args.key?(:longitude)
247
334
  end
248
335
  end
249
336
 
250
- # Logical element on the page.
251
- class Block
337
+ # Represents a color in the RGBA color space. This representation is designed
338
+ # for simplicity of conversion to/from color representations in various
339
+ # languages over compactness; for example, the fields of this representation
340
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
341
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
342
+ # method in iOS; and, with just a little work, it can be easily formatted into
343
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
344
+ # Example (Java):
345
+ # import com.google.type.Color;
346
+ # // ...
347
+ # public static java.awt.Color fromProto(Color protocolor) `
348
+ # float alpha = protocolor.hasAlpha()
349
+ # ? protocolor.getAlpha().getValue()
350
+ # : 1.0;
351
+ # return new java.awt.Color(
352
+ # protocolor.getRed(),
353
+ # protocolor.getGreen(),
354
+ # protocolor.getBlue(),
355
+ # alpha);
356
+ # `
357
+ # public static Color toProto(java.awt.Color color) `
358
+ # float red = (float) color.getRed();
359
+ # float green = (float) color.getGreen();
360
+ # float blue = (float) color.getBlue();
361
+ # float denominator = 255.0;
362
+ # Color.Builder resultBuilder =
363
+ # Color
364
+ # .newBuilder()
365
+ # .setRed(red / denominator)
366
+ # .setGreen(green / denominator)
367
+ # .setBlue(blue / denominator);
368
+ # int alpha = color.getAlpha();
369
+ # if (alpha != 255) `
370
+ # result.setAlpha(
371
+ # FloatValue
372
+ # .newBuilder()
373
+ # .setValue(((float) alpha) / denominator)
374
+ # .build());
375
+ # `
376
+ # return resultBuilder.build();
377
+ # `
378
+ # // ...
379
+ # Example (iOS / Obj-C):
380
+ # // ...
381
+ # static UIColor* fromProto(Color* protocolor) `
382
+ # float red = [protocolor red];
383
+ # float green = [protocolor green];
384
+ # float blue = [protocolor blue];
385
+ # FloatValue* alpha_wrapper = [protocolor alpha];
386
+ # float alpha = 1.0;
387
+ # if (alpha_wrapper != nil) `
388
+ # alpha = [alpha_wrapper value];
389
+ # `
390
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
391
+ # `
392
+ # static Color* toProto(UIColor* color) `
393
+ # CGFloat red, green, blue, alpha;
394
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) `
395
+ # return nil;
396
+ # `
397
+ # Color* result = [Color alloc] init];
398
+ # [result setRed:red];
399
+ # [result setGreen:green];
400
+ # [result setBlue:blue];
401
+ # if (alpha <= 0.9999) `
402
+ # [result setAlpha:floatWrapperWithValue(alpha)];
403
+ # `
404
+ # [result autorelease];
405
+ # return result;
406
+ # `
407
+ # // ...
408
+ # Example (JavaScript):
409
+ # // ...
410
+ # var protoToCssColor = function(rgb_color) `
411
+ # var redFrac = rgb_color.red || 0.0;
412
+ # var greenFrac = rgb_color.green || 0.0;
413
+ # var blueFrac = rgb_color.blue || 0.0;
414
+ # var red = Math.floor(redFrac * 255);
415
+ # var green = Math.floor(greenFrac * 255);
416
+ # var blue = Math.floor(blueFrac * 255);
417
+ # if (!('alpha' in rgb_color)) `
418
+ # return rgbToCssColor_(red, green, blue);
419
+ # `
420
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
421
+ # var rgbParams = [red, green, blue].join(',');
422
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
423
+ # `;
424
+ # var rgbToCssColor_ = function(red, green, blue) `
425
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
426
+ # var hexString = rgbNumber.toString(16);
427
+ # var missingZeros = 6 - hexString.length;
428
+ # var resultBuilder = ['#'];
429
+ # for (var i = 0; i < missingZeros; i++) `
430
+ # resultBuilder.push('0');
431
+ # `
432
+ # resultBuilder.push(hexString);
433
+ # return resultBuilder.join('');
434
+ # `;
435
+ # // ...
436
+ class Color
252
437
  include Google::Apis::Core::Hashable
253
438
 
254
- # Additional information detected on the structural component.
255
- # Corresponds to the JSON property `property`
256
- # @return [Google::Apis::VisionV1::TextProperty]
257
- attr_accessor :property
439
+ # The amount of green in the color as a value in the interval [0, 1].
440
+ # Corresponds to the JSON property `green`
441
+ # @return [Float]
442
+ attr_accessor :green
258
443
 
259
- # Detected block type (text, image etc) for this block.
260
- # Corresponds to the JSON property `blockType`
261
- # @return [String]
262
- attr_accessor :block_type
444
+ # The amount of blue in the color as a value in the interval [0, 1].
445
+ # Corresponds to the JSON property `blue`
446
+ # @return [Float]
447
+ attr_accessor :blue
263
448
 
264
- # A bounding polygon for the detected image annotation.
265
- # Corresponds to the JSON property `boundingBox`
266
- # @return [Google::Apis::VisionV1::BoundingPoly]
267
- attr_accessor :bounding_box
449
+ # The fraction of this color that should be applied to the pixel. That is,
450
+ # the final pixel color is defined by the equation:
451
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
452
+ # This means that a value of 1.0 corresponds to a solid color, whereas
453
+ # a value of 0.0 corresponds to a completely transparent color. This
454
+ # uses a wrapper message rather than a simple float scalar so that it is
455
+ # possible to distinguish between a default value and the value being unset.
456
+ # If omitted, this color object is to be rendered as a solid color
457
+ # (as if the alpha value had been explicitly given with a value of 1.0).
458
+ # Corresponds to the JSON property `alpha`
459
+ # @return [Float]
460
+ attr_accessor :alpha
268
461
 
269
- # List of paragraphs in this block (if this blocks is of type text).
270
- # Corresponds to the JSON property `paragraphs`
271
- # @return [Array<Google::Apis::VisionV1::Paragraph>]
272
- attr_accessor :paragraphs
462
+ # The amount of red in the color as a value in the interval [0, 1].
463
+ # Corresponds to the JSON property `red`
464
+ # @return [Float]
465
+ attr_accessor :red
273
466
 
274
467
  def initialize(**args)
275
468
  update!(**args)
@@ -277,57 +470,21 @@ module Google
277
470
 
278
471
  # Update properties of this object
279
472
  def update!(**args)
280
- @property = args[:property] if args.key?(:property)
281
- @block_type = args[:block_type] if args.key?(:block_type)
282
- @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
283
- @paragraphs = args[:paragraphs] if args.key?(:paragraphs)
473
+ @green = args[:green] if args.key?(:green)
474
+ @blue = args[:blue] if args.key?(:blue)
475
+ @alpha = args[:alpha] if args.key?(:alpha)
476
+ @red = args[:red] if args.key?(:red)
284
477
  end
285
478
  end
286
479
 
287
- # Detected entity location information.
288
- class LocationInfo
480
+ # Stores image properties, such as dominant colors.
481
+ class ImageProperties
289
482
  include Google::Apis::Core::Hashable
290
483
 
291
- # An object representing a latitude/longitude pair. This is expressed as a pair
292
- # of doubles representing degrees latitude and degrees longitude. Unless
293
- # specified otherwise, this must conform to the
294
- # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
295
- # standard</a>. Values must be within normalized ranges.
296
- # Example of normalization code in Python:
297
- # def NormalizeLongitude(longitude):
298
- # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
299
- # q, r = divmod(longitude, 360.0)
300
- # if r > 180.0 or (r == 180.0 and q <= -1.0):
301
- # return r - 360.0
302
- # return r
303
- # def NormalizeLatLng(latitude, longitude):
304
- # """Wraps decimal degrees latitude and longitude to
305
- # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
306
- # r = latitude % 360.0
307
- # if r <= 90.0:
308
- # return r, NormalizeLongitude(longitude)
309
- # elif r >= 270.0:
310
- # return r - 360, NormalizeLongitude(longitude)
311
- # else:
312
- # return 180 - r, NormalizeLongitude(longitude + 180.0)
313
- # assert 180.0 == NormalizeLongitude(180.0)
314
- # assert -180.0 == NormalizeLongitude(-180.0)
315
- # assert -179.0 == NormalizeLongitude(181.0)
316
- # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
317
- # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
318
- # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
319
- # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
320
- # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
321
- # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
322
- # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
323
- # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
324
- # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
325
- # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
326
- # The code in logs/storage/validator/logs_validator_traits.cc treats this type
327
- # as if it were annotated as ST_LOCATION.
328
- # Corresponds to the JSON property `latLng`
329
- # @return [Google::Apis::VisionV1::LatLng]
330
- attr_accessor :lat_lng
484
+ # Set of dominant colors and their corresponding scores.
485
+ # Corresponds to the JSON property `dominantColors`
486
+ # @return [Google::Apis::VisionV1::DominantColorsAnnotation]
487
+ attr_accessor :dominant_colors
331
488
 
332
489
  def initialize(**args)
333
490
  update!(**args)
@@ -335,37 +492,26 @@ module Google
335
492
 
336
493
  # Update properties of this object
337
494
  def update!(**args)
338
- @lat_lng = args[:lat_lng] if args.key?(:lat_lng)
495
+ @dominant_colors = args[:dominant_colors] if args.key?(:dominant_colors)
339
496
  end
340
497
  end
341
498
 
342
- # External image source (Google Cloud Storage image location).
343
- class ImageSource
499
+ # Users describe the type of Google Cloud Vision API tasks to perform over
500
+ # images by using *Feature*s. Each Feature indicates a type of image
501
+ # detection task to perform. Features encode the Cloud Vision API
502
+ # vertical to operate on and the number of top-scoring results to return.
503
+ class Feature
344
504
  include Google::Apis::Core::Hashable
345
505
 
346
- # NOTE: For new code `image_uri` below is preferred.
347
- # Google Cloud Storage image URI, which must be in the following form:
348
- # `gs://bucket_name/object_name` (for details, see
349
- # [Google Cloud Storage Request
350
- # URIs](https://cloud.google.com/storage/docs/reference-uris)).
351
- # NOTE: Cloud Storage object versioning is not supported.
352
- # Corresponds to the JSON property `gcsImageUri`
506
+ # The feature type.
507
+ # Corresponds to the JSON property `type`
353
508
  # @return [String]
354
- attr_accessor :gcs_image_uri
509
+ attr_accessor :type
355
510
 
356
- # Image URI which supports:
357
- # 1) Google Cloud Storage image URI, which must be in the following form:
358
- # `gs://bucket_name/object_name` (for details, see
359
- # [Google Cloud Storage Request
360
- # URIs](https://cloud.google.com/storage/docs/reference-uris)).
361
- # NOTE: Cloud Storage object versioning is not supported.
362
- # 2) Publicly accessible image HTTP/HTTPS URL.
363
- # This is preferred over the legacy `gcs_image_uri` above. When both
364
- # `gcs_image_uri` and `image_uri` are specified, `image_uri` takes
365
- # precedence.
366
- # Corresponds to the JSON property `imageUri`
367
- # @return [String]
368
- attr_accessor :image_uri
511
+ # Maximum number of results of this type.
512
+ # Corresponds to the JSON property `maxResults`
513
+ # @return [Fixnum]
514
+ attr_accessor :max_results
369
515
 
370
516
  def initialize(**args)
371
517
  update!(**args)
@@ -373,29 +519,38 @@ module Google
373
519
 
374
520
  # Update properties of this object
375
521
  def update!(**args)
376
- @gcs_image_uri = args[:gcs_image_uri] if args.key?(:gcs_image_uri)
377
- @image_uri = args[:image_uri] if args.key?(:image_uri)
522
+ @type = args[:type] if args.key?(:type)
523
+ @max_results = args[:max_results] if args.key?(:max_results)
378
524
  end
379
525
  end
380
526
 
381
- # A `Property` consists of a user-supplied name/value pair.
382
- class Property
527
+ # Set of features pertaining to the image, computed by computer vision
528
+ # methods over safe-search verticals (for example, adult, spoof, medical,
529
+ # violence).
530
+ class SafeSearchAnnotation
383
531
  include Google::Apis::Core::Hashable
384
532
 
385
- # Value of the property.
386
- # Corresponds to the JSON property `value`
533
+ # Represents the adult content likelihood for the image.
534
+ # Corresponds to the JSON property `adult`
535
+ # @return [String]
536
+ attr_accessor :adult
537
+
538
+ # Spoof likelihood. The likelihood that an modification
539
+ # was made to the image's canonical version to make it appear
540
+ # funny or offensive.
541
+ # Corresponds to the JSON property `spoof`
387
542
  # @return [String]
388
- attr_accessor :value
543
+ attr_accessor :spoof
389
544
 
390
- # Value of numeric properties.
391
- # Corresponds to the JSON property `uint64Value`
545
+ # Likelihood that this is a medical image.
546
+ # Corresponds to the JSON property `medical`
392
547
  # @return [String]
393
- attr_accessor :uint64_value
548
+ attr_accessor :medical
394
549
 
395
- # Name of the property.
396
- # Corresponds to the JSON property `name`
550
+ # Violence likelihood.
551
+ # Corresponds to the JSON property `violence`
397
552
  # @return [String]
398
- attr_accessor :name
553
+ attr_accessor :violence
399
554
 
400
555
  def initialize(**args)
401
556
  update!(**args)
@@ -403,39 +558,21 @@ module Google
403
558
 
404
559
  # Update properties of this object
405
560
  def update!(**args)
406
- @value = args[:value] if args.key?(:value)
407
- @uint64_value = args[:uint64_value] if args.key?(:uint64_value)
408
- @name = args[:name] if args.key?(:name)
561
+ @adult = args[:adult] if args.key?(:adult)
562
+ @spoof = args[:spoof] if args.key?(:spoof)
563
+ @medical = args[:medical] if args.key?(:medical)
564
+ @violence = args[:violence] if args.key?(:violence)
409
565
  end
410
566
  end
411
567
 
412
- # Relevant information for the image from the Internet.
413
- class WebDetection
568
+ # Set of dominant colors and their corresponding scores.
569
+ class DominantColorsAnnotation
414
570
  include Google::Apis::Core::Hashable
415
571
 
416
- # Partial matching images from the Internet.
417
- # Those images are similar enough to share some key-point features. For
418
- # example an original image will likely have partial matching for its crops.
419
- # Corresponds to the JSON property `partialMatchingImages`
420
- # @return [Array<Google::Apis::VisionV1::WebImage>]
421
- attr_accessor :partial_matching_images
422
-
423
- # Fully matching images from the Internet.
424
- # They're definite neardups and most often a copy of the query image with
425
- # merely a size change.
426
- # Corresponds to the JSON property `fullMatchingImages`
427
- # @return [Array<Google::Apis::VisionV1::WebImage>]
428
- attr_accessor :full_matching_images
429
-
430
- # Deduced entities from similar images on the Internet.
431
- # Corresponds to the JSON property `webEntities`
432
- # @return [Array<Google::Apis::VisionV1::WebEntity>]
433
- attr_accessor :web_entities
434
-
435
- # Web pages containing the matching images from the Internet.
436
- # Corresponds to the JSON property `pagesWithMatchingImages`
437
- # @return [Array<Google::Apis::VisionV1::WebPage>]
438
- attr_accessor :pages_with_matching_images
572
+ # RGB color values with their score and pixel fraction.
573
+ # Corresponds to the JSON property `colors`
574
+ # @return [Array<Google::Apis::VisionV1::ColorInfo>]
575
+ attr_accessor :colors
439
576
 
440
577
  def initialize(**args)
441
578
  update!(**args)
@@ -443,21 +580,29 @@ module Google
443
580
 
444
581
  # Update properties of this object
445
582
  def update!(**args)
446
- @partial_matching_images = args[:partial_matching_images] if args.key?(:partial_matching_images)
447
- @full_matching_images = args[:full_matching_images] if args.key?(:full_matching_images)
448
- @web_entities = args[:web_entities] if args.key?(:web_entities)
449
- @pages_with_matching_images = args[:pages_with_matching_images] if args.key?(:pages_with_matching_images)
583
+ @colors = args[:colors] if args.key?(:colors)
450
584
  end
451
585
  end
452
586
 
453
- # Response to a batch image annotation request.
454
- class BatchAnnotateImagesResponse
587
+ # TextAnnotation contains a structured representation of OCR extracted text.
588
+ # The hierarchy of an OCR extracted text structure is like this:
589
+ # TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
590
+ # Each structural component, starting from Page, may further have their own
591
+ # properties. Properties describe detected languages, breaks etc.. Please
592
+ # refer to the google.cloud.vision.v1.TextAnnotation.TextProperty message
593
+ # definition below for more detail.
594
+ class TextAnnotation
455
595
  include Google::Apis::Core::Hashable
456
596
 
457
- # Individual responses to image annotation requests within the batch.
458
- # Corresponds to the JSON property `responses`
459
- # @return [Array<Google::Apis::VisionV1::AnnotateImageResponse>]
460
- attr_accessor :responses
597
+ # List of pages detected by OCR.
598
+ # Corresponds to the JSON property `pages`
599
+ # @return [Array<Google::Apis::VisionV1::Page>]
600
+ attr_accessor :pages
601
+
602
+ # UTF-8 text detected on the pages.
603
+ # Corresponds to the JSON property `text`
604
+ # @return [String]
605
+ attr_accessor :text
461
606
 
462
607
  def initialize(**args)
463
608
  update!(**args)
@@ -465,30 +610,25 @@ module Google
465
610
 
466
611
  # Update properties of this object
467
612
  def update!(**args)
468
- @responses = args[:responses] if args.key?(:responses)
613
+ @pages = args[:pages] if args.key?(:pages)
614
+ @text = args[:text] if args.key?(:text)
469
615
  end
470
616
  end
471
617
 
472
- # A 3D position in the image, used primarily for Face detection landmarks.
473
- # A valid Position must have both x and y coordinates.
474
- # The position coordinates are in the same scale as the original image.
475
- class Position
618
+ # A vertex represents a 2D point in the image.
619
+ # NOTE: the vertex coordinates are in the same scale as the original image.
620
+ class Vertex
476
621
  include Google::Apis::Core::Hashable
477
622
 
478
- # Y coordinate.
479
- # Corresponds to the JSON property `y`
480
- # @return [Float]
481
- attr_accessor :y
482
-
483
623
  # X coordinate.
484
624
  # Corresponds to the JSON property `x`
485
- # @return [Float]
625
+ # @return [Fixnum]
486
626
  attr_accessor :x
487
627
 
488
- # Z coordinate (or depth).
489
- # Corresponds to the JSON property `z`
490
- # @return [Float]
491
- attr_accessor :z
628
+ # Y coordinate.
629
+ # Corresponds to the JSON property `y`
630
+ # @return [Fixnum]
631
+ attr_accessor :y
492
632
 
493
633
  def initialize(**args)
494
634
  update!(**args)
@@ -496,26 +636,26 @@ module Google
496
636
 
497
637
  # Update properties of this object
498
638
  def update!(**args)
499
- @y = args[:y] if args.key?(:y)
500
639
  @x = args[:x] if args.key?(:x)
501
- @z = args[:z] if args.key?(:z)
640
+ @y = args[:y] if args.key?(:y)
502
641
  end
503
642
  end
504
643
 
505
- # Metadata for web pages.
506
- class WebPage
644
+ # Detected language for a structural component.
645
+ class DetectedLanguage
507
646
  include Google::Apis::Core::Hashable
508
647
 
509
- # The result web page URL.
510
- # Corresponds to the JSON property `url`
511
- # @return [String]
512
- attr_accessor :url
513
-
514
- # Overall relevancy score for the web page.
515
- # Not normalized and not comparable across different image queries.
516
- # Corresponds to the JSON property `score`
648
+ # Confidence of detected language. Range [0, 1].
649
+ # Corresponds to the JSON property `confidence`
517
650
  # @return [Float]
518
- attr_accessor :score
651
+ attr_accessor :confidence
652
+
653
+ # The BCP-47 language code, such as "en-US" or "sr-Latn". For more
654
+ # information, see
655
+ # http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
656
+ # Corresponds to the JSON property `languageCode`
657
+ # @return [String]
658
+ attr_accessor :language_code
519
659
 
520
660
  def initialize(**args)
521
661
  update!(**args)
@@ -523,126 +663,27 @@ module Google
523
663
 
524
664
  # Update properties of this object
525
665
  def update!(**args)
526
- @url = args[:url] if args.key?(:url)
527
- @score = args[:score] if args.key?(:score)
666
+ @confidence = args[:confidence] if args.key?(:confidence)
667
+ @language_code = args[:language_code] if args.key?(:language_code)
528
668
  end
529
669
  end
530
670
 
531
- # Color information consists of RGB channels, score, and the fraction of
532
- # the image that the color occupies in the image.
533
- class ColorInfo
671
+ # Entity deduced from similar images on the Internet.
672
+ class WebEntity
534
673
  include Google::Apis::Core::Hashable
535
674
 
536
- # The fraction of pixels the color occupies in the image.
537
- # Value in range [0, 1].
538
- # Corresponds to the JSON property `pixelFraction`
539
- # @return [Float]
540
- attr_accessor :pixel_fraction
675
+ # Opaque entity ID.
676
+ # Corresponds to the JSON property `entityId`
677
+ # @return [String]
678
+ attr_accessor :entity_id
541
679
 
542
- # Represents a color in the RGBA color space. This representation is designed
543
- # for simplicity of conversion to/from color representations in various
544
- # languages over compactness; for example, the fields of this representation
545
- # can be trivially provided to the constructor of "java.awt.Color" in Java; it
546
- # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
547
- # method in iOS; and, with just a little work, it can be easily formatted into
548
- # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
549
- # Example (Java):
550
- # import com.google.type.Color;
551
- # // ...
552
- # public static java.awt.Color fromProto(Color protocolor) `
553
- # float alpha = protocolor.hasAlpha()
554
- # ? protocolor.getAlpha().getValue()
555
- # : 1.0;
556
- # return new java.awt.Color(
557
- # protocolor.getRed(),
558
- # protocolor.getGreen(),
559
- # protocolor.getBlue(),
560
- # alpha);
561
- # `
562
- # public static Color toProto(java.awt.Color color) `
563
- # float red = (float) color.getRed();
564
- # float green = (float) color.getGreen();
565
- # float blue = (float) color.getBlue();
566
- # float denominator = 255.0;
567
- # Color.Builder resultBuilder =
568
- # Color
569
- # .newBuilder()
570
- # .setRed(red / denominator)
571
- # .setGreen(green / denominator)
572
- # .setBlue(blue / denominator);
573
- # int alpha = color.getAlpha();
574
- # if (alpha != 255) `
575
- # result.setAlpha(
576
- # FloatValue
577
- # .newBuilder()
578
- # .setValue(((float) alpha) / denominator)
579
- # .build());
580
- # `
581
- # return resultBuilder.build();
582
- # `
583
- # // ...
584
- # Example (iOS / Obj-C):
585
- # // ...
586
- # static UIColor* fromProto(Color* protocolor) `
587
- # float red = [protocolor red];
588
- # float green = [protocolor green];
589
- # float blue = [protocolor blue];
590
- # FloatValue* alpha_wrapper = [protocolor alpha];
591
- # float alpha = 1.0;
592
- # if (alpha_wrapper != nil) `
593
- # alpha = [alpha_wrapper value];
594
- # `
595
- # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
596
- # `
597
- # static Color* toProto(UIColor* color) `
598
- # CGFloat red, green, blue, alpha;
599
- # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) `
600
- # return nil;
601
- # `
602
- # Color* result = [Color alloc] init];
603
- # [result setRed:red];
604
- # [result setGreen:green];
605
- # [result setBlue:blue];
606
- # if (alpha <= 0.9999) `
607
- # [result setAlpha:floatWrapperWithValue(alpha)];
608
- # `
609
- # [result autorelease];
610
- # return result;
611
- # `
612
- # // ...
613
- # Example (JavaScript):
614
- # // ...
615
- # var protoToCssColor = function(rgb_color) `
616
- # var redFrac = rgb_color.red || 0.0;
617
- # var greenFrac = rgb_color.green || 0.0;
618
- # var blueFrac = rgb_color.blue || 0.0;
619
- # var red = Math.floor(redFrac * 255);
620
- # var green = Math.floor(greenFrac * 255);
621
- # var blue = Math.floor(blueFrac * 255);
622
- # if (!('alpha' in rgb_color)) `
623
- # return rgbToCssColor_(red, green, blue);
624
- # `
625
- # var alphaFrac = rgb_color.alpha.value || 0.0;
626
- # var rgbParams = [red, green, blue].join(',');
627
- # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
628
- # `;
629
- # var rgbToCssColor_ = function(red, green, blue) `
630
- # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
631
- # var hexString = rgbNumber.toString(16);
632
- # var missingZeros = 6 - hexString.length;
633
- # var resultBuilder = ['#'];
634
- # for (var i = 0; i < missingZeros; i++) `
635
- # resultBuilder.push('0');
636
- # `
637
- # resultBuilder.push(hexString);
638
- # return resultBuilder.join('');
639
- # `;
640
- # // ...
641
- # Corresponds to the JSON property `color`
642
- # @return [Google::Apis::VisionV1::Color]
643
- attr_accessor :color
680
+ # Canonical description of the entity, in English.
681
+ # Corresponds to the JSON property `description`
682
+ # @return [String]
683
+ attr_accessor :description
644
684
 
645
- # Image-specific score for this color. Value in range [0, 1].
685
+ # Overall relevancy score for the entity.
686
+ # Not normalized and not comparable across different image queries.
646
687
  # Corresponds to the JSON property `score`
647
688
  # @return [Float]
648
689
  attr_accessor :score
@@ -653,75 +694,25 @@ module Google
653
694
 
654
695
  # Update properties of this object
655
696
  def update!(**args)
656
- @pixel_fraction = args[:pixel_fraction] if args.key?(:pixel_fraction)
657
- @color = args[:color] if args.key?(:color)
697
+ @entity_id = args[:entity_id] if args.key?(:entity_id)
698
+ @description = args[:description] if args.key?(:description)
658
699
  @score = args[:score] if args.key?(:score)
659
700
  end
660
701
  end
661
702
 
662
- # Set of detected entity features.
663
- class EntityAnnotation
703
+ # Additional information detected on the structural component.
704
+ class TextProperty
664
705
  include Google::Apis::Core::Hashable
665
706
 
666
- # Some entities may have optional user-supplied `Property` (name/value)
667
- # fields, such a score or string that qualifies the entity.
668
- # Corresponds to the JSON property `properties`
669
- # @return [Array<Google::Apis::VisionV1::Property>]
670
- attr_accessor :properties
671
-
672
- # Overall score of the result. Range [0, 1].
673
- # Corresponds to the JSON property `score`
674
- # @return [Float]
675
- attr_accessor :score
676
-
677
- # The location information for the detected entity. Multiple
678
- # `LocationInfo` elements can be present because one location may
679
- # indicate the location of the scene in the image, and another location
680
- # may indicate the location of the place where the image was taken.
681
- # Location information is usually present for landmarks.
682
- # Corresponds to the JSON property `locations`
683
- # @return [Array<Google::Apis::VisionV1::LocationInfo>]
684
- attr_accessor :locations
685
-
686
- # Opaque entity ID. Some IDs may be available in
687
- # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-
688
- # graph/).
689
- # Corresponds to the JSON property `mid`
690
- # @return [String]
691
- attr_accessor :mid
692
-
693
- # The accuracy of the entity detection in an image.
694
- # For example, for an image in which the "Eiffel Tower" entity is detected,
695
- # this field represents the confidence that there is a tower in the query
696
- # image. Range [0, 1].
697
- # Corresponds to the JSON property `confidence`
698
- # @return [Float]
699
- attr_accessor :confidence
700
-
701
- # A bounding polygon for the detected image annotation.
702
- # Corresponds to the JSON property `boundingPoly`
703
- # @return [Google::Apis::VisionV1::BoundingPoly]
704
- attr_accessor :bounding_poly
705
-
706
- # The language code for the locale in which the entity textual
707
- # `description` is expressed.
708
- # Corresponds to the JSON property `locale`
709
- # @return [String]
710
- attr_accessor :locale
711
-
712
- # Entity textual description, expressed in its `locale` language.
713
- # Corresponds to the JSON property `description`
714
- # @return [String]
715
- attr_accessor :description
707
+ # Detected start or end of a structural component.
708
+ # Corresponds to the JSON property `detectedBreak`
709
+ # @return [Google::Apis::VisionV1::DetectedBreak]
710
+ attr_accessor :detected_break
716
711
 
717
- # The relevancy of the ICA (Image Content Annotation) label to the
718
- # image. For example, the relevancy of "tower" is likely higher to an image
719
- # containing the detected "Eiffel Tower" than to an image containing a
720
- # detected distant towering building, even though the confidence that
721
- # there is a tower in each image may be the same. Range [0, 1].
722
- # Corresponds to the JSON property `topicality`
723
- # @return [Float]
724
- attr_accessor :topicality
712
+ # A list of detected languages together with confidence.
713
+ # Corresponds to the JSON property `detectedLanguages`
714
+ # @return [Array<Google::Apis::VisionV1::DetectedLanguage>]
715
+ attr_accessor :detected_languages
725
716
 
726
717
  def initialize(**args)
727
718
  update!(**args)
@@ -729,37 +720,19 @@ module Google
729
720
 
730
721
  # Update properties of this object
731
722
  def update!(**args)
732
- @properties = args[:properties] if args.key?(:properties)
733
- @score = args[:score] if args.key?(:score)
734
- @locations = args[:locations] if args.key?(:locations)
735
- @mid = args[:mid] if args.key?(:mid)
736
- @confidence = args[:confidence] if args.key?(:confidence)
737
- @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
738
- @locale = args[:locale] if args.key?(:locale)
739
- @description = args[:description] if args.key?(:description)
740
- @topicality = args[:topicality] if args.key?(:topicality)
723
+ @detected_break = args[:detected_break] if args.key?(:detected_break)
724
+ @detected_languages = args[:detected_languages] if args.key?(:detected_languages)
741
725
  end
742
726
  end
743
727
 
744
- # Single crop hint that is used to generate a new crop when serving an image.
745
- class CropHint
728
+ # A bounding polygon for the detected image annotation.
729
+ class BoundingPoly
746
730
  include Google::Apis::Core::Hashable
747
731
 
748
- # Confidence of this being a salient region. Range [0, 1].
749
- # Corresponds to the JSON property `confidence`
750
- # @return [Float]
751
- attr_accessor :confidence
752
-
753
- # Fraction of importance of this salient region with respect to the original
754
- # image.
755
- # Corresponds to the JSON property `importanceFraction`
756
- # @return [Float]
757
- attr_accessor :importance_fraction
758
-
759
- # A bounding polygon for the detected image annotation.
760
- # Corresponds to the JSON property `boundingPoly`
761
- # @return [Google::Apis::VisionV1::BoundingPoly]
762
- attr_accessor :bounding_poly
732
+ # The bounding polygon vertices.
733
+ # Corresponds to the JSON property `vertices`
734
+ # @return [Array<Google::Apis::VisionV1::Vertex>]
735
+ attr_accessor :vertices
763
736
 
764
737
  def initialize(**args)
765
738
  update!(**args)
@@ -767,31 +740,114 @@ module Google
767
740
 
768
741
  # Update properties of this object
769
742
  def update!(**args)
770
- @confidence = args[:confidence] if args.key?(:confidence)
771
- @importance_fraction = args[:importance_fraction] if args.key?(:importance_fraction)
772
- @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
743
+ @vertices = args[:vertices] if args.key?(:vertices)
773
744
  end
774
745
  end
775
746
 
776
- # A face-specific landmark (for example, a face feature).
777
- # Landmark positions may fall outside the bounds of the image
778
- # if the face is near one or more edges of the image.
779
- # Therefore it is NOT guaranteed that `0 <= x < width` or
780
- # `0 <= y < height`.
781
- class Landmark
747
+ # Response to an image annotation request.
748
+ class AnnotateImageResponse
782
749
  include Google::Apis::Core::Hashable
783
750
 
784
- # A 3D position in the image, used primarily for Face detection landmarks.
785
- # A valid Position must have both x and y coordinates.
786
- # The position coordinates are in the same scale as the original image.
787
- # Corresponds to the JSON property `position`
788
- # @return [Google::Apis::VisionV1::Position]
789
- attr_accessor :position
751
+ # The `Status` type defines a logical error model that is suitable for different
752
+ # programming environments, including REST APIs and RPC APIs. It is used by
753
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
754
+ # - Simple to use and understand for most users
755
+ # - Flexible enough to meet unexpected needs
756
+ # # Overview
757
+ # The `Status` message contains three pieces of data: error code, error message,
758
+ # and error details. The error code should be an enum value of
759
+ # google.rpc.Code, but it may accept additional error codes if needed. The
760
+ # error message should be a developer-facing English message that helps
761
+ # developers *understand* and *resolve* the error. If a localized user-facing
762
+ # error message is needed, put the localized message in the error details or
763
+ # localize it in the client. The optional error details may contain arbitrary
764
+ # information about the error. There is a predefined set of error detail types
765
+ # in the package `google.rpc` which can be used for common error conditions.
766
+ # # Language mapping
767
+ # The `Status` message is the logical representation of the error model, but it
768
+ # is not necessarily the actual wire format. When the `Status` message is
769
+ # exposed in different client libraries and different wire protocols, it can be
770
+ # mapped differently. For example, it will likely be mapped to some exceptions
771
+ # in Java, but more likely mapped to some error codes in C.
772
+ # # Other uses
773
+ # The error model and the `Status` message can be used in a variety of
774
+ # environments, either with or without APIs, to provide a
775
+ # consistent developer experience across different environments.
776
+ # Example uses of this error model include:
777
+ # - Partial errors. If a service needs to return partial errors to the client,
778
+ # it may embed the `Status` in the normal response to indicate the partial
779
+ # errors.
780
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
781
+ # have a `Status` message for error reporting purpose.
782
+ # - Batch operations. If a client uses batch request and batch response, the
783
+ # `Status` message should be used directly inside batch response, one for
784
+ # each error sub-response.
785
+ # - Asynchronous operations. If an API call embeds asynchronous operation
786
+ # results in its response, the status of those operations should be
787
+ # represented directly using the `Status` message.
788
+ # - Logging. If some API errors are stored in logs, the message `Status` could
789
+ # be used directly after any stripping needed for security/privacy reasons.
790
+ # Corresponds to the JSON property `error`
791
+ # @return [Google::Apis::VisionV1::Status]
792
+ attr_accessor :error
790
793
 
791
- # Face landmark type.
792
- # Corresponds to the JSON property `type`
793
- # @return [String]
794
- attr_accessor :type
794
+ # TextAnnotation contains a structured representation of OCR extracted text.
795
+ # The hierarchy of an OCR extracted text structure is like this:
796
+ # TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
797
+ # Each structural component, starting from Page, may further have their own
798
+ # properties. Properties describe detected languages, breaks etc.. Please
799
+ # refer to the google.cloud.vision.v1.TextAnnotation.TextProperty message
800
+ # definition below for more detail.
801
+ # Corresponds to the JSON property `fullTextAnnotation`
802
+ # @return [Google::Apis::VisionV1::TextAnnotation]
803
+ attr_accessor :full_text_annotation
804
+
805
+ # If present, landmark detection has completed successfully.
806
+ # Corresponds to the JSON property `landmarkAnnotations`
807
+ # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
808
+ attr_accessor :landmark_annotations
809
+
810
+ # If present, text (OCR) detection has completed successfully.
811
+ # Corresponds to the JSON property `textAnnotations`
812
+ # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
813
+ attr_accessor :text_annotations
814
+
815
+ # If present, face detection has completed successfully.
816
+ # Corresponds to the JSON property `faceAnnotations`
817
+ # @return [Array<Google::Apis::VisionV1::FaceAnnotation>]
818
+ attr_accessor :face_annotations
819
+
820
+ # Stores image properties, such as dominant colors.
821
+ # Corresponds to the JSON property `imagePropertiesAnnotation`
822
+ # @return [Google::Apis::VisionV1::ImageProperties]
823
+ attr_accessor :image_properties_annotation
824
+
825
+ # If present, logo detection has completed successfully.
826
+ # Corresponds to the JSON property `logoAnnotations`
827
+ # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
828
+ attr_accessor :logo_annotations
829
+
830
+ # Relevant information for the image from the Internet.
831
+ # Corresponds to the JSON property `webDetection`
832
+ # @return [Google::Apis::VisionV1::WebDetection]
833
+ attr_accessor :web_detection
834
+
835
+ # Set of crop hints that are used to generate new crops when serving images.
836
+ # Corresponds to the JSON property `cropHintsAnnotation`
837
+ # @return [Google::Apis::VisionV1::CropHintsAnnotation]
838
+ attr_accessor :crop_hints_annotation
839
+
840
+ # Set of features pertaining to the image, computed by computer vision
841
+ # methods over safe-search verticals (for example, adult, spoof, medical,
842
+ # violence).
843
+ # Corresponds to the JSON property `safeSearchAnnotation`
844
+ # @return [Google::Apis::VisionV1::SafeSearchAnnotation]
845
+ attr_accessor :safe_search_annotation
846
+
847
+ # If present, label detection has completed successfully.
848
+ # Corresponds to the JSON property `labelAnnotations`
849
+ # @return [Array<Google::Apis::VisionV1::EntityAnnotation>]
850
+ attr_accessor :label_annotations
795
851
 
796
852
  def initialize(**args)
797
853
  update!(**args)
@@ -799,25 +855,33 @@ module Google
799
855
 
800
856
  # Update properties of this object
801
857
  def update!(**args)
802
- @position = args[:position] if args.key?(:position)
803
- @type = args[:type] if args.key?(:type)
858
+ @error = args[:error] if args.key?(:error)
859
+ @full_text_annotation = args[:full_text_annotation] if args.key?(:full_text_annotation)
860
+ @landmark_annotations = args[:landmark_annotations] if args.key?(:landmark_annotations)
861
+ @text_annotations = args[:text_annotations] if args.key?(:text_annotations)
862
+ @face_annotations = args[:face_annotations] if args.key?(:face_annotations)
863
+ @image_properties_annotation = args[:image_properties_annotation] if args.key?(:image_properties_annotation)
864
+ @logo_annotations = args[:logo_annotations] if args.key?(:logo_annotations)
865
+ @web_detection = args[:web_detection] if args.key?(:web_detection)
866
+ @crop_hints_annotation = args[:crop_hints_annotation] if args.key?(:crop_hints_annotation)
867
+ @safe_search_annotation = args[:safe_search_annotation] if args.key?(:safe_search_annotation)
868
+ @label_annotations = args[:label_annotations] if args.key?(:label_annotations)
804
869
  end
805
870
  end
806
871
 
807
- # Metadata for online images.
808
- class WebImage
809
- include Google::Apis::Core::Hashable
810
-
811
- # Overall relevancy score for the image.
812
- # Not normalized and not comparable across different image queries.
813
- # Corresponds to the JSON property `score`
814
- # @return [Float]
815
- attr_accessor :score
872
+ # Parameters for crop hints annotation request.
873
+ class CropHintsParams
874
+ include Google::Apis::Core::Hashable
816
875
 
817
- # The result image URL.
818
- # Corresponds to the JSON property `url`
819
- # @return [String]
820
- attr_accessor :url
876
+ # Aspect ratios in floats, representing the ratio of the width to the height
877
+ # of the image. For example, if the desired aspect ratio is 4/3, the
878
+ # corresponding float value should be 1.33333. If not specified, the
879
+ # best possible crop is returned. The number of provided aspect ratios is
880
+ # limited to a maximum of 16; any aspect ratios provided after the 16th are
881
+ # ignored.
882
+ # Corresponds to the JSON property `aspectRatios`
883
+ # @return [Array<Float>]
884
+ attr_accessor :aspect_ratios
821
885
 
822
886
  def initialize(**args)
823
887
  update!(**args)
@@ -825,13 +889,12 @@ module Google
825
889
 
826
890
  # Update properties of this object
827
891
  def update!(**args)
828
- @score = args[:score] if args.key?(:score)
829
- @url = args[:url] if args.key?(:url)
892
+ @aspect_ratios = args[:aspect_ratios] if args.key?(:aspect_ratios)
830
893
  end
831
894
  end
832
895
 
833
- # A word representation.
834
- class Word
896
+ # Logical element on the page.
897
+ class Block
835
898
  include Google::Apis::Core::Hashable
836
899
 
837
900
  # Additional information detected on the structural component.
@@ -839,16 +902,20 @@ module Google
839
902
  # @return [Google::Apis::VisionV1::TextProperty]
840
903
  attr_accessor :property
841
904
 
905
+ # Detected block type (text, image etc) for this block.
906
+ # Corresponds to the JSON property `blockType`
907
+ # @return [String]
908
+ attr_accessor :block_type
909
+
842
910
  # A bounding polygon for the detected image annotation.
843
911
  # Corresponds to the JSON property `boundingBox`
844
912
  # @return [Google::Apis::VisionV1::BoundingPoly]
845
913
  attr_accessor :bounding_box
846
914
 
847
- # List of symbols in the word.
848
- # The order of the symbols follows the natural reading order.
849
- # Corresponds to the JSON property `symbols`
850
- # @return [Array<Google::Apis::VisionV1::Symbol>]
851
- attr_accessor :symbols
915
+ # List of paragraphs in this block (if this blocks is of type text).
916
+ # Corresponds to the JSON property `paragraphs`
917
+ # @return [Array<Google::Apis::VisionV1::Paragraph>]
918
+ attr_accessor :paragraphs
852
919
 
853
920
  def initialize(**args)
854
921
  update!(**args)
@@ -857,29 +924,44 @@ module Google
857
924
  # Update properties of this object
858
925
  def update!(**args)
859
926
  @property = args[:property] if args.key?(:property)
927
+ @block_type = args[:block_type] if args.key?(:block_type)
860
928
  @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
861
- @symbols = args[:symbols] if args.key?(:symbols)
929
+ @paragraphs = args[:paragraphs] if args.key?(:paragraphs)
862
930
  end
863
931
  end
864
932
 
865
- # Structural unit of text representing a number of words in certain order.
866
- class Paragraph
933
+ # Relevant information for the image from the Internet.
934
+ class WebDetection
867
935
  include Google::Apis::Core::Hashable
868
936
 
869
- # Additional information detected on the structural component.
870
- # Corresponds to the JSON property `property`
871
- # @return [Google::Apis::VisionV1::TextProperty]
872
- attr_accessor :property
937
+ # Fully matching images from the Internet.
938
+ # They're definite neardups and most often a copy of the query image with
939
+ # merely a size change.
940
+ # Corresponds to the JSON property `fullMatchingImages`
941
+ # @return [Array<Google::Apis::VisionV1::WebImage>]
942
+ attr_accessor :full_matching_images
873
943
 
874
- # A bounding polygon for the detected image annotation.
875
- # Corresponds to the JSON property `boundingBox`
876
- # @return [Google::Apis::VisionV1::BoundingPoly]
877
- attr_accessor :bounding_box
944
+ # Deduced entities from similar images on the Internet.
945
+ # Corresponds to the JSON property `webEntities`
946
+ # @return [Array<Google::Apis::VisionV1::WebEntity>]
947
+ attr_accessor :web_entities
878
948
 
879
- # List of words in this paragraph.
880
- # Corresponds to the JSON property `words`
881
- # @return [Array<Google::Apis::VisionV1::Word>]
882
- attr_accessor :words
949
+ # Web pages containing the matching images from the Internet.
950
+ # Corresponds to the JSON property `pagesWithMatchingImages`
951
+ # @return [Array<Google::Apis::VisionV1::WebPage>]
952
+ attr_accessor :pages_with_matching_images
953
+
954
+ # Partial matching images from the Internet.
955
+ # Those images are similar enough to share some key-point features. For
956
+ # example an original image will likely have partial matching for its crops.
957
+ # Corresponds to the JSON property `partialMatchingImages`
958
+ # @return [Array<Google::Apis::VisionV1::WebImage>]
959
+ attr_accessor :partial_matching_images
960
+
961
+ # The visually similar image results.
962
+ # Corresponds to the JSON property `visuallySimilarImages`
963
+ # @return [Array<Google::Apis::VisionV1::WebImage>]
964
+ attr_accessor :visually_similar_images
883
965
 
884
966
  def initialize(**args)
885
967
  update!(**args)
@@ -887,27 +969,22 @@ module Google
887
969
 
888
970
  # Update properties of this object
889
971
  def update!(**args)
890
- @property = args[:property] if args.key?(:property)
891
- @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
892
- @words = args[:words] if args.key?(:words)
972
+ @full_matching_images = args[:full_matching_images] if args.key?(:full_matching_images)
973
+ @web_entities = args[:web_entities] if args.key?(:web_entities)
974
+ @pages_with_matching_images = args[:pages_with_matching_images] if args.key?(:pages_with_matching_images)
975
+ @partial_matching_images = args[:partial_matching_images] if args.key?(:partial_matching_images)
976
+ @visually_similar_images = args[:visually_similar_images] if args.key?(:visually_similar_images)
893
977
  end
894
978
  end
895
979
 
896
- # Client image to perform Google Cloud Vision API tasks over.
897
- class Image
980
+ # Response to a batch image annotation request.
981
+ class BatchAnnotateImagesResponse
898
982
  include Google::Apis::Core::Hashable
899
983
 
900
- # Image content, represented as a stream of bytes.
901
- # Note: as with all `bytes` fields, protobuffers use a pure binary
902
- # representation, whereas JSON representations use base64.
903
- # Corresponds to the JSON property `content`
904
- # @return [String]
905
- attr_accessor :content
906
-
907
- # External image source (Google Cloud Storage image location).
908
- # Corresponds to the JSON property `source`
909
- # @return [Google::Apis::VisionV1::ImageSource]
910
- attr_accessor :source
984
+ # Individual responses to image annotation requests within the batch.
985
+ # Corresponds to the JSON property `responses`
986
+ # @return [Array<Google::Apis::VisionV1::AnnotateImageResponse>]
987
+ attr_accessor :responses
911
988
 
912
989
  def initialize(**args)
913
990
  update!(**args)
@@ -915,94 +992,37 @@ module Google
915
992
 
916
993
  # Update properties of this object
917
994
  def update!(**args)
918
- @content = args[:content] if args.key?(:content)
919
- @source = args[:source] if args.key?(:source)
995
+ @responses = args[:responses] if args.key?(:responses)
920
996
  end
921
997
  end
922
998
 
923
- # A face annotation object contains the results of face detection.
924
- class FaceAnnotation
999
+ # External image source (Google Cloud Storage image location).
1000
+ class ImageSource
925
1001
  include Google::Apis::Core::Hashable
926
1002
 
927
- # Under-exposed likelihood.
928
- # Corresponds to the JSON property `underExposedLikelihood`
929
- # @return [String]
930
- attr_accessor :under_exposed_likelihood
931
-
932
- # Yaw angle, which indicates the leftward/rightward angle that the face is
933
- # pointing relative to the vertical plane perpendicular to the image. Range
934
- # [-180,180].
935
- # Corresponds to the JSON property `panAngle`
936
- # @return [Float]
937
- attr_accessor :pan_angle
938
-
939
- # Detection confidence. Range [0, 1].
940
- # Corresponds to the JSON property `detectionConfidence`
941
- # @return [Float]
942
- attr_accessor :detection_confidence
943
-
944
- # Blurred likelihood.
945
- # Corresponds to the JSON property `blurredLikelihood`
946
- # @return [String]
947
- attr_accessor :blurred_likelihood
948
-
949
- # Headwear likelihood.
950
- # Corresponds to the JSON property `headwearLikelihood`
951
- # @return [String]
952
- attr_accessor :headwear_likelihood
953
-
954
- # A bounding polygon for the detected image annotation.
955
- # Corresponds to the JSON property `boundingPoly`
956
- # @return [Google::Apis::VisionV1::BoundingPoly]
957
- attr_accessor :bounding_poly
958
-
959
- # Roll angle, which indicates the amount of clockwise/anti-clockwise rotation
960
- # of the face relative to the image vertical about the axis perpendicular to
961
- # the face. Range [-180,180].
962
- # Corresponds to the JSON property `rollAngle`
963
- # @return [Float]
964
- attr_accessor :roll_angle
965
-
966
- # Sorrow likelihood.
967
- # Corresponds to the JSON property `sorrowLikelihood`
968
- # @return [String]
969
- attr_accessor :sorrow_likelihood
970
-
971
- # Pitch angle, which indicates the upwards/downwards angle that the face is
972
- # pointing relative to the image's horizontal plane. Range [-180,180].
973
- # Corresponds to the JSON property `tiltAngle`
974
- # @return [Float]
975
- attr_accessor :tilt_angle
976
-
977
- # A bounding polygon for the detected image annotation.
978
- # Corresponds to the JSON property `fdBoundingPoly`
979
- # @return [Google::Apis::VisionV1::BoundingPoly]
980
- attr_accessor :fd_bounding_poly
981
-
982
- # Anger likelihood.
983
- # Corresponds to the JSON property `angerLikelihood`
984
- # @return [String]
985
- attr_accessor :anger_likelihood
986
-
987
- # Detected face landmarks.
988
- # Corresponds to the JSON property `landmarks`
989
- # @return [Array<Google::Apis::VisionV1::Landmark>]
990
- attr_accessor :landmarks
991
-
992
- # Surprise likelihood.
993
- # Corresponds to the JSON property `surpriseLikelihood`
1003
+ # Image URI which supports:
1004
+ # 1) Google Cloud Storage image URI, which must be in the following form:
1005
+ # `gs://bucket_name/object_name` (for details, see
1006
+ # [Google Cloud Storage Request
1007
+ # URIs](https://cloud.google.com/storage/docs/reference-uris)).
1008
+ # NOTE: Cloud Storage object versioning is not supported.
1009
+ # 2) Publicly accessible image HTTP/HTTPS URL.
1010
+ # This is preferred over the legacy `gcs_image_uri` above. When both
1011
+ # `gcs_image_uri` and `image_uri` are specified, `image_uri` takes
1012
+ # precedence.
1013
+ # Corresponds to the JSON property `imageUri`
994
1014
  # @return [String]
995
- attr_accessor :surprise_likelihood
1015
+ attr_accessor :image_uri
996
1016
 
997
- # Joy likelihood.
998
- # Corresponds to the JSON property `joyLikelihood`
1017
+ # NOTE: For new code `image_uri` below is preferred.
1018
+ # Google Cloud Storage image URI, which must be in the following form:
1019
+ # `gs://bucket_name/object_name` (for details, see
1020
+ # [Google Cloud Storage Request
1021
+ # URIs](https://cloud.google.com/storage/docs/reference-uris)).
1022
+ # NOTE: Cloud Storage object versioning is not supported.
1023
+ # Corresponds to the JSON property `gcsImageUri`
999
1024
  # @return [String]
1000
- attr_accessor :joy_likelihood
1001
-
1002
- # Face landmarking confidence. Range [0, 1].
1003
- # Corresponds to the JSON property `landmarkingConfidence`
1004
- # @return [Float]
1005
- attr_accessor :landmarking_confidence
1025
+ attr_accessor :gcs_image_uri
1006
1026
 
1007
1027
  def initialize(**args)
1008
1028
  update!(**args)
@@ -1010,32 +1030,55 @@ module Google
1010
1030
 
1011
1031
  # Update properties of this object
1012
1032
  def update!(**args)
1013
- @under_exposed_likelihood = args[:under_exposed_likelihood] if args.key?(:under_exposed_likelihood)
1014
- @pan_angle = args[:pan_angle] if args.key?(:pan_angle)
1015
- @detection_confidence = args[:detection_confidence] if args.key?(:detection_confidence)
1016
- @blurred_likelihood = args[:blurred_likelihood] if args.key?(:blurred_likelihood)
1017
- @headwear_likelihood = args[:headwear_likelihood] if args.key?(:headwear_likelihood)
1018
- @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
1019
- @roll_angle = args[:roll_angle] if args.key?(:roll_angle)
1020
- @sorrow_likelihood = args[:sorrow_likelihood] if args.key?(:sorrow_likelihood)
1021
- @tilt_angle = args[:tilt_angle] if args.key?(:tilt_angle)
1022
- @fd_bounding_poly = args[:fd_bounding_poly] if args.key?(:fd_bounding_poly)
1023
- @anger_likelihood = args[:anger_likelihood] if args.key?(:anger_likelihood)
1024
- @landmarks = args[:landmarks] if args.key?(:landmarks)
1025
- @surprise_likelihood = args[:surprise_likelihood] if args.key?(:surprise_likelihood)
1026
- @joy_likelihood = args[:joy_likelihood] if args.key?(:joy_likelihood)
1027
- @landmarking_confidence = args[:landmarking_confidence] if args.key?(:landmarking_confidence)
1033
+ @image_uri = args[:image_uri] if args.key?(:image_uri)
1034
+ @gcs_image_uri = args[:gcs_image_uri] if args.key?(:gcs_image_uri)
1028
1035
  end
1029
1036
  end
1030
1037
 
1031
- # Multiple image annotation requests are batched into a single service call.
1032
- class BatchAnnotateImagesRequest
1038
+ # Detected entity location information.
1039
+ class LocationInfo
1033
1040
  include Google::Apis::Core::Hashable
1034
1041
 
1035
- # Individual image annotation requests for this batch.
1036
- # Corresponds to the JSON property `requests`
1037
- # @return [Array<Google::Apis::VisionV1::AnnotateImageRequest>]
1038
- attr_accessor :requests
1042
+ # An object representing a latitude/longitude pair. This is expressed as a pair
1043
+ # of doubles representing degrees latitude and degrees longitude. Unless
1044
+ # specified otherwise, this must conform to the
1045
+ # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
1046
+ # standard</a>. Values must be within normalized ranges.
1047
+ # Example of normalization code in Python:
1048
+ # def NormalizeLongitude(longitude):
1049
+ # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
1050
+ # q, r = divmod(longitude, 360.0)
1051
+ # if r > 180.0 or (r == 180.0 and q <= -1.0):
1052
+ # return r - 360.0
1053
+ # return r
1054
+ # def NormalizeLatLng(latitude, longitude):
1055
+ # """Wraps decimal degrees latitude and longitude to
1056
+ # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
1057
+ # r = latitude % 360.0
1058
+ # if r <= 90.0:
1059
+ # return r, NormalizeLongitude(longitude)
1060
+ # elif r >= 270.0:
1061
+ # return r - 360, NormalizeLongitude(longitude)
1062
+ # else:
1063
+ # return 180 - r, NormalizeLongitude(longitude + 180.0)
1064
+ # assert 180.0 == NormalizeLongitude(180.0)
1065
+ # assert -180.0 == NormalizeLongitude(-180.0)
1066
+ # assert -179.0 == NormalizeLongitude(181.0)
1067
+ # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
1068
+ # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
1069
+ # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
1070
+ # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
1071
+ # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
1072
+ # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
1073
+ # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
1074
+ # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
1075
+ # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
1076
+ # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
1077
+ # The code in logs/storage/validator/logs_validator_traits.cc treats this type
1078
+ # as if it were annotated as ST_LOCATION.
1079
+ # Corresponds to the JSON property `latLng`
1080
+ # @return [Google::Apis::VisionV1::LatLng]
1081
+ attr_accessor :lat_lng
1039
1082
 
1040
1083
  def initialize(**args)
1041
1084
  update!(**args)
@@ -1043,24 +1086,28 @@ module Google
1043
1086
 
1044
1087
  # Update properties of this object
1045
1088
  def update!(**args)
1046
- @requests = args[:requests] if args.key?(:requests)
1089
+ @lat_lng = args[:lat_lng] if args.key?(:lat_lng)
1047
1090
  end
1048
1091
  end
1049
1092
 
1050
- # Detected start or end of a structural component.
1051
- class DetectedBreak
1093
+ # A `Property` consists of a user-supplied name/value pair.
1094
+ class Property
1052
1095
  include Google::Apis::Core::Hashable
1053
1096
 
1054
- # Detected break type.
1055
- # Corresponds to the JSON property `type`
1097
+ # Value of the property.
1098
+ # Corresponds to the JSON property `value`
1056
1099
  # @return [String]
1057
- attr_accessor :type
1100
+ attr_accessor :value
1058
1101
 
1059
- # True if break prepends the element.
1060
- # Corresponds to the JSON property `isPrefix`
1061
- # @return [Boolean]
1062
- attr_accessor :is_prefix
1063
- alias_method :is_prefix?, :is_prefix
1102
+ # Value of numeric properties.
1103
+ # Corresponds to the JSON property `uint64Value`
1104
+ # @return [String]
1105
+ attr_accessor :uint64_value
1106
+
1107
+ # Name of the property.
1108
+ # Corresponds to the JSON property `name`
1109
+ # @return [String]
1110
+ attr_accessor :name
1064
1111
 
1065
1112
  def initialize(**args)
1066
1113
  update!(**args)
@@ -1068,36 +1115,32 @@ module Google
1068
1115
 
1069
1116
  # Update properties of this object
1070
1117
  def update!(**args)
1071
- @type = args[:type] if args.key?(:type)
1072
- @is_prefix = args[:is_prefix] if args.key?(:is_prefix)
1118
+ @value = args[:value] if args.key?(:value)
1119
+ @uint64_value = args[:uint64_value] if args.key?(:uint64_value)
1120
+ @name = args[:name] if args.key?(:name)
1073
1121
  end
1074
1122
  end
1075
1123
 
1076
- # Image context and/or feature-specific parameters.
1077
- class ImageContext
1124
+ # A 3D position in the image, used primarily for Face detection landmarks.
1125
+ # A valid Position must have both x and y coordinates.
1126
+ # The position coordinates are in the same scale as the original image.
1127
+ class Position
1078
1128
  include Google::Apis::Core::Hashable
1079
1129
 
1080
- # List of languages to use for TEXT_DETECTION. In most cases, an empty value
1081
- # yields the best results since it enables automatic language detection. For
1082
- # languages based on the Latin alphabet, setting `language_hints` is not
1083
- # needed. In rare cases, when the language of the text in the image is known,
1084
- # setting a hint will help get better results (although it will be a
1085
- # significant hindrance if the hint is wrong). Text detection returns an
1086
- # error if one or more of the specified languages is not one of the
1087
- # [supported languages](/vision/docs/languages).
1088
- # Corresponds to the JSON property `languageHints`
1089
- # @return [Array<String>]
1090
- attr_accessor :language_hints
1130
+ # Y coordinate.
1131
+ # Corresponds to the JSON property `y`
1132
+ # @return [Float]
1133
+ attr_accessor :y
1091
1134
 
1092
- # Rectangle determined by min and max `LatLng` pairs.
1093
- # Corresponds to the JSON property `latLongRect`
1094
- # @return [Google::Apis::VisionV1::LatLongRect]
1095
- attr_accessor :lat_long_rect
1135
+ # X coordinate.
1136
+ # Corresponds to the JSON property `x`
1137
+ # @return [Float]
1138
+ attr_accessor :x
1096
1139
 
1097
- # Parameters for crop hints annotation request.
1098
- # Corresponds to the JSON property `cropHintsParams`
1099
- # @return [Google::Apis::VisionV1::CropHintsParams]
1100
- attr_accessor :crop_hints_params
1140
+ # Z coordinate (or depth).
1141
+ # Corresponds to the JSON property `z`
1142
+ # @return [Float]
1143
+ attr_accessor :z
1101
1144
 
1102
1145
  def initialize(**args)
1103
1146
  update!(**args)
@@ -1105,35 +1148,26 @@ module Google
1105
1148
 
1106
1149
  # Update properties of this object
1107
1150
  def update!(**args)
1108
- @language_hints = args[:language_hints] if args.key?(:language_hints)
1109
- @lat_long_rect = args[:lat_long_rect] if args.key?(:lat_long_rect)
1110
- @crop_hints_params = args[:crop_hints_params] if args.key?(:crop_hints_params)
1151
+ @y = args[:y] if args.key?(:y)
1152
+ @x = args[:x] if args.key?(:x)
1153
+ @z = args[:z] if args.key?(:z)
1111
1154
  end
1112
1155
  end
1113
1156
 
1114
- # Detected page from OCR.
1115
- class Page
1157
+ # Metadata for web pages.
1158
+ class WebPage
1116
1159
  include Google::Apis::Core::Hashable
1117
1160
 
1118
- # Page width in pixels.
1119
- # Corresponds to the JSON property `width`
1120
- # @return [Fixnum]
1121
- attr_accessor :width
1122
-
1123
- # List of blocks of text, images etc on this page.
1124
- # Corresponds to the JSON property `blocks`
1125
- # @return [Array<Google::Apis::VisionV1::Block>]
1126
- attr_accessor :blocks
1127
-
1128
- # Additional information detected on the structural component.
1129
- # Corresponds to the JSON property `property`
1130
- # @return [Google::Apis::VisionV1::TextProperty]
1131
- attr_accessor :property
1161
+ # Overall relevancy score for the web page.
1162
+ # Not normalized and not comparable across different image queries.
1163
+ # Corresponds to the JSON property `score`
1164
+ # @return [Float]
1165
+ attr_accessor :score
1132
1166
 
1133
- # Page height in pixels.
1134
- # Corresponds to the JSON property `height`
1135
- # @return [Fixnum]
1136
- attr_accessor :height
1167
+ # The result web page URL.
1168
+ # Corresponds to the JSON property `url`
1169
+ # @return [String]
1170
+ attr_accessor :url
1137
1171
 
1138
1172
  def initialize(**args)
1139
1173
  update!(**args)
@@ -1141,32 +1175,129 @@ module Google
1141
1175
 
1142
1176
  # Update properties of this object
1143
1177
  def update!(**args)
1144
- @width = args[:width] if args.key?(:width)
1145
- @blocks = args[:blocks] if args.key?(:blocks)
1146
- @property = args[:property] if args.key?(:property)
1147
- @height = args[:height] if args.key?(:height)
1178
+ @score = args[:score] if args.key?(:score)
1179
+ @url = args[:url] if args.key?(:url)
1148
1180
  end
1149
1181
  end
1150
1182
 
1151
- # Request for performing Google Cloud Vision API tasks over a user-provided
1152
- # image, with user-requested features.
1153
- class AnnotateImageRequest
1183
+ # Color information consists of RGB channels, score, and the fraction of
1184
+ # the image that the color occupies in the image.
1185
+ class ColorInfo
1154
1186
  include Google::Apis::Core::Hashable
1155
1187
 
1156
- # Client image to perform Google Cloud Vision API tasks over.
1157
- # Corresponds to the JSON property `image`
1158
- # @return [Google::Apis::VisionV1::Image]
1159
- attr_accessor :image
1188
+ # Image-specific score for this color. Value in range [0, 1].
1189
+ # Corresponds to the JSON property `score`
1190
+ # @return [Float]
1191
+ attr_accessor :score
1160
1192
 
1161
- # Requested features.
1162
- # Corresponds to the JSON property `features`
1163
- # @return [Array<Google::Apis::VisionV1::Feature>]
1164
- attr_accessor :features
1193
+ # The fraction of pixels the color occupies in the image.
1194
+ # Value in range [0, 1].
1195
+ # Corresponds to the JSON property `pixelFraction`
1196
+ # @return [Float]
1197
+ attr_accessor :pixel_fraction
1165
1198
 
1166
- # Image context and/or feature-specific parameters.
1167
- # Corresponds to the JSON property `imageContext`
1168
- # @return [Google::Apis::VisionV1::ImageContext]
1169
- attr_accessor :image_context
1199
+ # Represents a color in the RGBA color space. This representation is designed
1200
+ # for simplicity of conversion to/from color representations in various
1201
+ # languages over compactness; for example, the fields of this representation
1202
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
1203
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
1204
+ # method in iOS; and, with just a little work, it can be easily formatted into
1205
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
1206
+ # Example (Java):
1207
+ # import com.google.type.Color;
1208
+ # // ...
1209
+ # public static java.awt.Color fromProto(Color protocolor) `
1210
+ # float alpha = protocolor.hasAlpha()
1211
+ # ? protocolor.getAlpha().getValue()
1212
+ # : 1.0;
1213
+ # return new java.awt.Color(
1214
+ # protocolor.getRed(),
1215
+ # protocolor.getGreen(),
1216
+ # protocolor.getBlue(),
1217
+ # alpha);
1218
+ # `
1219
+ # public static Color toProto(java.awt.Color color) `
1220
+ # float red = (float) color.getRed();
1221
+ # float green = (float) color.getGreen();
1222
+ # float blue = (float) color.getBlue();
1223
+ # float denominator = 255.0;
1224
+ # Color.Builder resultBuilder =
1225
+ # Color
1226
+ # .newBuilder()
1227
+ # .setRed(red / denominator)
1228
+ # .setGreen(green / denominator)
1229
+ # .setBlue(blue / denominator);
1230
+ # int alpha = color.getAlpha();
1231
+ # if (alpha != 255) `
1232
+ # result.setAlpha(
1233
+ # FloatValue
1234
+ # .newBuilder()
1235
+ # .setValue(((float) alpha) / denominator)
1236
+ # .build());
1237
+ # `
1238
+ # return resultBuilder.build();
1239
+ # `
1240
+ # // ...
1241
+ # Example (iOS / Obj-C):
1242
+ # // ...
1243
+ # static UIColor* fromProto(Color* protocolor) `
1244
+ # float red = [protocolor red];
1245
+ # float green = [protocolor green];
1246
+ # float blue = [protocolor blue];
1247
+ # FloatValue* alpha_wrapper = [protocolor alpha];
1248
+ # float alpha = 1.0;
1249
+ # if (alpha_wrapper != nil) `
1250
+ # alpha = [alpha_wrapper value];
1251
+ # `
1252
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
1253
+ # `
1254
+ # static Color* toProto(UIColor* color) `
1255
+ # CGFloat red, green, blue, alpha;
1256
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) `
1257
+ # return nil;
1258
+ # `
1259
+ # Color* result = [Color alloc] init];
1260
+ # [result setRed:red];
1261
+ # [result setGreen:green];
1262
+ # [result setBlue:blue];
1263
+ # if (alpha <= 0.9999) `
1264
+ # [result setAlpha:floatWrapperWithValue(alpha)];
1265
+ # `
1266
+ # [result autorelease];
1267
+ # return result;
1268
+ # `
1269
+ # // ...
1270
+ # Example (JavaScript):
1271
+ # // ...
1272
+ # var protoToCssColor = function(rgb_color) `
1273
+ # var redFrac = rgb_color.red || 0.0;
1274
+ # var greenFrac = rgb_color.green || 0.0;
1275
+ # var blueFrac = rgb_color.blue || 0.0;
1276
+ # var red = Math.floor(redFrac * 255);
1277
+ # var green = Math.floor(greenFrac * 255);
1278
+ # var blue = Math.floor(blueFrac * 255);
1279
+ # if (!('alpha' in rgb_color)) `
1280
+ # return rgbToCssColor_(red, green, blue);
1281
+ # `
1282
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
1283
+ # var rgbParams = [red, green, blue].join(',');
1284
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
1285
+ # `;
1286
+ # var rgbToCssColor_ = function(red, green, blue) `
1287
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
1288
+ # var hexString = rgbNumber.toString(16);
1289
+ # var missingZeros = 6 - hexString.length;
1290
+ # var resultBuilder = ['#'];
1291
+ # for (var i = 0; i < missingZeros; i++) `
1292
+ # resultBuilder.push('0');
1293
+ # `
1294
+ # resultBuilder.push(hexString);
1295
+ # return resultBuilder.join('');
1296
+ # `;
1297
+ # // ...
1298
+ # Corresponds to the JSON property `color`
1299
+ # @return [Google::Apis::VisionV1::Color]
1300
+ attr_accessor :color
1170
1301
 
1171
1302
  def initialize(**args)
1172
1303
  update!(**args)
@@ -1174,102 +1305,75 @@ module Google
1174
1305
 
1175
1306
  # Update properties of this object
1176
1307
  def update!(**args)
1177
- @image = args[:image] if args.key?(:image)
1178
- @features = args[:features] if args.key?(:features)
1179
- @image_context = args[:image_context] if args.key?(:image_context)
1308
+ @score = args[:score] if args.key?(:score)
1309
+ @pixel_fraction = args[:pixel_fraction] if args.key?(:pixel_fraction)
1310
+ @color = args[:color] if args.key?(:color)
1180
1311
  end
1181
1312
  end
1182
1313
 
1183
- # The `Status` type defines a logical error model that is suitable for different
1184
- # programming environments, including REST APIs and RPC APIs. It is used by
1185
- # [gRPC](https://github.com/grpc). The error model is designed to be:
1186
- # - Simple to use and understand for most users
1187
- # - Flexible enough to meet unexpected needs
1188
- # # Overview
1189
- # The `Status` message contains three pieces of data: error code, error message,
1190
- # and error details. The error code should be an enum value of
1191
- # google.rpc.Code, but it may accept additional error codes if needed. The
1192
- # error message should be a developer-facing English message that helps
1193
- # developers *understand* and *resolve* the error. If a localized user-facing
1194
- # error message is needed, put the localized message in the error details or
1195
- # localize it in the client. The optional error details may contain arbitrary
1196
- # information about the error. There is a predefined set of error detail types
1197
- # in the package `google.rpc` which can be used for common error conditions.
1198
- # # Language mapping
1199
- # The `Status` message is the logical representation of the error model, but it
1200
- # is not necessarily the actual wire format. When the `Status` message is
1201
- # exposed in different client libraries and different wire protocols, it can be
1202
- # mapped differently. For example, it will likely be mapped to some exceptions
1203
- # in Java, but more likely mapped to some error codes in C.
1204
- # # Other uses
1205
- # The error model and the `Status` message can be used in a variety of
1206
- # environments, either with or without APIs, to provide a
1207
- # consistent developer experience across different environments.
1208
- # Example uses of this error model include:
1209
- # - Partial errors. If a service needs to return partial errors to the client,
1210
- # it may embed the `Status` in the normal response to indicate the partial
1211
- # errors.
1212
- # - Workflow errors. A typical workflow has multiple steps. Each step may
1213
- # have a `Status` message for error reporting purpose.
1214
- # - Batch operations. If a client uses batch request and batch response, the
1215
- # `Status` message should be used directly inside batch response, one for
1216
- # each error sub-response.
1217
- # - Asynchronous operations. If an API call embeds asynchronous operation
1218
- # results in its response, the status of those operations should be
1219
- # represented directly using the `Status` message.
1220
- # - Logging. If some API errors are stored in logs, the message `Status` could
1221
- # be used directly after any stripping needed for security/privacy reasons.
1222
- class Status
1314
+ # Set of detected entity features.
1315
+ class EntityAnnotation
1223
1316
  include Google::Apis::Core::Hashable
1224
1317
 
1225
- # A developer-facing error message, which should be in English. Any
1226
- # user-facing error message should be localized and sent in the
1227
- # google.rpc.Status.details field, or localized by the client.
1228
- # Corresponds to the JSON property `message`
1318
+ # Opaque entity ID. Some IDs may be available in
1319
+ # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-
1320
+ # graph/).
1321
+ # Corresponds to the JSON property `mid`
1229
1322
  # @return [String]
1230
- attr_accessor :message
1323
+ attr_accessor :mid
1231
1324
 
1232
- # A list of messages that carry the error details. There will be a
1233
- # common set of message types for APIs to use.
1234
- # Corresponds to the JSON property `details`
1235
- # @return [Array<Hash<String,Object>>]
1236
- attr_accessor :details
1325
+ # The accuracy of the entity detection in an image.
1326
+ # For example, for an image in which the "Eiffel Tower" entity is detected,
1327
+ # this field represents the confidence that there is a tower in the query
1328
+ # image. Range [0, 1].
1329
+ # Corresponds to the JSON property `confidence`
1330
+ # @return [Float]
1331
+ attr_accessor :confidence
1237
1332
 
1238
- # The status code, which should be an enum value of google.rpc.Code.
1239
- # Corresponds to the JSON property `code`
1240
- # @return [Fixnum]
1241
- attr_accessor :code
1333
+ # The language code for the locale in which the entity textual
1334
+ # `description` is expressed.
1335
+ # Corresponds to the JSON property `locale`
1336
+ # @return [String]
1337
+ attr_accessor :locale
1242
1338
 
1243
- def initialize(**args)
1244
- update!(**args)
1245
- end
1339
+ # A bounding polygon for the detected image annotation.
1340
+ # Corresponds to the JSON property `boundingPoly`
1341
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1342
+ attr_accessor :bounding_poly
1246
1343
 
1247
- # Update properties of this object
1248
- def update!(**args)
1249
- @message = args[:message] if args.key?(:message)
1250
- @details = args[:details] if args.key?(:details)
1251
- @code = args[:code] if args.key?(:code)
1252
- end
1253
- end
1344
+ # Entity textual description, expressed in its `locale` language.
1345
+ # Corresponds to the JSON property `description`
1346
+ # @return [String]
1347
+ attr_accessor :description
1254
1348
 
1255
- # A single symbol representation.
1256
- class Symbol
1257
- include Google::Apis::Core::Hashable
1349
+ # The relevancy of the ICA (Image Content Annotation) label to the
1350
+ # image. For example, the relevancy of "tower" is likely higher to an image
1351
+ # containing the detected "Eiffel Tower" than to an image containing a
1352
+ # detected distant towering building, even though the confidence that
1353
+ # there is a tower in each image may be the same. Range [0, 1].
1354
+ # Corresponds to the JSON property `topicality`
1355
+ # @return [Float]
1356
+ attr_accessor :topicality
1258
1357
 
1259
- # Additional information detected on the structural component.
1260
- # Corresponds to the JSON property `property`
1261
- # @return [Google::Apis::VisionV1::TextProperty]
1262
- attr_accessor :property
1358
+ # Some entities may have optional user-supplied `Property` (name/value)
1359
+ # fields, such a score or string that qualifies the entity.
1360
+ # Corresponds to the JSON property `properties`
1361
+ # @return [Array<Google::Apis::VisionV1::Property>]
1362
+ attr_accessor :properties
1263
1363
 
1264
- # A bounding polygon for the detected image annotation.
1265
- # Corresponds to the JSON property `boundingBox`
1266
- # @return [Google::Apis::VisionV1::BoundingPoly]
1267
- attr_accessor :bounding_box
1364
+ # Overall score of the result. Range [0, 1].
1365
+ # Corresponds to the JSON property `score`
1366
+ # @return [Float]
1367
+ attr_accessor :score
1268
1368
 
1269
- # The actual UTF-8 representation of the symbol.
1270
- # Corresponds to the JSON property `text`
1271
- # @return [String]
1272
- attr_accessor :text
1369
+ # The location information for the detected entity. Multiple
1370
+ # `LocationInfo` elements can be present because one location may
1371
+ # indicate the location of the scene in the image, and another location
1372
+ # may indicate the location of the place where the image was taken.
1373
+ # Location information is usually present for landmarks.
1374
+ # Corresponds to the JSON property `locations`
1375
+ # @return [Array<Google::Apis::VisionV1::LocationInfo>]
1376
+ attr_accessor :locations
1273
1377
 
1274
1378
  def initialize(**args)
1275
1379
  update!(**args)
@@ -1277,97 +1381,37 @@ module Google
1277
1381
 
1278
1382
  # Update properties of this object
1279
1383
  def update!(**args)
1280
- @property = args[:property] if args.key?(:property)
1281
- @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
1282
- @text = args[:text] if args.key?(:text)
1384
+ @mid = args[:mid] if args.key?(:mid)
1385
+ @confidence = args[:confidence] if args.key?(:confidence)
1386
+ @locale = args[:locale] if args.key?(:locale)
1387
+ @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
1388
+ @description = args[:description] if args.key?(:description)
1389
+ @topicality = args[:topicality] if args.key?(:topicality)
1390
+ @properties = args[:properties] if args.key?(:properties)
1391
+ @score = args[:score] if args.key?(:score)
1392
+ @locations = args[:locations] if args.key?(:locations)
1283
1393
  end
1284
1394
  end
1285
1395
 
1286
- # Rectangle determined by min and max `LatLng` pairs.
1287
- class LatLongRect
1396
+ # Single crop hint that is used to generate a new crop when serving an image.
1397
+ class CropHint
1288
1398
  include Google::Apis::Core::Hashable
1289
1399
 
1290
- # An object representing a latitude/longitude pair. This is expressed as a pair
1291
- # of doubles representing degrees latitude and degrees longitude. Unless
1292
- # specified otherwise, this must conform to the
1293
- # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
1294
- # standard</a>. Values must be within normalized ranges.
1295
- # Example of normalization code in Python:
1296
- # def NormalizeLongitude(longitude):
1297
- # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
1298
- # q, r = divmod(longitude, 360.0)
1299
- # if r > 180.0 or (r == 180.0 and q <= -1.0):
1300
- # return r - 360.0
1301
- # return r
1302
- # def NormalizeLatLng(latitude, longitude):
1303
- # """Wraps decimal degrees latitude and longitude to
1304
- # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
1305
- # r = latitude % 360.0
1306
- # if r <= 90.0:
1307
- # return r, NormalizeLongitude(longitude)
1308
- # elif r >= 270.0:
1309
- # return r - 360, NormalizeLongitude(longitude)
1310
- # else:
1311
- # return 180 - r, NormalizeLongitude(longitude + 180.0)
1312
- # assert 180.0 == NormalizeLongitude(180.0)
1313
- # assert -180.0 == NormalizeLongitude(-180.0)
1314
- # assert -179.0 == NormalizeLongitude(181.0)
1315
- # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
1316
- # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
1317
- # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
1318
- # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
1319
- # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
1320
- # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
1321
- # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
1322
- # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
1323
- # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
1324
- # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
1325
- # The code in logs/storage/validator/logs_validator_traits.cc treats this type
1326
- # as if it were annotated as ST_LOCATION.
1327
- # Corresponds to the JSON property `minLatLng`
1328
- # @return [Google::Apis::VisionV1::LatLng]
1329
- attr_accessor :min_lat_lng
1400
+ # Confidence of this being a salient region. Range [0, 1].
1401
+ # Corresponds to the JSON property `confidence`
1402
+ # @return [Float]
1403
+ attr_accessor :confidence
1330
1404
 
1331
- # An object representing a latitude/longitude pair. This is expressed as a pair
1332
- # of doubles representing degrees latitude and degrees longitude. Unless
1333
- # specified otherwise, this must conform to the
1334
- # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
1335
- # standard</a>. Values must be within normalized ranges.
1336
- # Example of normalization code in Python:
1337
- # def NormalizeLongitude(longitude):
1338
- # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
1339
- # q, r = divmod(longitude, 360.0)
1340
- # if r > 180.0 or (r == 180.0 and q <= -1.0):
1341
- # return r - 360.0
1342
- # return r
1343
- # def NormalizeLatLng(latitude, longitude):
1344
- # """Wraps decimal degrees latitude and longitude to
1345
- # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
1346
- # r = latitude % 360.0
1347
- # if r <= 90.0:
1348
- # return r, NormalizeLongitude(longitude)
1349
- # elif r >= 270.0:
1350
- # return r - 360, NormalizeLongitude(longitude)
1351
- # else:
1352
- # return 180 - r, NormalizeLongitude(longitude + 180.0)
1353
- # assert 180.0 == NormalizeLongitude(180.0)
1354
- # assert -180.0 == NormalizeLongitude(-180.0)
1355
- # assert -179.0 == NormalizeLongitude(181.0)
1356
- # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
1357
- # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
1358
- # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
1359
- # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
1360
- # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
1361
- # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
1362
- # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
1363
- # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
1364
- # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
1365
- # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
1366
- # The code in logs/storage/validator/logs_validator_traits.cc treats this type
1367
- # as if it were annotated as ST_LOCATION.
1368
- # Corresponds to the JSON property `maxLatLng`
1369
- # @return [Google::Apis::VisionV1::LatLng]
1370
- attr_accessor :max_lat_lng
1405
+ # Fraction of importance of this salient region with respect to the original
1406
+ # image.
1407
+ # Corresponds to the JSON property `importanceFraction`
1408
+ # @return [Float]
1409
+ attr_accessor :importance_fraction
1410
+
1411
+ # A bounding polygon for the detected image annotation.
1412
+ # Corresponds to the JSON property `boundingPoly`
1413
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1414
+ attr_accessor :bounding_poly
1371
1415
 
1372
1416
  def initialize(**args)
1373
1417
  update!(**args)
@@ -1375,19 +1419,31 @@ module Google
1375
1419
 
1376
1420
  # Update properties of this object
1377
1421
  def update!(**args)
1378
- @min_lat_lng = args[:min_lat_lng] if args.key?(:min_lat_lng)
1379
- @max_lat_lng = args[:max_lat_lng] if args.key?(:max_lat_lng)
1422
+ @confidence = args[:confidence] if args.key?(:confidence)
1423
+ @importance_fraction = args[:importance_fraction] if args.key?(:importance_fraction)
1424
+ @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
1380
1425
  end
1381
1426
  end
1382
1427
 
1383
- # Set of crop hints that are used to generate new crops when serving images.
1384
- class CropHintsAnnotation
1428
+ # A face-specific landmark (for example, a face feature).
1429
+ # Landmark positions may fall outside the bounds of the image
1430
+ # if the face is near one or more edges of the image.
1431
+ # Therefore it is NOT guaranteed that `0 <= x < width` or
1432
+ # `0 <= y < height`.
1433
+ class Landmark
1385
1434
  include Google::Apis::Core::Hashable
1386
1435
 
1387
- # Crop hint results.
1388
- # Corresponds to the JSON property `cropHints`
1389
- # @return [Array<Google::Apis::VisionV1::CropHint>]
1390
- attr_accessor :crop_hints
1436
+ # A 3D position in the image, used primarily for Face detection landmarks.
1437
+ # A valid Position must have both x and y coordinates.
1438
+ # The position coordinates are in the same scale as the original image.
1439
+ # Corresponds to the JSON property `position`
1440
+ # @return [Google::Apis::VisionV1::Position]
1441
+ attr_accessor :position
1442
+
1443
+ # Face landmark type.
1444
+ # Corresponds to the JSON property `type`
1445
+ # @return [String]
1446
+ attr_accessor :type
1391
1447
 
1392
1448
  def initialize(**args)
1393
1449
  update!(**args)
@@ -1395,59 +1451,25 @@ module Google
1395
1451
 
1396
1452
  # Update properties of this object
1397
1453
  def update!(**args)
1398
- @crop_hints = args[:crop_hints] if args.key?(:crop_hints)
1454
+ @position = args[:position] if args.key?(:position)
1455
+ @type = args[:type] if args.key?(:type)
1399
1456
  end
1400
1457
  end
1401
1458
 
1402
- # An object representing a latitude/longitude pair. This is expressed as a pair
1403
- # of doubles representing degrees latitude and degrees longitude. Unless
1404
- # specified otherwise, this must conform to the
1405
- # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
1406
- # standard</a>. Values must be within normalized ranges.
1407
- # Example of normalization code in Python:
1408
- # def NormalizeLongitude(longitude):
1409
- # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
1410
- # q, r = divmod(longitude, 360.0)
1411
- # if r > 180.0 or (r == 180.0 and q <= -1.0):
1412
- # return r - 360.0
1413
- # return r
1414
- # def NormalizeLatLng(latitude, longitude):
1415
- # """Wraps decimal degrees latitude and longitude to
1416
- # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
1417
- # r = latitude % 360.0
1418
- # if r <= 90.0:
1419
- # return r, NormalizeLongitude(longitude)
1420
- # elif r >= 270.0:
1421
- # return r - 360, NormalizeLongitude(longitude)
1422
- # else:
1423
- # return 180 - r, NormalizeLongitude(longitude + 180.0)
1424
- # assert 180.0 == NormalizeLongitude(180.0)
1425
- # assert -180.0 == NormalizeLongitude(-180.0)
1426
- # assert -179.0 == NormalizeLongitude(181.0)
1427
- # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
1428
- # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
1429
- # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
1430
- # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
1431
- # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
1432
- # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
1433
- # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
1434
- # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
1435
- # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
1436
- # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
1437
- # The code in logs/storage/validator/logs_validator_traits.cc treats this type
1438
- # as if it were annotated as ST_LOCATION.
1439
- class LatLng
1459
+ # Metadata for online images.
1460
+ class WebImage
1440
1461
  include Google::Apis::Core::Hashable
1441
1462
 
1442
- # The longitude in degrees. It must be in the range [-180.0, +180.0].
1443
- # Corresponds to the JSON property `longitude`
1463
+ # Overall relevancy score for the image.
1464
+ # Not normalized and not comparable across different image queries.
1465
+ # Corresponds to the JSON property `score`
1444
1466
  # @return [Float]
1445
- attr_accessor :longitude
1467
+ attr_accessor :score
1446
1468
 
1447
- # The latitude in degrees. It must be in the range [-90.0, +90.0].
1448
- # Corresponds to the JSON property `latitude`
1449
- # @return [Float]
1450
- attr_accessor :latitude
1469
+ # The result image URL.
1470
+ # Corresponds to the JSON property `url`
1471
+ # @return [String]
1472
+ attr_accessor :url
1451
1473
 
1452
1474
  def initialize(**args)
1453
1475
  update!(**args)
@@ -1455,140 +1477,30 @@ module Google
1455
1477
 
1456
1478
  # Update properties of this object
1457
1479
  def update!(**args)
1458
- @longitude = args[:longitude] if args.key?(:longitude)
1459
- @latitude = args[:latitude] if args.key?(:latitude)
1480
+ @score = args[:score] if args.key?(:score)
1481
+ @url = args[:url] if args.key?(:url)
1460
1482
  end
1461
1483
  end
1462
1484
 
1463
- # Represents a color in the RGBA color space. This representation is designed
1464
- # for simplicity of conversion to/from color representations in various
1465
- # languages over compactness; for example, the fields of this representation
1466
- # can be trivially provided to the constructor of "java.awt.Color" in Java; it
1467
- # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
1468
- # method in iOS; and, with just a little work, it can be easily formatted into
1469
- # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
1470
- # Example (Java):
1471
- # import com.google.type.Color;
1472
- # // ...
1473
- # public static java.awt.Color fromProto(Color protocolor) `
1474
- # float alpha = protocolor.hasAlpha()
1475
- # ? protocolor.getAlpha().getValue()
1476
- # : 1.0;
1477
- # return new java.awt.Color(
1478
- # protocolor.getRed(),
1479
- # protocolor.getGreen(),
1480
- # protocolor.getBlue(),
1481
- # alpha);
1482
- # `
1483
- # public static Color toProto(java.awt.Color color) `
1484
- # float red = (float) color.getRed();
1485
- # float green = (float) color.getGreen();
1486
- # float blue = (float) color.getBlue();
1487
- # float denominator = 255.0;
1488
- # Color.Builder resultBuilder =
1489
- # Color
1490
- # .newBuilder()
1491
- # .setRed(red / denominator)
1492
- # .setGreen(green / denominator)
1493
- # .setBlue(blue / denominator);
1494
- # int alpha = color.getAlpha();
1495
- # if (alpha != 255) `
1496
- # result.setAlpha(
1497
- # FloatValue
1498
- # .newBuilder()
1499
- # .setValue(((float) alpha) / denominator)
1500
- # .build());
1501
- # `
1502
- # return resultBuilder.build();
1503
- # `
1504
- # // ...
1505
- # Example (iOS / Obj-C):
1506
- # // ...
1507
- # static UIColor* fromProto(Color* protocolor) `
1508
- # float red = [protocolor red];
1509
- # float green = [protocolor green];
1510
- # float blue = [protocolor blue];
1511
- # FloatValue* alpha_wrapper = [protocolor alpha];
1512
- # float alpha = 1.0;
1513
- # if (alpha_wrapper != nil) `
1514
- # alpha = [alpha_wrapper value];
1515
- # `
1516
- # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
1517
- # `
1518
- # static Color* toProto(UIColor* color) `
1519
- # CGFloat red, green, blue, alpha;
1520
- # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) `
1521
- # return nil;
1522
- # `
1523
- # Color* result = [Color alloc] init];
1524
- # [result setRed:red];
1525
- # [result setGreen:green];
1526
- # [result setBlue:blue];
1527
- # if (alpha <= 0.9999) `
1528
- # [result setAlpha:floatWrapperWithValue(alpha)];
1529
- # `
1530
- # [result autorelease];
1531
- # return result;
1532
- # `
1533
- # // ...
1534
- # Example (JavaScript):
1535
- # // ...
1536
- # var protoToCssColor = function(rgb_color) `
1537
- # var redFrac = rgb_color.red || 0.0;
1538
- # var greenFrac = rgb_color.green || 0.0;
1539
- # var blueFrac = rgb_color.blue || 0.0;
1540
- # var red = Math.floor(redFrac * 255);
1541
- # var green = Math.floor(greenFrac * 255);
1542
- # var blue = Math.floor(blueFrac * 255);
1543
- # if (!('alpha' in rgb_color)) `
1544
- # return rgbToCssColor_(red, green, blue);
1545
- # `
1546
- # var alphaFrac = rgb_color.alpha.value || 0.0;
1547
- # var rgbParams = [red, green, blue].join(',');
1548
- # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
1549
- # `;
1550
- # var rgbToCssColor_ = function(red, green, blue) `
1551
- # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
1552
- # var hexString = rgbNumber.toString(16);
1553
- # var missingZeros = 6 - hexString.length;
1554
- # var resultBuilder = ['#'];
1555
- # for (var i = 0; i < missingZeros; i++) `
1556
- # resultBuilder.push('0');
1557
- # `
1558
- # resultBuilder.push(hexString);
1559
- # return resultBuilder.join('');
1560
- # `;
1561
- # // ...
1562
- class Color
1485
+ # A word representation.
1486
+ class Word
1563
1487
  include Google::Apis::Core::Hashable
1564
1488
 
1565
- # The amount of red in the color as a value in the interval [0, 1].
1566
- # Corresponds to the JSON property `red`
1567
- # @return [Float]
1568
- attr_accessor :red
1569
-
1570
- # The amount of green in the color as a value in the interval [0, 1].
1571
- # Corresponds to the JSON property `green`
1572
- # @return [Float]
1573
- attr_accessor :green
1489
+ # A bounding polygon for the detected image annotation.
1490
+ # Corresponds to the JSON property `boundingBox`
1491
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1492
+ attr_accessor :bounding_box
1574
1493
 
1575
- # The amount of blue in the color as a value in the interval [0, 1].
1576
- # Corresponds to the JSON property `blue`
1577
- # @return [Float]
1578
- attr_accessor :blue
1494
+ # List of symbols in the word.
1495
+ # The order of the symbols follows the natural reading order.
1496
+ # Corresponds to the JSON property `symbols`
1497
+ # @return [Array<Google::Apis::VisionV1::Symbol>]
1498
+ attr_accessor :symbols
1579
1499
 
1580
- # The fraction of this color that should be applied to the pixel. That is,
1581
- # the final pixel color is defined by the equation:
1582
- # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
1583
- # This means that a value of 1.0 corresponds to a solid color, whereas
1584
- # a value of 0.0 corresponds to a completely transparent color. This
1585
- # uses a wrapper message rather than a simple float scalar so that it is
1586
- # possible to distinguish between a default value and the value being unset.
1587
- # If omitted, this color object is to be rendered as a solid color
1588
- # (as if the alpha value had been explicitly given with a value of 1.0).
1589
- # Corresponds to the JSON property `alpha`
1590
- # @return [Float]
1591
- attr_accessor :alpha
1500
+ # Additional information detected on the structural component.
1501
+ # Corresponds to the JSON property `property`
1502
+ # @return [Google::Apis::VisionV1::TextProperty]
1503
+ attr_accessor :property
1592
1504
 
1593
1505
  def initialize(**args)
1594
1506
  update!(**args)
@@ -1596,29 +1508,30 @@ module Google
1596
1508
 
1597
1509
  # Update properties of this object
1598
1510
  def update!(**args)
1599
- @red = args[:red] if args.key?(:red)
1600
- @green = args[:green] if args.key?(:green)
1601
- @blue = args[:blue] if args.key?(:blue)
1602
- @alpha = args[:alpha] if args.key?(:alpha)
1511
+ @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
1512
+ @symbols = args[:symbols] if args.key?(:symbols)
1513
+ @property = args[:property] if args.key?(:property)
1603
1514
  end
1604
1515
  end
1605
1516
 
1606
- # Users describe the type of Google Cloud Vision API tasks to perform over
1607
- # images by using *Feature*s. Each Feature indicates a type of image
1608
- # detection task to perform. Features encode the Cloud Vision API
1609
- # vertical to operate on and the number of top-scoring results to return.
1610
- class Feature
1517
+ # Structural unit of text representing a number of words in certain order.
1518
+ class Paragraph
1611
1519
  include Google::Apis::Core::Hashable
1612
1520
 
1613
- # The feature type.
1614
- # Corresponds to the JSON property `type`
1615
- # @return [String]
1616
- attr_accessor :type
1521
+ # Additional information detected on the structural component.
1522
+ # Corresponds to the JSON property `property`
1523
+ # @return [Google::Apis::VisionV1::TextProperty]
1524
+ attr_accessor :property
1617
1525
 
1618
- # Maximum number of results of this type.
1619
- # Corresponds to the JSON property `maxResults`
1620
- # @return [Fixnum]
1621
- attr_accessor :max_results
1526
+ # A bounding polygon for the detected image annotation.
1527
+ # Corresponds to the JSON property `boundingBox`
1528
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1529
+ attr_accessor :bounding_box
1530
+
1531
+ # List of words in this paragraph.
1532
+ # Corresponds to the JSON property `words`
1533
+ # @return [Array<Google::Apis::VisionV1::Word>]
1534
+ attr_accessor :words
1622
1535
 
1623
1536
  def initialize(**args)
1624
1537
  update!(**args)
@@ -1626,19 +1539,27 @@ module Google
1626
1539
 
1627
1540
  # Update properties of this object
1628
1541
  def update!(**args)
1629
- @type = args[:type] if args.key?(:type)
1630
- @max_results = args[:max_results] if args.key?(:max_results)
1542
+ @property = args[:property] if args.key?(:property)
1543
+ @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
1544
+ @words = args[:words] if args.key?(:words)
1631
1545
  end
1632
1546
  end
1633
1547
 
1634
- # Stores image properties, such as dominant colors.
1635
- class ImageProperties
1548
+ # Client image to perform Google Cloud Vision API tasks over.
1549
+ class Image
1636
1550
  include Google::Apis::Core::Hashable
1637
1551
 
1638
- # Set of dominant colors and their corresponding scores.
1639
- # Corresponds to the JSON property `dominantColors`
1640
- # @return [Google::Apis::VisionV1::DominantColorsAnnotation]
1641
- attr_accessor :dominant_colors
1552
+ # Image content, represented as a stream of bytes.
1553
+ # Note: as with all `bytes` fields, protobuffers use a pure binary
1554
+ # representation, whereas JSON representations use base64.
1555
+ # Corresponds to the JSON property `content`
1556
+ # @return [String]
1557
+ attr_accessor :content
1558
+
1559
+ # External image source (Google Cloud Storage image location).
1560
+ # Corresponds to the JSON property `source`
1561
+ # @return [Google::Apis::VisionV1::ImageSource]
1562
+ attr_accessor :source
1642
1563
 
1643
1564
  def initialize(**args)
1644
1565
  update!(**args)
@@ -1646,37 +1567,94 @@ module Google
1646
1567
 
1647
1568
  # Update properties of this object
1648
1569
  def update!(**args)
1649
- @dominant_colors = args[:dominant_colors] if args.key?(:dominant_colors)
1570
+ @content = args[:content] if args.key?(:content)
1571
+ @source = args[:source] if args.key?(:source)
1650
1572
  end
1651
1573
  end
1652
1574
 
1653
- # Set of features pertaining to the image, computed by computer vision
1654
- # methods over safe-search verticals (for example, adult, spoof, medical,
1655
- # violence).
1656
- class SafeSearchAnnotation
1575
+ # A face annotation object contains the results of face detection.
1576
+ class FaceAnnotation
1657
1577
  include Google::Apis::Core::Hashable
1658
1578
 
1659
- # Spoof likelihood. The likelihood that an modification
1660
- # was made to the image's canonical version to make it appear
1661
- # funny or offensive.
1662
- # Corresponds to the JSON property `spoof`
1579
+ # Pitch angle, which indicates the upwards/downwards angle that the face is
1580
+ # pointing relative to the image's horizontal plane. Range [-180,180].
1581
+ # Corresponds to the JSON property `tiltAngle`
1582
+ # @return [Float]
1583
+ attr_accessor :tilt_angle
1584
+
1585
+ # A bounding polygon for the detected image annotation.
1586
+ # Corresponds to the JSON property `fdBoundingPoly`
1587
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1588
+ attr_accessor :fd_bounding_poly
1589
+
1590
+ # Anger likelihood.
1591
+ # Corresponds to the JSON property `angerLikelihood`
1663
1592
  # @return [String]
1664
- attr_accessor :spoof
1593
+ attr_accessor :anger_likelihood
1665
1594
 
1666
- # Likelihood that this is a medical image.
1667
- # Corresponds to the JSON property `medical`
1595
+ # Detected face landmarks.
1596
+ # Corresponds to the JSON property `landmarks`
1597
+ # @return [Array<Google::Apis::VisionV1::Landmark>]
1598
+ attr_accessor :landmarks
1599
+
1600
+ # Surprise likelihood.
1601
+ # Corresponds to the JSON property `surpriseLikelihood`
1668
1602
  # @return [String]
1669
- attr_accessor :medical
1603
+ attr_accessor :surprise_likelihood
1670
1604
 
1671
- # Violence likelihood.
1672
- # Corresponds to the JSON property `violence`
1605
+ # Face landmarking confidence. Range [0, 1].
1606
+ # Corresponds to the JSON property `landmarkingConfidence`
1607
+ # @return [Float]
1608
+ attr_accessor :landmarking_confidence
1609
+
1610
+ # Joy likelihood.
1611
+ # Corresponds to the JSON property `joyLikelihood`
1673
1612
  # @return [String]
1674
- attr_accessor :violence
1613
+ attr_accessor :joy_likelihood
1675
1614
 
1676
- # Represents the adult content likelihood for the image.
1677
- # Corresponds to the JSON property `adult`
1615
+ # Detection confidence. Range [0, 1].
1616
+ # Corresponds to the JSON property `detectionConfidence`
1617
+ # @return [Float]
1618
+ attr_accessor :detection_confidence
1619
+
1620
+ # Yaw angle, which indicates the leftward/rightward angle that the face is
1621
+ # pointing relative to the vertical plane perpendicular to the image. Range
1622
+ # [-180,180].
1623
+ # Corresponds to the JSON property `panAngle`
1624
+ # @return [Float]
1625
+ attr_accessor :pan_angle
1626
+
1627
+ # Under-exposed likelihood.
1628
+ # Corresponds to the JSON property `underExposedLikelihood`
1678
1629
  # @return [String]
1679
- attr_accessor :adult
1630
+ attr_accessor :under_exposed_likelihood
1631
+
1632
+ # Blurred likelihood.
1633
+ # Corresponds to the JSON property `blurredLikelihood`
1634
+ # @return [String]
1635
+ attr_accessor :blurred_likelihood
1636
+
1637
+ # Headwear likelihood.
1638
+ # Corresponds to the JSON property `headwearLikelihood`
1639
+ # @return [String]
1640
+ attr_accessor :headwear_likelihood
1641
+
1642
+ # A bounding polygon for the detected image annotation.
1643
+ # Corresponds to the JSON property `boundingPoly`
1644
+ # @return [Google::Apis::VisionV1::BoundingPoly]
1645
+ attr_accessor :bounding_poly
1646
+
1647
+ # Roll angle, which indicates the amount of clockwise/anti-clockwise rotation
1648
+ # of the face relative to the image vertical about the axis perpendicular to
1649
+ # the face. Range [-180,180].
1650
+ # Corresponds to the JSON property `rollAngle`
1651
+ # @return [Float]
1652
+ attr_accessor :roll_angle
1653
+
1654
+ # Sorrow likelihood.
1655
+ # Corresponds to the JSON property `sorrowLikelihood`
1656
+ # @return [String]
1657
+ attr_accessor :sorrow_likelihood
1680
1658
 
1681
1659
  def initialize(**args)
1682
1660
  update!(**args)
@@ -1684,21 +1662,32 @@ module Google
1684
1662
 
1685
1663
  # Update properties of this object
1686
1664
  def update!(**args)
1687
- @spoof = args[:spoof] if args.key?(:spoof)
1688
- @medical = args[:medical] if args.key?(:medical)
1689
- @violence = args[:violence] if args.key?(:violence)
1690
- @adult = args[:adult] if args.key?(:adult)
1665
+ @tilt_angle = args[:tilt_angle] if args.key?(:tilt_angle)
1666
+ @fd_bounding_poly = args[:fd_bounding_poly] if args.key?(:fd_bounding_poly)
1667
+ @anger_likelihood = args[:anger_likelihood] if args.key?(:anger_likelihood)
1668
+ @landmarks = args[:landmarks] if args.key?(:landmarks)
1669
+ @surprise_likelihood = args[:surprise_likelihood] if args.key?(:surprise_likelihood)
1670
+ @landmarking_confidence = args[:landmarking_confidence] if args.key?(:landmarking_confidence)
1671
+ @joy_likelihood = args[:joy_likelihood] if args.key?(:joy_likelihood)
1672
+ @detection_confidence = args[:detection_confidence] if args.key?(:detection_confidence)
1673
+ @pan_angle = args[:pan_angle] if args.key?(:pan_angle)
1674
+ @under_exposed_likelihood = args[:under_exposed_likelihood] if args.key?(:under_exposed_likelihood)
1675
+ @blurred_likelihood = args[:blurred_likelihood] if args.key?(:blurred_likelihood)
1676
+ @headwear_likelihood = args[:headwear_likelihood] if args.key?(:headwear_likelihood)
1677
+ @bounding_poly = args[:bounding_poly] if args.key?(:bounding_poly)
1678
+ @roll_angle = args[:roll_angle] if args.key?(:roll_angle)
1679
+ @sorrow_likelihood = args[:sorrow_likelihood] if args.key?(:sorrow_likelihood)
1691
1680
  end
1692
1681
  end
1693
1682
 
1694
- # Set of dominant colors and their corresponding scores.
1695
- class DominantColorsAnnotation
1683
+ # Multiple image annotation requests are batched into a single service call.
1684
+ class BatchAnnotateImagesRequest
1696
1685
  include Google::Apis::Core::Hashable
1697
1686
 
1698
- # RGB color values with their score and pixel fraction.
1699
- # Corresponds to the JSON property `colors`
1700
- # @return [Array<Google::Apis::VisionV1::ColorInfo>]
1701
- attr_accessor :colors
1687
+ # Individual image annotation requests for this batch.
1688
+ # Corresponds to the JSON property `requests`
1689
+ # @return [Array<Google::Apis::VisionV1::AnnotateImageRequest>]
1690
+ attr_accessor :requests
1702
1691
 
1703
1692
  def initialize(**args)
1704
1693
  update!(**args)
@@ -1706,29 +1695,24 @@ module Google
1706
1695
 
1707
1696
  # Update properties of this object
1708
1697
  def update!(**args)
1709
- @colors = args[:colors] if args.key?(:colors)
1698
+ @requests = args[:requests] if args.key?(:requests)
1710
1699
  end
1711
1700
  end
1712
1701
 
1713
- # TextAnnotation contains a structured representation of OCR extracted text.
1714
- # The hierarchy of an OCR extracted text structure is like this:
1715
- # TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
1716
- # Each structural component, starting from Page, may further have their own
1717
- # properties. Properties describe detected languages, breaks etc.. Please
1718
- # refer to the google.cloud.vision.v1.TextAnnotation.TextProperty message
1719
- # definition below for more detail.
1720
- class TextAnnotation
1702
+ # Detected start or end of a structural component.
1703
+ class DetectedBreak
1721
1704
  include Google::Apis::Core::Hashable
1722
1705
 
1723
- # List of pages detected by OCR.
1724
- # Corresponds to the JSON property `pages`
1725
- # @return [Array<Google::Apis::VisionV1::Page>]
1726
- attr_accessor :pages
1727
-
1728
- # UTF-8 text detected on the pages.
1729
- # Corresponds to the JSON property `text`
1706
+ # Detected break type.
1707
+ # Corresponds to the JSON property `type`
1730
1708
  # @return [String]
1731
- attr_accessor :text
1709
+ attr_accessor :type
1710
+
1711
+ # True if break prepends the element.
1712
+ # Corresponds to the JSON property `isPrefix`
1713
+ # @return [Boolean]
1714
+ attr_accessor :is_prefix
1715
+ alias_method :is_prefix?, :is_prefix
1732
1716
 
1733
1717
  def initialize(**args)
1734
1718
  update!(**args)
@@ -1736,26 +1720,36 @@ module Google
1736
1720
 
1737
1721
  # Update properties of this object
1738
1722
  def update!(**args)
1739
- @pages = args[:pages] if args.key?(:pages)
1740
- @text = args[:text] if args.key?(:text)
1723
+ @type = args[:type] if args.key?(:type)
1724
+ @is_prefix = args[:is_prefix] if args.key?(:is_prefix)
1741
1725
  end
1742
1726
  end
1743
1727
 
1744
- # Detected language for a structural component.
1745
- class DetectedLanguage
1728
+ # Image context and/or feature-specific parameters.
1729
+ class ImageContext
1746
1730
  include Google::Apis::Core::Hashable
1747
1731
 
1748
- # The BCP-47 language code, such as "en-US" or "sr-Latn". For more
1749
- # information, see
1750
- # http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
1751
- # Corresponds to the JSON property `languageCode`
1752
- # @return [String]
1753
- attr_accessor :language_code
1732
+ # List of languages to use for TEXT_DETECTION. In most cases, an empty value
1733
+ # yields the best results since it enables automatic language detection. For
1734
+ # languages based on the Latin alphabet, setting `language_hints` is not
1735
+ # needed. In rare cases, when the language of the text in the image is known,
1736
+ # setting a hint will help get better results (although it will be a
1737
+ # significant hindrance if the hint is wrong). Text detection returns an
1738
+ # error if one or more of the specified languages is not one of the
1739
+ # [supported languages](/vision/docs/languages).
1740
+ # Corresponds to the JSON property `languageHints`
1741
+ # @return [Array<String>]
1742
+ attr_accessor :language_hints
1754
1743
 
1755
- # Confidence of detected language. Range [0, 1].
1756
- # Corresponds to the JSON property `confidence`
1757
- # @return [Float]
1758
- attr_accessor :confidence
1744
+ # Rectangle determined by min and max `LatLng` pairs.
1745
+ # Corresponds to the JSON property `latLongRect`
1746
+ # @return [Google::Apis::VisionV1::LatLongRect]
1747
+ attr_accessor :lat_long_rect
1748
+
1749
+ # Parameters for crop hints annotation request.
1750
+ # Corresponds to the JSON property `cropHintsParams`
1751
+ # @return [Google::Apis::VisionV1::CropHintsParams]
1752
+ attr_accessor :crop_hints_params
1759
1753
 
1760
1754
  def initialize(**args)
1761
1755
  update!(**args)
@@ -1763,25 +1757,35 @@ module Google
1763
1757
 
1764
1758
  # Update properties of this object
1765
1759
  def update!(**args)
1766
- @language_code = args[:language_code] if args.key?(:language_code)
1767
- @confidence = args[:confidence] if args.key?(:confidence)
1760
+ @language_hints = args[:language_hints] if args.key?(:language_hints)
1761
+ @lat_long_rect = args[:lat_long_rect] if args.key?(:lat_long_rect)
1762
+ @crop_hints_params = args[:crop_hints_params] if args.key?(:crop_hints_params)
1768
1763
  end
1769
1764
  end
1770
1765
 
1771
- # A vertex represents a 2D point in the image.
1772
- # NOTE: the vertex coordinates are in the same scale as the original image.
1773
- class Vertex
1766
+ # Detected page from OCR.
1767
+ class Page
1774
1768
  include Google::Apis::Core::Hashable
1775
1769
 
1776
- # Y coordinate.
1777
- # Corresponds to the JSON property `y`
1770
+ # Page width in pixels.
1771
+ # Corresponds to the JSON property `width`
1778
1772
  # @return [Fixnum]
1779
- attr_accessor :y
1773
+ attr_accessor :width
1780
1774
 
1781
- # X coordinate.
1782
- # Corresponds to the JSON property `x`
1775
+ # List of blocks of text, images etc on this page.
1776
+ # Corresponds to the JSON property `blocks`
1777
+ # @return [Array<Google::Apis::VisionV1::Block>]
1778
+ attr_accessor :blocks
1779
+
1780
+ # Additional information detected on the structural component.
1781
+ # Corresponds to the JSON property `property`
1782
+ # @return [Google::Apis::VisionV1::TextProperty]
1783
+ attr_accessor :property
1784
+
1785
+ # Page height in pixels.
1786
+ # Corresponds to the JSON property `height`
1783
1787
  # @return [Fixnum]
1784
- attr_accessor :x
1788
+ attr_accessor :height
1785
1789
 
1786
1790
  def initialize(**args)
1787
1791
  update!(**args)
@@ -1789,8 +1793,10 @@ module Google
1789
1793
 
1790
1794
  # Update properties of this object
1791
1795
  def update!(**args)
1792
- @y = args[:y] if args.key?(:y)
1793
- @x = args[:x] if args.key?(:x)
1796
+ @width = args[:width] if args.key?(:width)
1797
+ @blocks = args[:blocks] if args.key?(:blocks)
1798
+ @property = args[:property] if args.key?(:property)
1799
+ @height = args[:height] if args.key?(:height)
1794
1800
  end
1795
1801
  end
1796
1802
  end