azure-cognitiveservices-vision-face/azure/cognitiveservices/vision/face/operations/snapshot_operations.py
def take(
            self, type, object_id, apply_scope, user_data=None, custom_headers=None, raw=False, **operation_config):
        """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: 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'
        :type type: str or
         ~azure.cognitiveservices.vision.face.models.SnapshotObjectType
        :param object_id: User specified source object id to take snapshot
         from.
        :type object_id: str
        :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.
        :type apply_scope: list[str]
        :param user_data: User specified data about the snapshot for any
         purpose. Length should not exceed 16KB.
        :type user_data: str
        :param dict custom_headers: headers that will be added to the request
        :param bool raw: returns the direct response alongside the
         deserialized response
        :param operation_config: :ref:`Operation configuration
         overrides<msrest:optionsforoperations>`.
        :return: None or ClientRawResponse if raw=true
        :rtype: None or ~msrest.pipeline.ClientRawResponse
        :raises:
         :class:`APIErrorException<azure.cognitiveservices.vision.face.models.APIErrorException>`
        """
        body = models.TakeSnapshotRequest(type=type, object_id=object_id, apply_scope=apply_scope, user_data=user_data)

        # Construct URL
        url = self.take.metadata['url']
        path_format_arguments = {
            'Endpoint': self._serialize.url("self.config.endpoint", self.config.endpoint, 'str', skip_quote=True)
        }
        url = self._client.format_url(url, **path_format_arguments)

        # Construct parameters
        query_parameters = {}

        # Construct headers
        header_parameters = {}
        header_parameters['Content-Type'] = 'application/json; charset=utf-8'
        if custom_headers:
            header_parameters.update(custom_headers)

        # Construct body
        body_content = self._serialize.body(body, 'TakeSnapshotRequest')

        # Construct and send request
        request = self._client.post(url, query_parameters, header_parameters, body_content)
        response = self._client.send(request, stream=False, **operation_config)

        if response.status_code not in [202]:
            raise models.APIErrorException(self._deserialize, response)

        if raw:
            client_raw_response = ClientRawResponse(None, response)
            client_raw_response.add_headers({
                'Operation-Location': 'str',
            })
            return client_raw_response
def take(
            self, type, object_id, apply_scope, user_data=None, custom_headers=None, raw=False, **operation_config):
        """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: 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'
        :type type: str or
         ~azure.cognitiveservices.vision.face.models.SnapshotObjectType
        :param object_id: User specified source object id to take snapshot
         from.
        :type object_id: str
        :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.
        :type apply_scope: list[str]
        :param user_data: User specified data about the snapshot for any
         purpose. Length should not exceed 16KB.
        :type user_data: str
        :param dict custom_headers: headers that will be added to the request
        :param bool raw: returns the direct response alongside the
         deserialized response
        :param operation_config: :ref:`Operation configuration
         overrides<msrest:optionsforoperations>`.
        :return: None or ClientRawResponse if raw=true
        :rtype: None or ~msrest.pipeline.ClientRawResponse
        :raises:
         :class:`APIErrorException<azure.cognitiveservices.vision.face.models.APIErrorException>`
        """
        body = models.TakeSnapshotRequest(type=type, object_id=object_id, apply_scope=apply_scope, user_data=user_data)

        # Construct URL
        url = self.take.metadata['url']
        path_format_arguments = {
            'Endpoint': self._serialize.url("self.config.endpoint", self.config.endpoint, 'str', skip_quote=True)
        }
        url = self._client.format_url(url, **path_format_arguments)

        # Construct parameters
        query_parameters = {}

        # Construct headers
        header_parameters = {}
        header_parameters['Content-Type'] = 'application/json; charset=utf-8'
        if custom_headers:
            header_parameters.update(custom_headers)

        # Construct body
        body_content = self._serialize.body(body, 'TakeSnapshotRequest')

        # Construct and send request
        request = self._client.post(url, query_parameters, header_parameters, body_content)
        response = self._client.send(request, stream=False, **operation_config)

        if response.status_code not in [202]:
            raise models.APIErrorException(self._deserialize, response)

        if raw:
            client_raw_response = ClientRawResponse(None, response)
            client_raw_response.add_headers({
                'Operation-Location': 'str',
            })
            return client_raw_response
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: 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'
        :type type: str or
         ~azure.cognitiveservices.vision.face.models.SnapshotObjectType
        :param object_id: User specified source object id to take snapshot
         from.
        :type object_id: str
        :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.
        :type apply_scope: list[str]
        :param user_data: User specified data about the snapshot for any
         purpose. Length should not exceed 16KB.
        :type user_data: str
        :param dict custom_headers: headers that will be added to the request
        :param bool raw: returns the direct response alongside the
         deserialized response
        :param operation_config: :ref:`Operation configuration
         overrides<msrest:optionsforoperations>`.
        :return: None or ClientRawResponse if raw=true
        :rtype: None or ~msrest.pipeline.ClientRawResponse
        :raises:
         :class:`APIErrorException<azure.cognitiveservices.vision.face.models.APIErrorException>`