aws-sdk-rekognition 1.80.0 → 1.82.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -383,6 +383,139 @@ module Aws::Rekognition
383
383
 
384
384
  # @!group API Operations
385
385
 
386
+ # Associates one or more faces with an existing UserID. Takes an array
387
+ # of `FaceIds`. Each `FaceId` that are present in the `FaceIds` list is
388
+ # associated with the provided UserID. The maximum number of total
389
+ # `FaceIds` per UserID is 100.
390
+ #
391
+ # The `UserMatchThreshold` parameter specifies the minimum user match
392
+ # confidence required for the face to be associated with a UserID that
393
+ # has at least one `FaceID` already associated. This ensures that the
394
+ # `FaceIds` are associated with the right UserID. The value ranges from
395
+ # 0-100 and default value is 75.
396
+ #
397
+ # If successful, an array of `AssociatedFace` objects containing the
398
+ # associated `FaceIds` is returned. If a given face is already
399
+ # associated with the given `UserID`, it will be ignored and will not be
400
+ # returned in the response. If a given face is already associated to a
401
+ # different `UserID`, isn't found in the collection, doesn’t meet the
402
+ # `UserMatchThreshold`, or there are already 100 faces associated with
403
+ # the `UserID`, it will be returned as part of an array of
404
+ # `UnsuccessfulFaceAssociations.`
405
+ #
406
+ # The `UserStatus` reflects the status of an operation which updates a
407
+ # UserID representation with a list of given faces. The `UserStatus` can
408
+ # be:
409
+ #
410
+ # * ACTIVE - All associations or disassociations of FaceID(s) for a
411
+ # UserID are complete.
412
+ #
413
+ # * CREATED - A UserID has been created, but has no FaceID(s) associated
414
+ # with it.
415
+ #
416
+ # * UPDATING - A UserID is being updated and there are current
417
+ # associations or disassociations of FaceID(s) taking place.
418
+ #
419
+ # @option params [required, String] :collection_id
420
+ # The ID of an existing collection containing the UserID.
421
+ #
422
+ # @option params [required, String] :user_id
423
+ # The ID for the existing UserID.
424
+ #
425
+ # @option params [required, Array<String>] :face_ids
426
+ # An array of FaceIDs to associate with the UserID.
427
+ #
428
+ # @option params [Float] :user_match_threshold
429
+ # An optional value specifying the minimum confidence in the UserID
430
+ # match to return. The default value is 75.
431
+ #
432
+ # @option params [String] :client_request_token
433
+ # Idempotent token used to identify the request to `AssociateFaces`. If
434
+ # you use the same token with multiple `AssociateFaces` requests, the
435
+ # same response is returned. Use ClientRequestToken to prevent the same
436
+ # request from being processed more than once.
437
+ #
438
+ # **A suitable default value is auto-generated.** You should normally
439
+ # not need to pass this option.**
440
+ #
441
+ # @return [Types::AssociateFacesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
442
+ #
443
+ # * {Types::AssociateFacesResponse#associated_faces #associated_faces} => Array&lt;Types::AssociatedFace&gt;
444
+ # * {Types::AssociateFacesResponse#unsuccessful_face_associations #unsuccessful_face_associations} => Array&lt;Types::UnsuccessfulFaceAssociation&gt;
445
+ # * {Types::AssociateFacesResponse#user_status #user_status} => String
446
+ #
447
+ #
448
+ # @example Example: AssociateFaces
449
+ #
450
+ # # This operation associates one or more faces with an existing UserID.
451
+ #
452
+ # resp = client.associate_faces({
453
+ # client_request_token: "550e8400-e29b-41d4-a716-446655440002",
454
+ # collection_id: "MyCollection",
455
+ # face_ids: [
456
+ # "f5817d37-94f6-4335-bfee-6cf79a3d806e",
457
+ # "851cb847-dccc-4fea-9309-9f4805967855",
458
+ # "35ebbb41-7f67-4263-908d-dd0ecba05ab9",
459
+ # ],
460
+ # user_id: "DemoUser",
461
+ # user_match_threshold: 70,
462
+ # })
463
+ #
464
+ # resp.to_h outputs the following:
465
+ # {
466
+ # associated_faces: [
467
+ # {
468
+ # face_id: "35ebbb41-7f67-4263-908d-dd0ecba05ab9",
469
+ # },
470
+ # ],
471
+ # unsuccessful_face_associations: [
472
+ # {
473
+ # confidence: 0.9375374913215637,
474
+ # face_id: "f5817d37-94f6-4335-bfee-6cf79a3d806e",
475
+ # reasons: [
476
+ # "LOW_MATCH_CONFIDENCE",
477
+ # ],
478
+ # },
479
+ # {
480
+ # face_id: "851cb847-dccc-4fea-9309-9f4805967855",
481
+ # reasons: [
482
+ # "ASSOCIATED_TO_A_DIFFERENT_USER",
483
+ # ],
484
+ # user_id: "demoUser2",
485
+ # },
486
+ # ],
487
+ # user_status: "UPDATING",
488
+ # }
489
+ #
490
+ # @example Request syntax with placeholder values
491
+ #
492
+ # resp = client.associate_faces({
493
+ # collection_id: "CollectionId", # required
494
+ # user_id: "UserId", # required
495
+ # face_ids: ["FaceId"], # required
496
+ # user_match_threshold: 1.0,
497
+ # client_request_token: "ClientRequestToken",
498
+ # })
499
+ #
500
+ # @example Response structure
501
+ #
502
+ # resp.associated_faces #=> Array
503
+ # resp.associated_faces[0].face_id #=> String
504
+ # resp.unsuccessful_face_associations #=> Array
505
+ # resp.unsuccessful_face_associations[0].face_id #=> String
506
+ # resp.unsuccessful_face_associations[0].user_id #=> String
507
+ # resp.unsuccessful_face_associations[0].confidence #=> Float
508
+ # resp.unsuccessful_face_associations[0].reasons #=> Array
509
+ # resp.unsuccessful_face_associations[0].reasons[0] #=> String, one of "FACE_NOT_FOUND", "ASSOCIATED_TO_A_DIFFERENT_USER", "LOW_MATCH_CONFIDENCE"
510
+ # resp.user_status #=> String, one of "ACTIVE", "UPDATING", "CREATING", "CREATED"
511
+ #
512
+ # @overload associate_faces(params = {})
513
+ # @param [Hash] params ({})
514
+ def associate_faces(params = {}, options = {})
515
+ req = build_request(:associate_faces, params)
516
+ req.send_request(options)
517
+ end
518
+
386
519
  # Compares a face in the *source* input image with each of the 100
387
520
  # largest faces detected in the *target* input image.
388
521
  #
@@ -1324,6 +1457,62 @@ module Aws::Rekognition
1324
1457
  req.send_request(options)
1325
1458
  end
1326
1459
 
1460
+ # Creates a new User within a collection specified by `CollectionId`.
1461
+ # Takes `UserId` as a parameter, which is a user provided ID which
1462
+ # should be unique within the collection. The provided `UserId` will
1463
+ # alias the system generated UUID to make the `UserId` more user
1464
+ # friendly.
1465
+ #
1466
+ # Uses a `ClientToken`, an idempotency token that ensures a call to
1467
+ # `CreateUser` completes only once. If the value is not supplied, the
1468
+ # AWS SDK generates an idempotency token for the requests. This prevents
1469
+ # retries after a network error results from making multiple
1470
+ # `CreateUser` calls.
1471
+ #
1472
+ # @option params [required, String] :collection_id
1473
+ # The ID of an existing collection to which the new UserID needs to be
1474
+ # created.
1475
+ #
1476
+ # @option params [required, String] :user_id
1477
+ # ID for the UserID to be created. This ID needs to be unique within the
1478
+ # collection.
1479
+ #
1480
+ # @option params [String] :client_request_token
1481
+ # Idempotent token used to identify the request to `CreateUser`. If you
1482
+ # use the same token with multiple `CreateUser` requests, the same
1483
+ # response is returned. Use ClientRequestToken to prevent the same
1484
+ # request from being processed more than once.
1485
+ #
1486
+ # **A suitable default value is auto-generated.** You should normally
1487
+ # not need to pass this option.**
1488
+ #
1489
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1490
+ #
1491
+ #
1492
+ # @example Example: CreateUser
1493
+ #
1494
+ # # Creates a new User within a collection specified by CollectionId.
1495
+ #
1496
+ # resp = client.create_user({
1497
+ # collection_id: "MyCollection",
1498
+ # user_id: "DemoUser",
1499
+ # })
1500
+ #
1501
+ # @example Request syntax with placeholder values
1502
+ #
1503
+ # resp = client.create_user({
1504
+ # collection_id: "CollectionId", # required
1505
+ # user_id: "UserId", # required
1506
+ # client_request_token: "ClientRequestToken",
1507
+ # })
1508
+ #
1509
+ # @overload create_user(params = {})
1510
+ # @param [Hash] params ({})
1511
+ def create_user(params = {}, options = {})
1512
+ req = build_request(:create_user, params)
1513
+ req.send_request(options)
1514
+ end
1515
+
1327
1516
  # Deletes the specified collection. Note that this operation removes all
1328
1517
  # faces in the collection. For an example, see [Deleting a
1329
1518
  # collection][1].
@@ -1420,6 +1609,7 @@ module Aws::Rekognition
1420
1609
  # @return [Types::DeleteFacesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1421
1610
  #
1422
1611
  # * {Types::DeleteFacesResponse#deleted_faces #deleted_faces} => Array&lt;String&gt;
1612
+ # * {Types::DeleteFacesResponse#unsuccessful_face_deletions #unsuccessful_face_deletions} => Array&lt;Types::UnsuccessfulFaceDeletion&gt;
1423
1613
  #
1424
1614
  #
1425
1615
  # @example Example: To delete a face
@@ -1451,6 +1641,11 @@ module Aws::Rekognition
1451
1641
  #
1452
1642
  # resp.deleted_faces #=> Array
1453
1643
  # resp.deleted_faces[0] #=> String
1644
+ # resp.unsuccessful_face_deletions #=> Array
1645
+ # resp.unsuccessful_face_deletions[0].face_id #=> String
1646
+ # resp.unsuccessful_face_deletions[0].user_id #=> String
1647
+ # resp.unsuccessful_face_deletions[0].reasons #=> Array
1648
+ # resp.unsuccessful_face_deletions[0].reasons[0] #=> String, one of "ASSOCIATED_TO_AN_EXISTING_USER", "FACE_NOT_FOUND"
1454
1649
  #
1455
1650
  # @overload delete_faces(params = {})
1456
1651
  # @param [Hash] params ({})
@@ -1606,6 +1801,57 @@ module Aws::Rekognition
1606
1801
  req.send_request(options)
1607
1802
  end
1608
1803
 
1804
+ # Deletes the specified UserID within the collection. Faces that are
1805
+ # associated with the UserID are disassociated from the UserID before
1806
+ # deleting the specified UserID. If the specified `Collection` or
1807
+ # `UserID` is already deleted or not found, a
1808
+ # `ResourceNotFoundException` will be thrown. If the action is
1809
+ # successful with a 200 response, an empty HTTP body is returned.
1810
+ #
1811
+ # @option params [required, String] :collection_id
1812
+ # The ID of an existing collection from which the UserID needs to be
1813
+ # deleted.
1814
+ #
1815
+ # @option params [required, String] :user_id
1816
+ # ID for the UserID to be deleted.
1817
+ #
1818
+ # @option params [String] :client_request_token
1819
+ # Idempotent token used to identify the request to `DeleteUser`. If you
1820
+ # use the same token with multiple `DeleteUser `requests, the same
1821
+ # response is returned. Use ClientRequestToken to prevent the same
1822
+ # request from being processed more than once.
1823
+ #
1824
+ # **A suitable default value is auto-generated.** You should normally
1825
+ # not need to pass this option.**
1826
+ #
1827
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1828
+ #
1829
+ #
1830
+ # @example Example: DeleteUser
1831
+ #
1832
+ # # Deletes the specified UserID within the collection.
1833
+ #
1834
+ # resp = client.delete_user({
1835
+ # client_request_token: "550e8400-e29b-41d4-a716-446655440001",
1836
+ # collection_id: "MyCollection",
1837
+ # user_id: "DemoUser",
1838
+ # })
1839
+ #
1840
+ # @example Request syntax with placeholder values
1841
+ #
1842
+ # resp = client.delete_user({
1843
+ # collection_id: "CollectionId", # required
1844
+ # user_id: "UserId", # required
1845
+ # client_request_token: "ClientRequestToken",
1846
+ # })
1847
+ #
1848
+ # @overload delete_user(params = {})
1849
+ # @param [Hash] params ({})
1850
+ def delete_user(params = {}, options = {})
1851
+ req = build_request(:delete_user, params)
1852
+ req.send_request(options)
1853
+ end
1854
+
1609
1855
  # Describes the specified collection. You can use `DescribeCollection`
1610
1856
  # to get information, such as the number of faces indexed into a
1611
1857
  # collection and the version of the model used by the collection for
@@ -1623,6 +1869,7 @@ module Aws::Rekognition
1623
1869
  # * {Types::DescribeCollectionResponse#face_model_version #face_model_version} => String
1624
1870
  # * {Types::DescribeCollectionResponse#collection_arn #collection_arn} => String
1625
1871
  # * {Types::DescribeCollectionResponse#creation_timestamp #creation_timestamp} => Time
1872
+ # * {Types::DescribeCollectionResponse#user_count #user_count} => Integer
1626
1873
  #
1627
1874
  # @example Request syntax with placeholder values
1628
1875
  #
@@ -1636,6 +1883,7 @@ module Aws::Rekognition
1636
1883
  # resp.face_model_version #=> String
1637
1884
  # resp.collection_arn #=> String
1638
1885
  # resp.creation_timestamp #=> Time
1886
+ # resp.user_count #=> Integer
1639
1887
  #
1640
1888
  # @overload describe_collection(params = {})
1641
1889
  # @param [Hash] params ({})
@@ -2845,6 +3093,102 @@ module Aws::Rekognition
2845
3093
  req.send_request(options)
2846
3094
  end
2847
3095
 
3096
+ # Removes the association between a `Face` supplied in an array of
3097
+ # `FaceIds` and the User. If the User is not present already, then a
3098
+ # `ResourceNotFound` exception is thrown. If successful, an array of
3099
+ # faces that are disassociated from the User is returned. If a given
3100
+ # face is already disassociated from the given UserID, it will be
3101
+ # ignored and not be returned in the response. If a given face is
3102
+ # already associated with a different User or not found in the
3103
+ # collection it will be returned as part of
3104
+ # `UnsuccessfulDisassociations`. You can remove 1 - 100 face IDs from a
3105
+ # user at one time.
3106
+ #
3107
+ # @option params [required, String] :collection_id
3108
+ # The ID of an existing collection containing the UserID.
3109
+ #
3110
+ # @option params [required, String] :user_id
3111
+ # ID for the existing UserID.
3112
+ #
3113
+ # @option params [String] :client_request_token
3114
+ # Idempotent token used to identify the request to `DisassociateFaces`.
3115
+ # If you use the same token with multiple `DisassociateFaces` requests,
3116
+ # the same response is returned. Use ClientRequestToken to prevent the
3117
+ # same request from being processed more than once.
3118
+ #
3119
+ # **A suitable default value is auto-generated.** You should normally
3120
+ # not need to pass this option.**
3121
+ #
3122
+ # @option params [required, Array<String>] :face_ids
3123
+ # An array of face IDs to disassociate from the UserID.
3124
+ #
3125
+ # @return [Types::DisassociateFacesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3126
+ #
3127
+ # * {Types::DisassociateFacesResponse#disassociated_faces #disassociated_faces} => Array&lt;Types::DisassociatedFace&gt;
3128
+ # * {Types::DisassociateFacesResponse#unsuccessful_face_disassociations #unsuccessful_face_disassociations} => Array&lt;Types::UnsuccessfulFaceDisassociation&gt;
3129
+ # * {Types::DisassociateFacesResponse#user_status #user_status} => String
3130
+ #
3131
+ #
3132
+ # @example Example: DisassociateFaces
3133
+ #
3134
+ # # Removes the association between a Face supplied in an array of FaceIds and the User.
3135
+ #
3136
+ # resp = client.disassociate_faces({
3137
+ # client_request_token: "550e8400-e29b-41d4-a716-446655440003",
3138
+ # collection_id: "MyCollection",
3139
+ # face_ids: [
3140
+ # "f5817d37-94f6-4335-bfee-6cf79a3d806e",
3141
+ # "c92265d4-5f9c-43af-a58e-12be0ce02bc3",
3142
+ # ],
3143
+ # user_id: "DemoUser",
3144
+ # })
3145
+ #
3146
+ # resp.to_h outputs the following:
3147
+ # {
3148
+ # disassociated_faces: [
3149
+ # {
3150
+ # face_id: "c92265d4-5f9c-43af-a58e-12be0ce02bc3",
3151
+ # },
3152
+ # ],
3153
+ # unsuccessful_face_disassociations: [
3154
+ # {
3155
+ # face_id: "f5817d37-94f6-4335-bfee-6cf79a3d806e",
3156
+ # reasons: [
3157
+ # "ASSOCIATED_TO_A_DIFFERENT_USER",
3158
+ # ],
3159
+ # user_id: "demoUser1",
3160
+ # },
3161
+ # ],
3162
+ # user_status: "UPDATING",
3163
+ # }
3164
+ #
3165
+ # @example Request syntax with placeholder values
3166
+ #
3167
+ # resp = client.disassociate_faces({
3168
+ # collection_id: "CollectionId", # required
3169
+ # user_id: "UserId", # required
3170
+ # client_request_token: "ClientRequestToken",
3171
+ # face_ids: ["FaceId"], # required
3172
+ # })
3173
+ #
3174
+ # @example Response structure
3175
+ #
3176
+ # resp.disassociated_faces #=> Array
3177
+ # resp.disassociated_faces[0].face_id #=> String
3178
+ # resp.unsuccessful_face_disassociations #=> Array
3179
+ # resp.unsuccessful_face_disassociations[0].face_id #=> String
3180
+ # resp.unsuccessful_face_disassociations[0].user_id #=> String
3181
+ # resp.unsuccessful_face_disassociations[0].reasons #=> Array
3182
+ # resp.unsuccessful_face_disassociations[0].reasons[0] #=> String, one of "FACE_NOT_FOUND", "ASSOCIATED_TO_A_DIFFERENT_USER"
3183
+ # resp.user_status #=> String, one of "ACTIVE", "UPDATING", "CREATING", "CREATED"
3184
+ #
3185
+ # @overload disassociate_faces(params = {})
3186
+ # @param [Hash] params ({})
3187
+ def disassociate_faces(params = {}, options = {})
3188
+ req = build_request(:disassociate_faces, params)
3189
+ req.send_request(options)
3190
+ end
3191
+
2848
3192
  # Distributes the entries (images) in a training dataset across the
2849
3193
  # training dataset and the test dataset for a project.
2850
3194
  # `DistributeDatasetEntries` moves 20% of the training dataset images to
@@ -3574,6 +3918,7 @@ module Aws::Rekognition
3574
3918
  # resp.persons[0].face_matches[0].face.external_image_id #=> String
3575
3919
  # resp.persons[0].face_matches[0].face.confidence #=> Float
3576
3920
  # resp.persons[0].face_matches[0].face.index_faces_model_version #=> String
3921
+ # resp.persons[0].face_matches[0].face.user_id #=> String
3577
3922
  # resp.job_id #=> String
3578
3923
  # resp.video.s3_object.bucket #=> String
3579
3924
  # resp.video.s3_object.name #=> String
@@ -4508,6 +4853,7 @@ module Aws::Rekognition
4508
4853
  # resp.face_records[0].face.external_image_id #=> String
4509
4854
  # resp.face_records[0].face.confidence #=> Float
4510
4855
  # resp.face_records[0].face.index_faces_model_version #=> String
4856
+ # resp.face_records[0].face.user_id #=> String
4511
4857
  # resp.face_records[0].face_detail.bounding_box.width #=> Float
4512
4858
  # resp.face_records[0].face_detail.bounding_box.height #=> Float
4513
4859
  # resp.face_records[0].face_detail.bounding_box.left #=> Float
@@ -4832,6 +5178,12 @@ module Aws::Rekognition
4832
5178
  # @option params [Integer] :max_results
4833
5179
  # Maximum number of faces to return.
4834
5180
  #
5181
+ # @option params [String] :user_id
5182
+ # An array of user IDs to match when listing faces in a collection.
5183
+ #
5184
+ # @option params [Array<String>] :face_ids
5185
+ # An array of face IDs to match when listing faces in a collection.
5186
+ #
4835
5187
  # @return [Types::ListFacesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4836
5188
  #
4837
5189
  # * {Types::ListFacesResponse#faces #faces} => Array&lt;Types::Face&gt;
@@ -4852,127 +5204,44 @@ module Aws::Rekognition
4852
5204
  #
4853
5205
  # resp.to_h outputs the following:
4854
5206
  # {
5207
+ # face_model_version: "6.0",
4855
5208
  # faces: [
4856
5209
  # {
4857
5210
  # bounding_box: {
4858
- # height: 0.18000000715255737,
4859
- # left: 0.5555559992790222,
4860
- # top: 0.336667001247406,
4861
- # width: 0.23999999463558197,
4862
- # },
4863
- # confidence: 100,
4864
- # face_id: "1c62e8b5-69a7-5b7d-b3cd-db4338a8a7e7",
4865
- # image_id: "147fdf82-7a71-52cf-819b-e786c7b9746e",
4866
- # },
4867
- # {
4868
- # bounding_box: {
4869
- # height: 0.16555599868297577,
4870
- # left: 0.30963000655174255,
4871
- # top: 0.7066670060157776,
4872
- # width: 0.22074100375175476,
4873
- # },
4874
- # confidence: 100,
4875
- # face_id: "29a75abe-397b-5101-ba4f-706783b2246c",
4876
- # image_id: "147fdf82-7a71-52cf-819b-e786c7b9746e",
4877
- # },
4878
- # {
4879
- # bounding_box: {
4880
- # height: 0.3234420120716095,
4881
- # left: 0.3233329951763153,
4882
- # top: 0.5,
4883
- # width: 0.24222199618816376,
4884
- # },
4885
- # confidence: 99.99829864501953,
4886
- # face_id: "38271d79-7bc2-5efb-b752-398a8d575b85",
4887
- # image_id: "d5631190-d039-54e4-b267-abd22c8647c5",
4888
- # },
4889
- # {
4890
- # bounding_box: {
4891
- # height: 0.03555560111999512,
4892
- # left: 0.37388700246810913,
4893
- # top: 0.2477779984474182,
4894
- # width: 0.04747769981622696,
4895
- # },
4896
- # confidence: 99.99210357666016,
4897
- # face_id: "3b01bef0-c883-5654-ba42-d5ad28b720b3",
4898
- # image_id: "812d9f04-86f9-54fc-9275-8d0dcbcb6784",
4899
- # },
4900
- # {
4901
- # bounding_box: {
4902
- # height: 0.05333330109715462,
4903
- # left: 0.2937690019607544,
4904
- # top: 0.35666701197624207,
4905
- # width: 0.07121659815311432,
4906
- # },
4907
- # confidence: 99.99919891357422,
4908
- # face_id: "4839a608-49d0-566c-8301-509d71b534d1",
4909
- # image_id: "812d9f04-86f9-54fc-9275-8d0dcbcb6784",
4910
- # },
4911
- # {
4912
- # bounding_box: {
4913
- # height: 0.3249259889125824,
4914
- # left: 0.5155559778213501,
4915
- # top: 0.1513350009918213,
4916
- # width: 0.24333299696445465,
4917
- # },
4918
- # confidence: 99.99949645996094,
4919
- # face_id: "70008e50-75e4-55d0-8e80-363fb73b3a14",
4920
- # image_id: "d5631190-d039-54e4-b267-abd22c8647c5",
4921
- # },
4922
- # {
4923
- # bounding_box: {
4924
- # height: 0.03777780011296272,
4925
- # left: 0.7002969980239868,
4926
- # top: 0.18777799606323242,
4927
- # width: 0.05044509842991829,
4928
- # },
4929
- # confidence: 99.92639923095703,
4930
- # face_id: "7f5f88ed-d684-5a88-b0df-01e4a521552b",
4931
- # image_id: "812d9f04-86f9-54fc-9275-8d0dcbcb6784",
4932
- # },
4933
- # {
4934
- # bounding_box: {
4935
- # height: 0.05555560067296028,
4936
- # left: 0.13946600258350372,
4937
- # top: 0.46333301067352295,
4938
- # width: 0.07270029932260513,
4939
- # },
4940
- # confidence: 99.99469757080078,
4941
- # face_id: "895b4e2c-81de-5902-a4bd-d1792bda00b2",
4942
- # image_id: "812d9f04-86f9-54fc-9275-8d0dcbcb6784",
4943
- # },
4944
- # {
4945
- # bounding_box: {
4946
- # height: 0.3259260058403015,
4947
- # left: 0.5144439935684204,
4948
- # top: 0.15111100673675537,
4949
- # width: 0.24444399774074554,
5211
+ # height: 0.056759100407361984,
5212
+ # left: 0.3453829884529114,
5213
+ # top: 0.36568498611450195,
5214
+ # width: 0.03177810087800026,
4950
5215
  # },
4951
- # confidence: 99.99949645996094,
4952
- # face_id: "8be04dba-4e58-520d-850e-9eae4af70eb2",
4953
- # image_id: "465f4e93-763e-51d0-b030-b9667a2d94b1",
5216
+ # confidence: 99.76940155029297,
5217
+ # face_id: "c92265d4-5f9c-43af-a58e-12be0ce02bc3",
5218
+ # image_id: "56a0ca74-1c83-39dd-b363-051a64168a65",
5219
+ # index_faces_model_version: "6.0",
5220
+ # user_id: "demoUser2",
4954
5221
  # },
4955
5222
  # {
4956
5223
  # bounding_box: {
4957
- # height: 0.18888899683952332,
4958
- # left: 0.3783380091190338,
4959
- # top: 0.2355560064315796,
4960
- # width: 0.25222599506378174,
5224
+ # height: 0.06347999721765518,
5225
+ # left: 0.5160620212554932,
5226
+ # top: 0.6080359816551208,
5227
+ # width: 0.03254450112581253,
4961
5228
  # },
4962
- # confidence: 99.9999008178711,
4963
- # face_id: "908544ad-edc3-59df-8faf-6a87cc256cf5",
4964
- # image_id: "3c731605-d772-541a-a5e7-0375dbc68a07",
5229
+ # confidence: 99.94369506835938,
5230
+ # face_id: "851cb847-dccc-4fea-9309-9f4805967855",
5231
+ # image_id: "a8aed589-ceec-35f7-9c04-82e0b546b024",
5232
+ # index_faces_model_version: "6.0",
4965
5233
  # },
4966
5234
  # {
4967
5235
  # bounding_box: {
4968
- # height: 0.33481499552726746,
4969
- # left: 0.31888899207115173,
4970
- # top: 0.49333301186561584,
4971
- # width: 0.25,
5236
+ # height: 0.05266290158033371,
5237
+ # left: 0.6513839960098267,
5238
+ # top: 0.4218429923057556,
5239
+ # width: 0.03094629943370819,
4972
5240
  # },
4973
- # confidence: 99.99909973144531,
4974
- # face_id: "ff43d742-0c13-5d16-a3e8-03d3f58e980b",
4975
- # image_id: "465f4e93-763e-51d0-b030-b9667a2d94b1",
5241
+ # confidence: 99.82969665527344,
5242
+ # face_id: "c0eb3b65-24a0-41e1-b23a-1908b1aaeac1",
5243
+ # image_id: "56a0ca74-1c83-39dd-b363-051a64168a65",
5244
+ # index_faces_model_version: "6.0",
4976
5245
  # },
4977
5246
  # ],
4978
5247
  # }
@@ -4983,6 +5252,8 @@ module Aws::Rekognition
4983
5252
  # collection_id: "CollectionId", # required
4984
5253
  # next_token: "PaginationToken",
4985
5254
  # max_results: 1,
5255
+ # user_id: "UserId",
5256
+ # face_ids: ["FaceId"],
4986
5257
  # })
4987
5258
  #
4988
5259
  # @example Response structure
@@ -4997,6 +5268,7 @@ module Aws::Rekognition
4997
5268
  # resp.faces[0].external_image_id #=> String
4998
5269
  # resp.faces[0].confidence #=> Float
4999
5270
  # resp.faces[0].index_faces_model_version #=> String
5271
+ # resp.faces[0].user_id #=> String
5000
5272
  # resp.next_token #=> String
5001
5273
  # resp.face_model_version #=> String
5002
5274
  #
@@ -5162,6 +5434,75 @@ module Aws::Rekognition
5162
5434
  req.send_request(options)
5163
5435
  end
5164
5436
 
5437
+ # Returns metadata of the User such as `UserID` in the specified
5438
+ # collection. Anonymous User (to reserve faces without any identity) is
5439
+ # not returned as part of this request. The results are sorted by system
5440
+ # generated primary key ID. If the response is truncated, `NextToken` is
5441
+ # returned in the response that can be used in the subsequent request to
5442
+ # retrieve the next set of identities.
5443
+ #
5444
+ # @option params [required, String] :collection_id
5445
+ # The ID of an existing collection.
5446
+ #
5447
+ # @option params [Integer] :max_results
5448
+ # Maximum number of UsersID to return.
5449
+ #
5450
+ # @option params [String] :next_token
5451
+ # Pagingation token to receive the next set of UsersID.
5452
+ #
5453
+ # @return [Types::ListUsersResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5454
+ #
5455
+ # * {Types::ListUsersResponse#users #users} => Array&lt;Types::User&gt;
5456
+ # * {Types::ListUsersResponse#next_token #next_token} => String
5457
+ #
5458
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
5459
+ #
5460
+ #
5461
+ # @example Example: ListUsers
5462
+ #
5463
+ # # Returns metadata of the User such as UserID in the specified collection.
5464
+ #
5465
+ # resp = client.list_users({
5466
+ # collection_id: "MyCollection",
5467
+ # })
5468
+ #
5469
+ # resp.to_h outputs the following:
5470
+ # {
5471
+ # next_token: "MGYZLAHX1T5a....",
5472
+ # users: [
5473
+ # {
5474
+ # user_id: "demoUser4",
5475
+ # user_status: "CREATED",
5476
+ # },
5477
+ # {
5478
+ # user_id: "demoUser2",
5479
+ # user_status: "CREATED",
5480
+ # },
5481
+ # ],
5482
+ # }
5483
+ #
5484
+ # @example Request syntax with placeholder values
5485
+ #
5486
+ # resp = client.list_users({
5487
+ # collection_id: "CollectionId", # required
5488
+ # max_results: 1,
5489
+ # next_token: "PaginationToken",
5490
+ # })
5491
+ #
5492
+ # @example Response structure
5493
+ #
5494
+ # resp.users #=> Array
5495
+ # resp.users[0].user_id #=> String
5496
+ # resp.users[0].user_status #=> String, one of "ACTIVE", "UPDATING", "CREATING", "CREATED"
5497
+ # resp.next_token #=> String
5498
+ #
5499
+ # @overload list_users(params = {})
5500
+ # @param [Hash] params ({})
5501
+ def list_users(params = {}, options = {})
5502
+ req = build_request(:list_users, params)
5503
+ req.send_request(options)
5504
+ end
5505
+
5165
5506
  # Attaches a project policy to a Amazon Rekognition Custom Labels
5166
5507
  # project in a trusting AWS account. A project policy specifies that a
5167
5508
  # trusted AWS account can copy a model version from a trusting AWS
@@ -5501,6 +5842,7 @@ module Aws::Rekognition
5501
5842
  # resp.face_matches[0].face.external_image_id #=> String
5502
5843
  # resp.face_matches[0].face.confidence #=> Float
5503
5844
  # resp.face_matches[0].face.index_faces_model_version #=> String
5845
+ # resp.face_matches[0].face.user_id #=> String
5504
5846
  # resp.face_model_version #=> String
5505
5847
  #
5506
5848
  # @overload search_faces(params = {})
@@ -5684,6 +6026,7 @@ module Aws::Rekognition
5684
6026
  # resp.face_matches[0].face.external_image_id #=> String
5685
6027
  # resp.face_matches[0].face.confidence #=> Float
5686
6028
  # resp.face_matches[0].face.index_faces_model_version #=> String
6029
+ # resp.face_matches[0].face.user_id #=> String
5687
6030
  # resp.face_model_version #=> String
5688
6031
  #
5689
6032
  # @overload search_faces_by_image(params = {})
@@ -5693,6 +6036,345 @@ module Aws::Rekognition
5693
6036
  req.send_request(options)
5694
6037
  end
5695
6038
 
6039
+ # Searches for UserIDs within a collection based on a `FaceId` or
6040
+ # `UserId`. This API can be used to find the closest UserID (with a
6041
+ # highest similarity) to associate a face. The request must be provided
6042
+ # with either `FaceId` or `UserId`. The operation returns an array of
6043
+ # UserID that match the `FaceId` or `UserId`, ordered by similarity
6044
+ # score with the highest similarity first.
6045
+ #
6046
+ # @option params [required, String] :collection_id
6047
+ # The ID of an existing collection containing the UserID, used with a
6048
+ # UserId or FaceId. If a FaceId is provided, UserId isn’t required to be
6049
+ # present in the Collection.
6050
+ #
6051
+ # @option params [String] :user_id
6052
+ # ID for the existing User.
6053
+ #
6054
+ # @option params [String] :face_id
6055
+ # ID for the existing face.
6056
+ #
6057
+ # @option params [Float] :user_match_threshold
6058
+ # Optional value that specifies the minimum confidence in the matched
6059
+ # UserID to return. Default value of 80.
6060
+ #
6061
+ # @option params [Integer] :max_users
6062
+ # Maximum number of identities to return.
6063
+ #
6064
+ # @return [Types::SearchUsersResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
6065
+ #
6066
+ # * {Types::SearchUsersResponse#user_matches #user_matches} => Array&lt;Types::UserMatch&gt;
6067
+ # * {Types::SearchUsersResponse#face_model_version #face_model_version} => String
6068
+ # * {Types::SearchUsersResponse#searched_face #searched_face} => Types::SearchedFace
6069
+ # * {Types::SearchUsersResponse#searched_user #searched_user} => Types::SearchedUser
6070
+ #
6071
+ #
6072
+ # @example Example: SearchUsers
6073
+ #
6074
+ # # Searches for UserIDs within a collection based on a FaceId or UserId.
6075
+ #
6076
+ # resp = client.search_users({
6077
+ # collection_id: "MyCollection",
6078
+ # max_users: 2,
6079
+ # user_id: "DemoUser",
6080
+ # user_match_threshold: 70,
6081
+ # })
6082
+ #
6083
+ # resp.to_h outputs the following:
6084
+ # {
6085
+ # face_model_version: "6",
6086
+ # searched_user: {
6087
+ # user_id: "DemoUser",
6088
+ # },
6089
+ # user_matches: [
6090
+ # {
6091
+ # similarity: 99.88186645507812,
6092
+ # user: {
6093
+ # user_id: "demoUser1",
6094
+ # user_status: "ACTIVE",
6095
+ # },
6096
+ # },
6097
+ # ],
6098
+ # }
6099
+ #
6100
+ # @example Request syntax with placeholder values
6101
+ #
6102
+ # resp = client.search_users({
6103
+ # collection_id: "CollectionId", # required
6104
+ # user_id: "UserId",
6105
+ # face_id: "FaceId",
6106
+ # user_match_threshold: 1.0,
6107
+ # max_users: 1,
6108
+ # })
6109
+ #
6110
+ # @example Response structure
6111
+ #
6112
+ # resp.user_matches #=> Array
6113
+ # resp.user_matches[0].similarity #=> Float
6114
+ # resp.user_matches[0].user.user_id #=> String
6115
+ # resp.user_matches[0].user.user_status #=> String, one of "ACTIVE", "UPDATING", "CREATING", "CREATED"
6116
+ # resp.face_model_version #=> String
6117
+ # resp.searched_face.face_id #=> String
6118
+ # resp.searched_user.user_id #=> String
6119
+ #
6120
+ # @overload search_users(params = {})
6121
+ # @param [Hash] params ({})
6122
+ def search_users(params = {}, options = {})
6123
+ req = build_request(:search_users, params)
6124
+ req.send_request(options)
6125
+ end
6126
+
6127
+ # Searches for UserIDs using a supplied image. It first detects the
6128
+ # largest face in the image, and then searches a specified collection
6129
+ # for matching UserIDs.
6130
+ #
6131
+ # The operation returns an array of UserIDs that match the face in the
6132
+ # supplied image, ordered by similarity score with the highest
6133
+ # similarity first. It also returns a bounding box for the face found in
6134
+ # the input image.
6135
+ #
6136
+ # Information about faces detected in the supplied image, but not used
6137
+ # for the search, is returned in an array of `UnsearchedFace` objects.
6138
+ # If no valid face is detected in the image, the response will contain
6139
+ # an empty `UserMatches` list and no `SearchedFace` object.
6140
+ #
6141
+ # @option params [required, String] :collection_id
6142
+ # The ID of an existing collection containing the UserID.
6143
+ #
6144
+ # @option params [required, Types::Image] :image
6145
+ # Provides the input image either as bytes or an S3 object.
6146
+ #
6147
+ # You pass image bytes to an Amazon Rekognition API operation by using
6148
+ # the `Bytes` property. For example, you would use the `Bytes` property
6149
+ # to pass an image loaded from a local file system. Image bytes passed
6150
+ # by using the `Bytes` property must be base64-encoded. Your code may
6151
+ # not need to encode image bytes if you are using an AWS SDK to call
6152
+ # Amazon Rekognition API operations.
6153
+ #
6154
+ # For more information, see Analyzing an Image Loaded from a Local File
6155
+ # System in the Amazon Rekognition Developer Guide.
6156
+ #
6157
+ # You pass images stored in an S3 bucket to an Amazon Rekognition API
6158
+ # operation by using the `S3Object` property. Images stored in an S3
6159
+ # bucket do not need to be base64-encoded.
6160
+ #
6161
+ # The region for the S3 bucket containing the S3 object must match the
6162
+ # region you use for Amazon Rekognition operations.
6163
+ #
6164
+ # If you use the AWS CLI to call Amazon Rekognition operations, passing
6165
+ # image bytes using the Bytes property is not supported. You must first
6166
+ # upload the image to an Amazon S3 bucket and then call the operation
6167
+ # using the S3Object property.
6168
+ #
6169
+ # For Amazon Rekognition to process an S3 object, the user must have
6170
+ # permission to access the S3 object. For more information, see How
6171
+ # Amazon Rekognition works with IAM in the Amazon Rekognition Developer
6172
+ # Guide.
6173
+ #
6174
+ # @option params [Float] :user_match_threshold
6175
+ # Specifies the minimum confidence in the UserID match to return.
6176
+ # Default value is 80.
6177
+ #
6178
+ # @option params [Integer] :max_users
6179
+ # Maximum number of UserIDs to return.
6180
+ #
6181
+ # @option params [String] :quality_filter
6182
+ # A filter that specifies a quality bar for how much filtering is done
6183
+ # to identify faces. Filtered faces aren't searched for in the
6184
+ # collection. The default value is NONE.
6185
+ #
6186
+ # @return [Types::SearchUsersByImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
6187
+ #
6188
+ # * {Types::SearchUsersByImageResponse#user_matches #user_matches} => Array&lt;Types::UserMatch&gt;
6189
+ # * {Types::SearchUsersByImageResponse#face_model_version #face_model_version} => String
6190
+ # * {Types::SearchUsersByImageResponse#searched_face #searched_face} => Types::SearchedFaceDetails
6191
+ # * {Types::SearchUsersByImageResponse#unsearched_faces #unsearched_faces} => Array&lt;Types::UnsearchedFace&gt;
6192
+ #
6193
+ #
6194
+ # @example Example: SearchUsersByImage
6195
+ #
6196
+ # # Searches for UserIDs using a supplied image.
6197
+ #
6198
+ # resp = client.search_users_by_image({
6199
+ # collection_id: "MyCollection",
6200
+ # image: {
6201
+ # s3_object: {
6202
+ # bucket: "bucket",
6203
+ # name: "input.jpg",
6204
+ # },
6205
+ # },
6206
+ # max_users: 2,
6207
+ # quality_filter: "MEDIUM",
6208
+ # user_match_threshold: 70,
6209
+ # })
6210
+ #
6211
+ # resp.to_h outputs the following:
6212
+ # {
6213
+ # face_model_version: "6",
6214
+ # searched_face: {
6215
+ # face_detail: {
6216
+ # bounding_box: {
6217
+ # height: 0.07510016113519669,
6218
+ # left: 0.3598678708076477,
6219
+ # top: 0.5391526818275452,
6220
+ # width: 0.03692837432026863,
6221
+ # },
6222
+ # },
6223
+ # },
6224
+ # unsearched_faces: [
6225
+ # {
6226
+ # face_details: {
6227
+ # bounding_box: {
6228
+ # height: 0.0682177022099495,
6229
+ # left: 0.6102562546730042,
6230
+ # top: 0.5593535900115967,
6231
+ # width: 0.031677018851041794,
6232
+ # },
6233
+ # },
6234
+ # reasons: [
6235
+ # "FACE_NOT_LARGEST",
6236
+ # ],
6237
+ # },
6238
+ # {
6239
+ # face_details: {
6240
+ # bounding_box: {
6241
+ # height: 0.06347997486591339,
6242
+ # left: 0.516062319278717,
6243
+ # top: 0.6080358028411865,
6244
+ # width: 0.03254449740052223,
6245
+ # },
6246
+ # },
6247
+ # reasons: [
6248
+ # "FACE_NOT_LARGEST",
6249
+ # ],
6250
+ # },
6251
+ # ],
6252
+ # user_matches: [
6253
+ # {
6254
+ # similarity: 99.88186645507812,
6255
+ # user: {
6256
+ # user_id: "demoUser1",
6257
+ # user_status: "ACTIVE",
6258
+ # },
6259
+ # },
6260
+ # ],
6261
+ # }
6262
+ #
6263
+ # @example Request syntax with placeholder values
6264
+ #
6265
+ # resp = client.search_users_by_image({
6266
+ # collection_id: "CollectionId", # required
6267
+ # image: { # required
6268
+ # bytes: "data",
6269
+ # s3_object: {
6270
+ # bucket: "S3Bucket",
6271
+ # name: "S3ObjectName",
6272
+ # version: "S3ObjectVersion",
6273
+ # },
6274
+ # },
6275
+ # user_match_threshold: 1.0,
6276
+ # max_users: 1,
6277
+ # quality_filter: "NONE", # accepts NONE, AUTO, LOW, MEDIUM, HIGH
6278
+ # })
6279
+ #
6280
+ # @example Response structure
6281
+ #
6282
+ # resp.user_matches #=> Array
6283
+ # resp.user_matches[0].similarity #=> Float
6284
+ # resp.user_matches[0].user.user_id #=> String
6285
+ # resp.user_matches[0].user.user_status #=> String, one of "ACTIVE", "UPDATING", "CREATING", "CREATED"
6286
+ # resp.face_model_version #=> String
6287
+ # resp.searched_face.face_detail.bounding_box.width #=> Float
6288
+ # resp.searched_face.face_detail.bounding_box.height #=> Float
6289
+ # resp.searched_face.face_detail.bounding_box.left #=> Float
6290
+ # resp.searched_face.face_detail.bounding_box.top #=> Float
6291
+ # resp.searched_face.face_detail.age_range.low #=> Integer
6292
+ # resp.searched_face.face_detail.age_range.high #=> Integer
6293
+ # resp.searched_face.face_detail.smile.value #=> Boolean
6294
+ # resp.searched_face.face_detail.smile.confidence #=> Float
6295
+ # resp.searched_face.face_detail.eyeglasses.value #=> Boolean
6296
+ # resp.searched_face.face_detail.eyeglasses.confidence #=> Float
6297
+ # resp.searched_face.face_detail.sunglasses.value #=> Boolean
6298
+ # resp.searched_face.face_detail.sunglasses.confidence #=> Float
6299
+ # resp.searched_face.face_detail.gender.value #=> String, one of "Male", "Female"
6300
+ # resp.searched_face.face_detail.gender.confidence #=> Float
6301
+ # resp.searched_face.face_detail.beard.value #=> Boolean
6302
+ # resp.searched_face.face_detail.beard.confidence #=> Float
6303
+ # resp.searched_face.face_detail.mustache.value #=> Boolean
6304
+ # resp.searched_face.face_detail.mustache.confidence #=> Float
6305
+ # resp.searched_face.face_detail.eyes_open.value #=> Boolean
6306
+ # resp.searched_face.face_detail.eyes_open.confidence #=> Float
6307
+ # resp.searched_face.face_detail.mouth_open.value #=> Boolean
6308
+ # resp.searched_face.face_detail.mouth_open.confidence #=> Float
6309
+ # resp.searched_face.face_detail.emotions #=> Array
6310
+ # resp.searched_face.face_detail.emotions[0].type #=> String, one of "HAPPY", "SAD", "ANGRY", "CONFUSED", "DISGUSTED", "SURPRISED", "CALM", "UNKNOWN", "FEAR"
6311
+ # resp.searched_face.face_detail.emotions[0].confidence #=> Float
6312
+ # resp.searched_face.face_detail.landmarks #=> Array
6313
+ # resp.searched_face.face_detail.landmarks[0].type #=> String, one of "eyeLeft", "eyeRight", "nose", "mouthLeft", "mouthRight", "leftEyeBrowLeft", "leftEyeBrowRight", "leftEyeBrowUp", "rightEyeBrowLeft", "rightEyeBrowRight", "rightEyeBrowUp", "leftEyeLeft", "leftEyeRight", "leftEyeUp", "leftEyeDown", "rightEyeLeft", "rightEyeRight", "rightEyeUp", "rightEyeDown", "noseLeft", "noseRight", "mouthUp", "mouthDown", "leftPupil", "rightPupil", "upperJawlineLeft", "midJawlineLeft", "chinBottom", "midJawlineRight", "upperJawlineRight"
6314
+ # resp.searched_face.face_detail.landmarks[0].x #=> Float
6315
+ # resp.searched_face.face_detail.landmarks[0].y #=> Float
6316
+ # resp.searched_face.face_detail.pose.roll #=> Float
6317
+ # resp.searched_face.face_detail.pose.yaw #=> Float
6318
+ # resp.searched_face.face_detail.pose.pitch #=> Float
6319
+ # resp.searched_face.face_detail.quality.brightness #=> Float
6320
+ # resp.searched_face.face_detail.quality.sharpness #=> Float
6321
+ # resp.searched_face.face_detail.confidence #=> Float
6322
+ # resp.searched_face.face_detail.face_occluded.value #=> Boolean
6323
+ # resp.searched_face.face_detail.face_occluded.confidence #=> Float
6324
+ # resp.searched_face.face_detail.eye_direction.yaw #=> Float
6325
+ # resp.searched_face.face_detail.eye_direction.pitch #=> Float
6326
+ # resp.searched_face.face_detail.eye_direction.confidence #=> Float
6327
+ # resp.unsearched_faces #=> Array
6328
+ # resp.unsearched_faces[0].face_details.bounding_box.width #=> Float
6329
+ # resp.unsearched_faces[0].face_details.bounding_box.height #=> Float
6330
+ # resp.unsearched_faces[0].face_details.bounding_box.left #=> Float
6331
+ # resp.unsearched_faces[0].face_details.bounding_box.top #=> Float
6332
+ # resp.unsearched_faces[0].face_details.age_range.low #=> Integer
6333
+ # resp.unsearched_faces[0].face_details.age_range.high #=> Integer
6334
+ # resp.unsearched_faces[0].face_details.smile.value #=> Boolean
6335
+ # resp.unsearched_faces[0].face_details.smile.confidence #=> Float
6336
+ # resp.unsearched_faces[0].face_details.eyeglasses.value #=> Boolean
6337
+ # resp.unsearched_faces[0].face_details.eyeglasses.confidence #=> Float
6338
+ # resp.unsearched_faces[0].face_details.sunglasses.value #=> Boolean
6339
+ # resp.unsearched_faces[0].face_details.sunglasses.confidence #=> Float
6340
+ # resp.unsearched_faces[0].face_details.gender.value #=> String, one of "Male", "Female"
6341
+ # resp.unsearched_faces[0].face_details.gender.confidence #=> Float
6342
+ # resp.unsearched_faces[0].face_details.beard.value #=> Boolean
6343
+ # resp.unsearched_faces[0].face_details.beard.confidence #=> Float
6344
+ # resp.unsearched_faces[0].face_details.mustache.value #=> Boolean
6345
+ # resp.unsearched_faces[0].face_details.mustache.confidence #=> Float
6346
+ # resp.unsearched_faces[0].face_details.eyes_open.value #=> Boolean
6347
+ # resp.unsearched_faces[0].face_details.eyes_open.confidence #=> Float
6348
+ # resp.unsearched_faces[0].face_details.mouth_open.value #=> Boolean
6349
+ # resp.unsearched_faces[0].face_details.mouth_open.confidence #=> Float
6350
+ # resp.unsearched_faces[0].face_details.emotions #=> Array
6351
+ # resp.unsearched_faces[0].face_details.emotions[0].type #=> String, one of "HAPPY", "SAD", "ANGRY", "CONFUSED", "DISGUSTED", "SURPRISED", "CALM", "UNKNOWN", "FEAR"
6352
+ # resp.unsearched_faces[0].face_details.emotions[0].confidence #=> Float
6353
+ # resp.unsearched_faces[0].face_details.landmarks #=> Array
6354
+ # resp.unsearched_faces[0].face_details.landmarks[0].type #=> String, one of "eyeLeft", "eyeRight", "nose", "mouthLeft", "mouthRight", "leftEyeBrowLeft", "leftEyeBrowRight", "leftEyeBrowUp", "rightEyeBrowLeft", "rightEyeBrowRight", "rightEyeBrowUp", "leftEyeLeft", "leftEyeRight", "leftEyeUp", "leftEyeDown", "rightEyeLeft", "rightEyeRight", "rightEyeUp", "rightEyeDown", "noseLeft", "noseRight", "mouthUp", "mouthDown", "leftPupil", "rightPupil", "upperJawlineLeft", "midJawlineLeft", "chinBottom", "midJawlineRight", "upperJawlineRight"
6355
+ # resp.unsearched_faces[0].face_details.landmarks[0].x #=> Float
6356
+ # resp.unsearched_faces[0].face_details.landmarks[0].y #=> Float
6357
+ # resp.unsearched_faces[0].face_details.pose.roll #=> Float
6358
+ # resp.unsearched_faces[0].face_details.pose.yaw #=> Float
6359
+ # resp.unsearched_faces[0].face_details.pose.pitch #=> Float
6360
+ # resp.unsearched_faces[0].face_details.quality.brightness #=> Float
6361
+ # resp.unsearched_faces[0].face_details.quality.sharpness #=> Float
6362
+ # resp.unsearched_faces[0].face_details.confidence #=> Float
6363
+ # resp.unsearched_faces[0].face_details.face_occluded.value #=> Boolean
6364
+ # resp.unsearched_faces[0].face_details.face_occluded.confidence #=> Float
6365
+ # resp.unsearched_faces[0].face_details.eye_direction.yaw #=> Float
6366
+ # resp.unsearched_faces[0].face_details.eye_direction.pitch #=> Float
6367
+ # resp.unsearched_faces[0].face_details.eye_direction.confidence #=> Float
6368
+ # resp.unsearched_faces[0].reasons #=> Array
6369
+ # resp.unsearched_faces[0].reasons[0] #=> String, one of "FACE_NOT_LARGEST", "EXCEEDS_MAX_FACES", "EXTREME_POSE", "LOW_BRIGHTNESS", "LOW_SHARPNESS", "LOW_CONFIDENCE", "SMALL_BOUNDING_BOX", "LOW_FACE_QUALITY"
6370
+ #
6371
+ # @overload search_users_by_image(params = {})
6372
+ # @param [Hash] params ({})
6373
+ def search_users_by_image(params = {}, options = {})
6374
+ req = build_request(:search_users_by_image, params)
6375
+ req.send_request(options)
6376
+ end
6377
+
5696
6378
  # Starts asynchronous recognition of celebrities in a stored video.
5697
6379
  #
5698
6380
  # Amazon Rekognition Video can detect celebrities in a video must be
@@ -6808,7 +7490,7 @@ module Aws::Rekognition
6808
7490
  params: params,
6809
7491
  config: config)
6810
7492
  context[:gem_name] = 'aws-sdk-rekognition'
6811
- context[:gem_version] = '1.80.0'
7493
+ context[:gem_version] = '1.82.0'
6812
7494
  Seahorse::Client::Request.new(handlers, context)
6813
7495
  end
6814
7496