def take(type, object_id, apply_scope, user_data:nil, custom_headers:nil)
      response = take_async(type, object_id, apply_scope, user_data:user_data, custom_headers:custom_headers).value!
      nil
    end
def take(type, object_id, apply_scope, user_data:nil, custom_headers:nil)
      response = take_async(type, object_id, apply_scope, user_data:user_data, custom_headers:custom_headers).value!
      nil
    end
Submit an operation to take a snapshot of face list, large face list, person
 group or large person group, with user-specified snapshot type, source object
 id, apply scope and an optional user data.<br />
 The snapshot interfaces are for users to backup and restore their face data
 from one face subscription to another, inside same region or across regions.
 The workflow contains two phases, user first calls Snapshot - Take to create
 a copy of the source object and store it as a snapshot, then calls Snapshot -
 Apply to paste the snapshot to target subscription. The snapshots are stored
 in a centralized location (per Azure instance), so that they can be applied
 cross accounts and regions.<br />
 Taking snapshot is an asynchronous operation. An operation id can be obtained
 from the "Operation-Location" field in response header, to be used in
 OperationStatus - Get for tracking the progress of creating the snapshot. The
 snapshot id will be included in the "resourceLocation" field in
 OperationStatus - Get response when the operation status is "succeeded".<br
 />
 Snapshot taking time depends on the number of person and face entries in the
 source object. It could be in seconds, or up to several hours for 1,000,000
 persons with multiple faces.<br />
 Snapshots will be automatically expired and cleaned in 48 hours after it is
 created by Snapshot - Take. User can delete the snapshot using Snapshot -
 Delete by themselves any time before expiration.<br />
 Taking snapshot for a certain object will not block any other operations
 against the object. All read-only operations (Get/List and
 Identify/FindSimilar/Verify) can be conducted as usual. For all writable
 operations, including Add/Update/Delete the source object or its
 persons/faces and Train, they are not blocked but not recommended because
 writable updates may not be reflected on the snapshot during its taking.
 After snapshot taking is completed, all readable and writable operations can
 work as normal. Snapshot will also include the training results of the source
 object, which means target subscription the snapshot applied to does not need
 re-train the target object before calling Identify/FindSimilar.<br />
 * Free-tier subscription quota: 100 take operations per month.
 * S0-tier subscription quota: 100 take operations per day.

 @param type [SnapshotObjectType] User specified type for the source object to
 take snapshot from. Currently FaceList, PersonGroup, LargeFaceList and
 LargePersonGroup are supported. Possible values include: 'FaceList',
 'LargeFaceList', 'LargePersonGroup', 'PersonGroup'
 @param object_id [String] User specified source object id to take snapshot
 from.
 @param apply_scope User specified array of target Face subscription ids for
 the snapshot. For each snapshot, only subscriptions included in the
 applyScope of Snapshot - Take can apply it.
 @param user_data [String] User specified data about the snapshot for any
 purpose. Length should not exceed 16KB.
 @param custom_headers [Hash{String => String}] A hash of custom headers that
 will be added to the HTTP request.