Skip to content

Module veryfi.w2s

View Source
import os

import base64

from typing import Dict, Optional

from veryfi.client_base import Client

from veryfi._w2s.w2_split import W2Split

class W2s(W2Split):

    def __init__(self, client: Client):

        self.client = client

    def process_w2_document_url(

        self, file_url: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_url: Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg".

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        if file_name is None:

            file_name = os.path.basename(file_url)

        endpoint_name = "/w2s/"

        request_arguments = {

            "file_name": file_name,

            "file_url": file_url,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

    def process_w2_document(

        self, file_path: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_path: Path on disk to a file to submit for data extraction

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        endpoint_name = "/w2s/"

        if file_name is None:

            file_name = os.path.basename(file_path)

        with open(file_path, "rb") as image_file:

            base64_encoded_string = base64.b64encode(image_file.read()).decode("utf-8")

        request_arguments = {

            "file_name": file_name,

            "file_data": base64_encoded_string,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

    def get_w2(self, document_id: int, **kwargs) -> Dict:

        """

        Get W-2 endpoint allows you to retrieve a previously processed W-2

        https://docs.veryfi.com/api/w2s/get-a-w-2/

        :param document_id: The unique identifier of the document.

        :param kwargs: Additional query parameters

        :return: Document Data

        """

        endpoint_name = f"/w2s/{document_id}/"

        return self.client._request("GET", endpoint_name, {}, kwargs)

    def get_w2s(

        self,

        created_date_gt: Optional[str] = None,

        created_date_gte: Optional[str] = None,

        created_date_lt: Optional[str] = None,

        created_date_lte: Optional[str] = None,

        **kwargs: Dict,

    ):

        """

        Get list of w2s documents.

        https://docs.veryfi.com/api/w2s/get-w-2-s/

        :param created_date__gt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__gte: Search for w2s documents with a created date greater than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__lt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param created_date__lte: Search for w2s documents with a created date less than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param kwargs: Additional query parameters

        :return: List of previously processed documents

        """

        query_params = {}

        if created_date_gt:

            query_params["created_date__gt"] = created_date_gt

        if created_date_gte:

            query_params["created_date__gte"] = created_date_gte

        if created_date_lt:

            query_params["created_date__lt"] = created_date_lt

        if created_date_lte:

            query_params["created_date__lte"] = created_date_lte

        query_params.update(kwargs)

        endpoint_name = "/w2s/"

        return self.client._request("GET", endpoint_name, {}, query_params)

    def delete_w2(self, document_id: int):

        """

        Delete a w2 document.

        https://docs.veryfi.com/api/w2s/delete-a-w-2/

        """

        endpoint_name = f"/w2s/{document_id}/"

        self.client._request("DELETE", endpoint_name, {})

Classes

W2s

class W2s(
    client: veryfi.client_base.Client
)
View Source
class W2s(W2Split):

    def __init__(self, client: Client):

        self.client = client

    def process_w2_document_url(

        self, file_url: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_url: Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg".

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        if file_name is None:

            file_name = os.path.basename(file_url)

        endpoint_name = "/w2s/"

        request_arguments = {

            "file_name": file_name,

            "file_url": file_url,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

    def process_w2_document(

        self, file_path: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_path: Path on disk to a file to submit for data extraction

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        endpoint_name = "/w2s/"

        if file_name is None:

            file_name = os.path.basename(file_path)

        with open(file_path, "rb") as image_file:

            base64_encoded_string = base64.b64encode(image_file.read()).decode("utf-8")

        request_arguments = {

            "file_name": file_name,

            "file_data": base64_encoded_string,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

    def get_w2(self, document_id: int, **kwargs) -> Dict:

        """

        Get W-2 endpoint allows you to retrieve a previously processed W-2

        https://docs.veryfi.com/api/w2s/get-a-w-2/

        :param document_id: The unique identifier of the document.

        :param kwargs: Additional query parameters

        :return: Document Data

        """

        endpoint_name = f"/w2s/{document_id}/"

        return self.client._request("GET", endpoint_name, {}, kwargs)

    def get_w2s(

        self,

        created_date_gt: Optional[str] = None,

        created_date_gte: Optional[str] = None,

        created_date_lt: Optional[str] = None,

        created_date_lte: Optional[str] = None,

        **kwargs: Dict,

    ):

        """

        Get list of w2s documents.

        https://docs.veryfi.com/api/w2s/get-w-2-s/

        :param created_date__gt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__gte: Search for w2s documents with a created date greater than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__lt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param created_date__lte: Search for w2s documents with a created date less than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param kwargs: Additional query parameters

        :return: List of previously processed documents

        """

        query_params = {}

        if created_date_gt:

            query_params["created_date__gt"] = created_date_gt

        if created_date_gte:

            query_params["created_date__gte"] = created_date_gte

        if created_date_lt:

            query_params["created_date__lt"] = created_date_lt

        if created_date_lte:

            query_params["created_date__lte"] = created_date_lte

        query_params.update(kwargs)

        endpoint_name = "/w2s/"

        return self.client._request("GET", endpoint_name, {}, query_params)

    def delete_w2(self, document_id: int):

        """

        Delete a w2 document.

        https://docs.veryfi.com/api/w2s/delete-a-w-2/

        """

        endpoint_name = f"/w2s/{document_id}/"

        self.client._request("DELETE", endpoint_name, {})

Ancestors (in MRO)

  • veryfi._w2s.w2_split.W2Split

Descendants

  • veryfi.client.Client

Methods

delete_w2

def delete_w2(
    self,
    document_id: int
)

Delete a w2 document.

https://docs.veryfi.com/api/w2s/delete-a-w-2/

View Source
    def delete_w2(self, document_id: int):

        """

        Delete a w2 document.

        https://docs.veryfi.com/api/w2s/delete-a-w-2/

        """

        endpoint_name = f"/w2s/{document_id}/"

        self.client._request("DELETE", endpoint_name, {})

get_documents_from_w2

def get_documents_from_w2(
    self,
    document_id: int
) -> Dict

Veryfi's Get Documents from W-2 endpoint allows you to retrieve a collection of previously processed W-2s.

https://docs.veryfi.com/api/get-documents-from-w-2/

Parameters:

Name Type Description Default
document_id None The unique identifier of the document. None

Returns:

Type Description
None Document Response
View Source
    def get_documents_from_w2(self, document_id: int) -> Dict:

        """

        Veryfi's Get Documents from W-2 endpoint allows you to retrieve a collection of previously processed W-2s.

        https://docs.veryfi.com/api/get-documents-from-w-2/

        :param document_id: The unique identifier of the document.

        :return: Document Response

        """

        endpoint_name = f"/w2s-set/{document_id}/"

        return self.client._request("GET", endpoint_name, {})

get_list_of_w2s

def get_list_of_w2s(
    self,
    **kwargs
) -> Dict

Veryfi's Get List of W-2s endpoint allows you to retrieve a collection of previously processed W-2s.

https://docs.veryfi.com/api/get-list-of-documents-from-w-2/

Parameters:

Name Type Description Default
kwargs None Query parameters None

Returns:

Type Description
None List of W-2s
View Source
    def get_list_of_w2s(self, **kwargs) -> Dict:

        """

        Veryfi's Get List of W-2s endpoint allows you to retrieve a collection of previously processed W-2s.

        https://docs.veryfi.com/api/get-list-of-documents-from-w-2/

        :param kwargs: Query parameters

        :return: List of W-2s

        """

        endpoint_name = "/w2s-set/"

        return self.client._request("GET", endpoint_name, {}, kwargs)

get_w2

def get_w2(
    self,
    document_id: int,
    **kwargs
) -> Dict

Get W-2 endpoint allows you to retrieve a previously processed W-2

https://docs.veryfi.com/api/w2s/get-a-w-2/

Parameters:

Name Type Description Default
document_id None The unique identifier of the document. None
kwargs None Additional query parameters None

Returns:

Type Description
None Document Data
View Source
    def get_w2(self, document_id: int, **kwargs) -> Dict:

        """

        Get W-2 endpoint allows you to retrieve a previously processed W-2

        https://docs.veryfi.com/api/w2s/get-a-w-2/

        :param document_id: The unique identifier of the document.

        :param kwargs: Additional query parameters

        :return: Document Data

        """

        endpoint_name = f"/w2s/{document_id}/"

        return self.client._request("GET", endpoint_name, {}, kwargs)

get_w2s

def get_w2s(
    self,
    created_date_gt: Optional[str] = None,
    created_date_gte: Optional[str] = None,
    created_date_lt: Optional[str] = None,
    created_date_lte: Optional[str] = None,
    **kwargs: Dict
)

Get list of w2s documents.

https://docs.veryfi.com/api/w2s/get-w-2-s/

Parameters:

Name Type Description Default
created_date__gt None Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request. None
created_date__gte None Search for w2s documents with a created date greater than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request. None
created_date__lt None Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request. None
created_date__lte None Search for w2s documents with a created date less than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request. None
kwargs None Additional query parameters None

Returns:

Type Description
None List of previously processed documents
View Source
    def get_w2s(

        self,

        created_date_gt: Optional[str] = None,

        created_date_gte: Optional[str] = None,

        created_date_lt: Optional[str] = None,

        created_date_lte: Optional[str] = None,

        **kwargs: Dict,

    ):

        """

        Get list of w2s documents.

        https://docs.veryfi.com/api/w2s/get-w-2-s/

        :param created_date__gt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__gte: Search for w2s documents with a created date greater than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__gt and created_date__gte in a single request.

        :param created_date__lt:    Search for w2s documents with a created date greater than this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param created_date__lte: Search for w2s documents with a created date less than or equal to this one. Format YYYY-MM-DD+HH:MM:SS. Don't send both created_date__lt and created_date__lte in a single request.

        :param kwargs: Additional query parameters

        :return: List of previously processed documents

        """

        query_params = {}

        if created_date_gt:

            query_params["created_date__gt"] = created_date_gt

        if created_date_gte:

            query_params["created_date__gte"] = created_date_gte

        if created_date_lt:

            query_params["created_date__lt"] = created_date_lt

        if created_date_lte:

            query_params["created_date__lte"] = created_date_lte

        query_params.update(kwargs)

        endpoint_name = "/w2s/"

        return self.client._request("GET", endpoint_name, {}, query_params)

process_w2_document

def process_w2_document(
    self,
    file_path: str,
    file_name: Optional[str] = None,
    **kwargs
) -> Dict

Process W2 Document from url and extract all the fields from it.

https://docs.veryfi.com/api/w2s/process-a-w-2/

Parameters:

Name Type Description Default
file_path None Path on disk to a file to submit for data extraction None
file_name None Optional name of file, eg. receipt.jpg None
kwargs None Additional body parameters None

Returns:

Type Description
None Data extracted from the w2.
View Source
    def process_w2_document(

        self, file_path: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_path: Path on disk to a file to submit for data extraction

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        endpoint_name = "/w2s/"

        if file_name is None:

            file_name = os.path.basename(file_path)

        with open(file_path, "rb") as image_file:

            base64_encoded_string = base64.b64encode(image_file.read()).decode("utf-8")

        request_arguments = {

            "file_name": file_name,

            "file_data": base64_encoded_string,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

process_w2_document_url

def process_w2_document_url(
    self,
    file_url: str,
    file_name: Optional[str] = None,
    **kwargs
) -> Dict

Process W2 Document from url and extract all the fields from it.

https://docs.veryfi.com/api/w2s/process-a-w-2/

Parameters:

Name Type Description Default
file_url None Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg". None
file_name None Optional name of file, eg. receipt.jpg None
kwargs None Additional body parameters None

Returns:

Type Description
None Data extracted from the w2.
View Source
    def process_w2_document_url(

        self, file_url: str, file_name: Optional[str] = None, **kwargs

    ) -> Dict:

        """

        Process W2 Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/w2s/process-a-w-2/

        :param file_url: Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg".

        :param file_name: Optional name of file, eg. receipt.jpg

        :param kwargs: Additional body parameters

        :return: Data extracted from the w2.

        """

        if file_name is None:

            file_name = os.path.basename(file_url)

        endpoint_name = "/w2s/"

        request_arguments = {

            "file_name": file_name,

            "file_url": file_url,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

split_and_process_w2

def split_and_process_w2(
    self,
    file_path: str,
    **kwargs
) -> Dict

Process a document and extract all the fields from it

https://docs.veryfi.com/api/split-and-process-a-w-2/

Parameters:

Name Type Description Default
file_path None Path on disk to a file to submit for data extraction None
kwargs None Additional body parameters None

Returns:

Type Description
None Data extracted from the document
View Source
    def split_and_process_w2(self, file_path: str, **kwargs) -> Dict:

        """

        Process a document and extract all the fields from it

        https://docs.veryfi.com/api/split-and-process-a-w-2/

        :param file_path: Path on disk to a file to submit for data extraction

        :param kwargs: Additional body parameters

        :return: Data extracted from the document

        """

        endpoint_name = "/w2s-set/"

        file_name = os.path.basename(file_path)

        with open(file_path, "rb") as image_file:

            base64_encoded_string = base64.b64encode(image_file.read()).decode("utf-8")

        request_arguments = {

            "file_name": file_name,

            "file_data": base64_encoded_string,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)

split_and_process_w2_url

def split_and_process_w2_url(
    self,
    file_url: Optional[str] = None,
    file_urls: Optional[List[str]] = None,
    max_pages_to_process: Optional[int] = None,
    **kwargs
) -> Dict

Process Document from url and extract all the fields from it.

https://docs.veryfi.com/api/split-and-process-a-w-2/

Parameters:

Name Type Description Default
file_url None Required if file_urls isn't specified. Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg". None
file_urls None Required if file_url isn't specifies. List of publicly accessible URLs to multiple files, e.g. ["https://cdn.example.com/receipt1.jpg", "https://cdn.example.com/receipt2.jpg"] None
max_pages_to_process None When sending a long document to Veryfi for processing, this parameter controls how many pages of the document will be read and processed, starting from page 1. None
kwargs None Additional body parameters None

Returns:

Type Description
None Data extracted from the document.
View Source
    def split_and_process_w2_url(

        self,

        file_url: Optional[str] = None,

        file_urls: Optional[List[str]] = None,

        max_pages_to_process: Optional[int] = None,

        **kwargs,

    ) -> Dict:

        """Process Document from url and extract all the fields from it.

        https://docs.veryfi.com/api/split-and-process-a-w-2/

        :param file_url: Required if file_urls isn't specified. Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg".

        :param file_urls: Required if file_url isn't specifies. List of publicly accessible URLs to multiple files, e.g. ["https://cdn.example.com/receipt1.jpg", "https://cdn.example.com/receipt2.jpg"]

        :param max_pages_to_process: When sending a long document to Veryfi for processing, this parameter controls how many pages of the document will be read and processed, starting from page 1.

        :param kwargs: Additional body parameters

        :return: Data extracted from the document.

        """

        endpoint_name = "/w2s-set/"

        request_arguments = {

            "file_url": file_url,

            "file_urls": file_urls,

            "max_pages_to_process": max_pages_to_process,

        }

        request_arguments.update(kwargs)

        return self.client._request("POST", endpoint_name, request_arguments)