# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.8.3, generator: @autorest/python@5.11.2)
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from azure.core.exceptions import HttpResponseError
import msrest.serialization


class Annotation(msrest.serialization.Model):
    """Annotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        """
        super(Annotation, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]


class Components11Zi81FSchemasInvoicedataPropertiesBankswiftAllof2(msrest.serialization.Model):
    """Components11Zi81FSchemasInvoicedataPropertiesBankswiftAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components11Zi81FSchemasInvoicedataPropertiesBankswiftAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components14Dm0XSchemasInvoicedataPropertiesBankaccountnumberAllof2(
    msrest.serialization.Model
):
    """Components14Dm0XSchemasInvoicedataPropertiesBankaccountnumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components14Dm0XSchemasInvoicedataPropertiesBankaccountnumberAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components14V23KqSchemasInvoicedataPropertiesPaymentamountdueAllof2(
    msrest.serialization.Model
):
    """Components14V23KqSchemasInvoicedataPropertiesPaymentamountdueAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components14V23KqSchemasInvoicedataPropertiesPaymentamountdueAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components15Ayv0YSchemasInvoicedataPropertiesPaymentamounttotalAllof2(
    msrest.serialization.Model
):
    """Components15Ayv0YSchemasInvoicedataPropertiesPaymentamounttotalAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            Components15Ayv0YSchemasInvoicedataPropertiesPaymentamounttotalAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components179Pdz6SchemasInvoicedataPropertiesSupplierwebsiteAllof2(
    msrest.serialization.Model
):
    """Components179Pdz6SchemasInvoicedataPropertiesSupplierwebsiteAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components179Pdz6SchemasInvoicedataPropertiesSupplierwebsiteAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components17Ashz6SchemasInvoicePropertiesMetaAllof1(msrest.serialization.Model):
    """Components17Ashz6SchemasInvoicePropertiesMetaAllof1.

    :ivar review_url: Signed URL (valid for 60 minutes) to access the invoice review tool.
    :vartype review_url: str
    """

    _attribute_map = {
        "review_url": {"key": "reviewUrl", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword review_url: Signed URL (valid for 60 minutes) to access the invoice review tool.
        :paramtype review_url: str
        """
        super(Components17Ashz6SchemasInvoicePropertiesMetaAllof1, self).__init__(**kwargs)
        self.review_url = kwargs.get("review_url", None)


class Components1Bh8NlbSchemasInvoicedataPropertiesBpaybillercodeAllof2(
    msrest.serialization.Model
):
    """Components1Bh8NlbSchemasInvoicedataPropertiesBpaybillercodeAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1Bh8NlbSchemasInvoicedataPropertiesBpaybillercodeAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1ByjheSchemasInvoicedataPropertiesSupplierfaxAllof2(msrest.serialization.Model):
    """Components1ByjheSchemasInvoicedataPropertiesSupplierfaxAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1ByjheSchemasInvoicedataPropertiesSupplierfaxAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1Fdmi0OSchemasInvoicedataPropertiesSuppliervatAllof2(msrest.serialization.Model):
    """Components1Fdmi0OSchemasInvoicedataPropertiesSuppliervatAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1Fdmi0OSchemasInvoicedataPropertiesSuppliervatAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1LdfgdeSchemasInvoicedataPropertiesPaymentamountpaidAllof2(
    msrest.serialization.Model
):
    """Components1LdfgdeSchemasInvoicedataPropertiesPaymentamountpaidAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1LdfgdeSchemasInvoicedataPropertiesPaymentamountpaidAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1O4BmpySchemasInvoicedataPropertiesSuppliercompanynameAllof2(
    msrest.serialization.Model
):
    """Components1O4BmpySchemasInvoicedataPropertiesSuppliercompanynameAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            Components1O4BmpySchemasInvoicedataPropertiesSuppliercompanynameAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1OmsnpSchemasInvoicedataPropertiesBpayreferenceAllof2(msrest.serialization.Model):
    """Components1OmsnpSchemasInvoicedataPropertiesBpayreferenceAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1OmsnpSchemasInvoicedataPropertiesBpayreferenceAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1Rbm6P1SchemasInvoicedataPropertiesBanksortcodeAllof2(msrest.serialization.Model):
    """Components1Rbm6P1SchemasInvoicedataPropertiesBanksortcodeAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1Rbm6P1SchemasInvoicedataPropertiesBanksortcodeAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification(
    msrest.serialization.Model
):
    """Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification.

    :ivar title: SOC2020 classification for this job title.
    :vartype title: str
    :ivar minor_group: SOC2020 minor group.
    :vartype minor_group: str
    :ivar sub_major_group: SOC2020 sub major group.
    :vartype sub_major_group: str
    :ivar major_group: SOC2020 major group.
    :vartype major_group: str
    :ivar soc_code: The 4 digit code representing the SOC2020 classification for this job title.
    :vartype soc_code: int
    """

    _attribute_map = {
        "title": {"key": "title", "type": "str"},
        "minor_group": {"key": "minorGroup", "type": "str"},
        "sub_major_group": {"key": "subMajorGroup", "type": "str"},
        "major_group": {"key": "majorGroup", "type": "str"},
        "soc_code": {"key": "socCode", "type": "int"},
    }

    def __init__(self, **kwargs):
        """
        :keyword title: SOC2020 classification for this job title.
        :paramtype title: str
        :keyword minor_group: SOC2020 minor group.
        :paramtype minor_group: str
        :keyword sub_major_group: SOC2020 sub major group.
        :paramtype sub_major_group: str
        :keyword major_group: SOC2020 major group.
        :paramtype major_group: str
        :keyword soc_code: The 4 digit code representing the SOC2020 classification for this job title.
        :paramtype soc_code: int
        """
        super(
            Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification,
            self,
        ).__init__(**kwargs)
        self.title = kwargs.get("title", None)
        self.minor_group = kwargs.get("minor_group", None)
        self.sub_major_group = kwargs.get("sub_major_group", None)
        self.major_group = kwargs.get("major_group", None)
        self.soc_code = kwargs.get("soc_code", None)


class Components1Wx56HlSchemasInvoicedataPropertiesPaymentreferenceAllof2(
    msrest.serialization.Model
):
    """Components1Wx56HlSchemasInvoicedataPropertiesPaymentreferenceAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components1Wx56HlSchemasInvoicedataPropertiesPaymentreferenceAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components2Hu973SchemasInvoicedataPropertiesCustomernumberAllof2(msrest.serialization.Model):
    """Components2Hu973SchemasInvoicedataPropertiesCustomernumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components2Hu973SchemasInvoicedataPropertiesCustomernumberAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components55Nj82SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof2(
    msrest.serialization.Model
):
    """Components55Nj82SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            Components55Nj82SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components5PwavySchemasInvoicedataPropertiesCustomeremailAllof2(msrest.serialization.Model):
    """Components5PwavySchemasInvoicedataPropertiesCustomeremailAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components5PwavySchemasInvoicedataPropertiesCustomeremailAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components6DhvidSchemasInvoicedataPropertiesCustomercompanynameAllof2(
    msrest.serialization.Model
):
    """Components6DhvidSchemasInvoicedataPropertiesCustomercompanynameAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            Components6DhvidSchemasInvoicedataPropertiesCustomercompanynameAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class Components7CqvqpSchemasInvoicedataPropertiesInvoicenumberAllof2(msrest.serialization.Model):
    """Components7CqvqpSchemasInvoicedataPropertiesInvoicenumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(Components7CqvqpSchemasInvoicedataPropertiesInvoicenumberAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsBvthtoSchemasInvoicedataPropertiesSupplierphonenumberAllof2(
    msrest.serialization.Model
):
    """ComponentsBvthtoSchemasInvoicedataPropertiesSupplierphonenumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            ComponentsBvthtoSchemasInvoicedataPropertiesSupplierphonenumberAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsE6Bjv3SchemasInvoicedataPropertiesBankibanAllof2(msrest.serialization.Model):
    """ComponentsE6Bjv3SchemasInvoicedataPropertiesBankibanAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsE6Bjv3SchemasInvoicedataPropertiesBankibanAllof2, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsPs8Uo7SchemasInvoicedataPropertiesCustomerphonenumberAllof2(
    msrest.serialization.Model
):
    """ComponentsPs8Uo7SchemasInvoicedataPropertiesCustomerphonenumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            ComponentsPs8Uo7SchemasInvoicedataPropertiesCustomerphonenumberAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsRft7JdSchemasInvoicedataPropertiesCustomerbusinessnumberAllof2(
    msrest.serialization.Model
):
    """ComponentsRft7JdSchemasInvoicedataPropertiesCustomerbusinessnumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            ComponentsRft7JdSchemasInvoicedataPropertiesCustomerbusinessnumberAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsRsi73USchemasInvoicedataPropertiesCustomervatAllof2(msrest.serialization.Model):
    """ComponentsRsi73USchemasInvoicedataPropertiesCustomervatAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsRsi73USchemasInvoicedataPropertiesCustomervatAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsTz04ToSchemasInvoicedataPropertiesPaymentamountbaseAllof2(
    msrest.serialization.Model
):
    """ComponentsTz04ToSchemasInvoicedataPropertiesPaymentamountbaseAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsTz04ToSchemasInvoicedataPropertiesPaymentamountbaseAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsUilt2MSchemasInvoicedataPropertiesBankbsbAllof2(msrest.serialization.Model):
    """ComponentsUilt2MSchemasInvoicedataPropertiesBankbsbAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsUilt2MSchemasInvoicedataPropertiesBankbsbAllof2, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsVyrnzuSchemasInvoicedataPropertiesSupplieremailAllof2(msrest.serialization.Model):
    """ComponentsVyrnzuSchemasInvoicedataPropertiesSupplieremailAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsVyrnzuSchemasInvoicedataPropertiesSupplieremailAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsWywi9WSchemasInvoicedataPropertiesCustomercontactnameAllof2(
    msrest.serialization.Model
):
    """ComponentsWywi9WSchemasInvoicedataPropertiesCustomercontactnameAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            ComponentsWywi9WSchemasInvoicedataPropertiesCustomercontactnameAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsY49P83SchemasInvoicedataPropertiesPaymentamounttaxAllof2(
    msrest.serialization.Model
):
    """ComponentsY49P83SchemasInvoicedataPropertiesPaymentamounttaxAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(ComponentsY49P83SchemasInvoicedataPropertiesPaymentamounttaxAllof2, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class ComponentsYe0TzySchemasInvoicedataPropertiesSupplierbusinessnumberAllof2(
    msrest.serialization.Model
):
    """ComponentsYe0TzySchemasInvoicedataPropertiesSupplierbusinessnumberAllof2.

    :ivar raw:
    :vartype raw: str
    :ivar parsed:
    :vartype parsed: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(
            ComponentsYe0TzySchemasInvoicedataPropertiesSupplierbusinessnumberAllof2, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


class DateAnnotation(Annotation):
    """DateAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: ~datetime.date
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "date"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: ~datetime.date
        """
        super(DateAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class Error(msrest.serialization.Model):
    """Error.

    :ivar error_code:
    :vartype error_code: str
    :ivar error_detail:
    :vartype error_detail: str
    """

    _attribute_map = {
        "error_code": {"key": "errorCode", "type": "str"},
        "error_detail": {"key": "errorDetail", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword error_code:
        :paramtype error_code: str
        :keyword error_detail:
        :paramtype error_detail: str
        """
        super(Error, self).__init__(**kwargs)
        self.error_code = kwargs.get("error_code", None)
        self.error_detail = kwargs.get("error_detail", None)


class ExpectedRemunerationAnnotation(Annotation):
    """ExpectedRemunerationAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.ExpectedRemunerationAnnotationParsed
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "ExpectedRemunerationAnnotationParsed"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: ~affinda.models.ExpectedRemunerationAnnotationParsed
        """
        super(ExpectedRemunerationAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class ExpectedRemunerationAnnotationParsed(msrest.serialization.Model):
    """ExpectedRemunerationAnnotationParsed.

    :ivar minimum:
    :vartype minimum: float
    :ivar maximum:
    :vartype maximum: float
    :ivar currency:
    :vartype currency: str
    :ivar unit:
    :vartype unit: str
    """

    _attribute_map = {
        "minimum": {"key": "minimum", "type": "float"},
        "maximum": {"key": "maximum", "type": "float"},
        "currency": {"key": "currency", "type": "str"},
        "unit": {"key": "unit", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword minimum:
        :paramtype minimum: float
        :keyword maximum:
        :paramtype maximum: float
        :keyword currency:
        :paramtype currency: str
        :keyword unit:
        :paramtype unit: str
        """
        super(ExpectedRemunerationAnnotationParsed, self).__init__(**kwargs)
        self.minimum = kwargs.get("minimum", None)
        self.maximum = kwargs.get("maximum", None)
        self.currency = kwargs.get("currency", None)
        self.unit = kwargs.get("unit", None)


class Get200ApplicationJsonPropertiesItemsItem(msrest.serialization.Model):
    """Get200ApplicationJsonPropertiesItemsItem.

    All required parameters must be populated in order to send to Azure.

    :ivar identifier: Required. Unique identifier for the document. If creating a document and left
     blank, one will be automatically generated.
    :vartype identifier: str
    :ivar format_file: Required. URL to a template to apply.
    :vartype format_file: str
    """

    _validation = {
        "identifier": {"required": True},
        "format_file": {"required": True},
    }

    _attribute_map = {
        "identifier": {"key": "identifier", "type": "str"},
        "format_file": {"key": "formatFile", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Required. Unique identifier for the document. If creating a document and
         left blank, one will be automatically generated.
        :paramtype identifier: str
        :keyword format_file: Required. URL to a template to apply.
        :paramtype format_file: str
        """
        super(Get200ApplicationJsonPropertiesItemsItem, self).__init__(**kwargs)
        self.identifier = kwargs["identifier"]
        self.format_file = kwargs["format_file"]


class GetAllDocumentsResults(msrest.serialization.Model):
    """GetAllDocumentsResults.

    :ivar count: Number of documents in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of documents in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(GetAllDocumentsResults, self).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class GetAllInvoicesResults(msrest.serialization.Model):
    """GetAllInvoicesResults.

    :ivar count: Number of documents in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of documents in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(GetAllInvoicesResults, self).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class GetAllJobDescriptionsResults(msrest.serialization.Model):
    """GetAllJobDescriptionsResults.

    :ivar count: Number of documents in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of documents in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(GetAllJobDescriptionsResults, self).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class Invoice(msrest.serialization.Model):
    """Invoice.

    All required parameters must be populated in order to send to Azure.

    :ivar data: Required.
    :vartype data: ~affinda.models.InvoiceData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.InvoiceMeta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

    _validation = {
        "data": {"required": True},
        "meta": {"required": True},
        "error": {"required": True},
    }

    _attribute_map = {
        "data": {"key": "data", "type": "InvoiceData"},
        "meta": {"key": "meta", "type": "InvoiceMeta"},
        "error": {"key": "error", "type": "Error"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data: Required.
        :paramtype data: ~affinda.models.InvoiceData
        :keyword meta: Required.
        :paramtype meta: ~affinda.models.InvoiceMeta
        :keyword error: Required.
        :paramtype error: ~affinda.models.Error
        """
        super(Invoice, self).__init__(**kwargs)
        self.data = kwargs["data"]
        self.meta = kwargs["meta"]
        self.error = kwargs["error"]


class InvoiceData(msrest.serialization.Model):
    """InvoiceData.

    :ivar invoice_date:
    :vartype invoice_date: ~affinda.models.DateAnnotation
    :ivar invoice_order_date:
    :vartype invoice_order_date: ~affinda.models.DateAnnotation
    :ivar payment_date_due:
    :vartype payment_date_due: ~affinda.models.DateAnnotation
    :ivar payment_amount_base:
    :vartype payment_amount_base: ~affinda.models.InvoiceDataPaymentAmountBase
    :ivar payment_amount_tax:
    :vartype payment_amount_tax: ~affinda.models.InvoiceDataPaymentAmountTax
    :ivar payment_amount_total:
    :vartype payment_amount_total: ~affinda.models.InvoiceDataPaymentAmountTotal
    :ivar payment_amount_paid:
    :vartype payment_amount_paid: ~affinda.models.InvoiceDataPaymentAmountPaid
    :ivar payment_amount_due:
    :vartype payment_amount_due: ~affinda.models.InvoiceDataPaymentAmountDue
    :ivar invoice_number:
    :vartype invoice_number: ~affinda.models.InvoiceDataInvoiceNumber
    :ivar invoice_purchase_order_number:
    :vartype invoice_purchase_order_number: ~affinda.models.InvoiceDataInvoicePurchaseOrderNumber
    :ivar supplier_business_number:
    :vartype supplier_business_number: ~affinda.models.InvoiceDataSupplierBusinessNumber
    :ivar customer_number:
    :vartype customer_number: ~affinda.models.InvoiceDataCustomerNumber
    :ivar customer_business_number:
    :vartype customer_business_number: ~affinda.models.InvoiceDataCustomerBusinessNumber
    :ivar payment_reference:
    :vartype payment_reference: ~affinda.models.InvoiceDataPaymentReference
    :ivar bank_account_number:
    :vartype bank_account_number: ~affinda.models.InvoiceDataBankAccountNumber
    :ivar supplier_vat:
    :vartype supplier_vat: ~affinda.models.InvoiceDataSupplierVAT
    :ivar customer_vat:
    :vartype customer_vat: ~affinda.models.InvoiceDataCustomerVAT
    :ivar bpay_biller_code:
    :vartype bpay_biller_code: ~affinda.models.InvoiceDataBpayBillerCode
    :ivar bpay_reference:
    :vartype bpay_reference: ~affinda.models.InvoiceDataBpayReference
    :ivar bank_sort_code:
    :vartype bank_sort_code: ~affinda.models.InvoiceDataBankSortCode
    :ivar bank_iban:
    :vartype bank_iban: ~affinda.models.InvoiceDataBankIBAN
    :ivar bank_swift:
    :vartype bank_swift: ~affinda.models.InvoiceDataBankSwift
    :ivar bank_bsb:
    :vartype bank_bsb: ~affinda.models.InvoiceDataBankBSB
    :ivar customer_contact_name:
    :vartype customer_contact_name: ~affinda.models.InvoiceDataCustomerContactName
    :ivar customer_company_name:
    :vartype customer_company_name: ~affinda.models.InvoiceDataCustomerCompanyName
    :ivar supplier_company_name:
    :vartype supplier_company_name: ~affinda.models.InvoiceDataSupplierCompanyName
    :ivar customer_billing_address:
    :vartype customer_billing_address: ~affinda.models.LocationAnnotation
    :ivar customer_delivery_address:
    :vartype customer_delivery_address: ~affinda.models.LocationAnnotation
    :ivar supplier_address:
    :vartype supplier_address: ~affinda.models.LocationAnnotation
    :ivar customer_phone_number:
    :vartype customer_phone_number: ~affinda.models.InvoiceDataCustomerPhoneNumber
    :ivar supplier_phone_number:
    :vartype supplier_phone_number: ~affinda.models.InvoiceDataSupplierPhoneNumber
    :ivar supplier_fax:
    :vartype supplier_fax: ~affinda.models.InvoiceDataSupplierFax
    :ivar customer_email:
    :vartype customer_email: ~affinda.models.InvoiceDataCustomerEmail
    :ivar supplier_email:
    :vartype supplier_email: ~affinda.models.InvoiceDataSupplierEmail
    :ivar supplier_website:
    :vartype supplier_website: ~affinda.models.InvoiceDataSupplierWebsite
    """

    _attribute_map = {
        "invoice_date": {"key": "invoiceDate", "type": "DateAnnotation"},
        "invoice_order_date": {"key": "invoiceOrderDate", "type": "DateAnnotation"},
        "payment_date_due": {"key": "paymentDateDue", "type": "DateAnnotation"},
        "payment_amount_base": {
            "key": "paymentAmountBase",
            "type": "InvoiceDataPaymentAmountBase",
        },
        "payment_amount_tax": {"key": "paymentAmountTax", "type": "InvoiceDataPaymentAmountTax"},
        "payment_amount_total": {
            "key": "paymentAmountTotal",
            "type": "InvoiceDataPaymentAmountTotal",
        },
        "payment_amount_paid": {
            "key": "paymentAmountPaid",
            "type": "InvoiceDataPaymentAmountPaid",
        },
        "payment_amount_due": {"key": "paymentAmountDue", "type": "InvoiceDataPaymentAmountDue"},
        "invoice_number": {"key": "invoiceNumber", "type": "InvoiceDataInvoiceNumber"},
        "invoice_purchase_order_number": {
            "key": "invoicePurchaseOrderNumber",
            "type": "InvoiceDataInvoicePurchaseOrderNumber",
        },
        "supplier_business_number": {
            "key": "supplierBusinessNumber",
            "type": "InvoiceDataSupplierBusinessNumber",
        },
        "customer_number": {"key": "customerNumber", "type": "InvoiceDataCustomerNumber"},
        "customer_business_number": {
            "key": "customerBusinessNumber",
            "type": "InvoiceDataCustomerBusinessNumber",
        },
        "payment_reference": {"key": "paymentReference", "type": "InvoiceDataPaymentReference"},
        "bank_account_number": {
            "key": "bankAccountNumber",
            "type": "InvoiceDataBankAccountNumber",
        },
        "supplier_vat": {"key": "supplierVAT", "type": "InvoiceDataSupplierVAT"},
        "customer_vat": {"key": "customerVAT", "type": "InvoiceDataCustomerVAT"},
        "bpay_biller_code": {"key": "bpayBillerCode", "type": "InvoiceDataBpayBillerCode"},
        "bpay_reference": {"key": "bpayReference", "type": "InvoiceDataBpayReference"},
        "bank_sort_code": {"key": "bankSortCode", "type": "InvoiceDataBankSortCode"},
        "bank_iban": {"key": "bankIBAN", "type": "InvoiceDataBankIBAN"},
        "bank_swift": {"key": "bankSwift", "type": "InvoiceDataBankSwift"},
        "bank_bsb": {"key": "bankBSB", "type": "InvoiceDataBankBSB"},
        "customer_contact_name": {
            "key": "customerContactName",
            "type": "InvoiceDataCustomerContactName",
        },
        "customer_company_name": {
            "key": "customerCompanyName",
            "type": "InvoiceDataCustomerCompanyName",
        },
        "supplier_company_name": {
            "key": "supplierCompanyName",
            "type": "InvoiceDataSupplierCompanyName",
        },
        "customer_billing_address": {
            "key": "customerBillingAddress",
            "type": "LocationAnnotation",
        },
        "customer_delivery_address": {
            "key": "customerDeliveryAddress",
            "type": "LocationAnnotation",
        },
        "supplier_address": {"key": "supplierAddress", "type": "LocationAnnotation"},
        "customer_phone_number": {
            "key": "customerPhoneNumber",
            "type": "InvoiceDataCustomerPhoneNumber",
        },
        "supplier_phone_number": {
            "key": "supplierPhoneNumber",
            "type": "InvoiceDataSupplierPhoneNumber",
        },
        "supplier_fax": {"key": "supplierFax", "type": "InvoiceDataSupplierFax"},
        "customer_email": {"key": "customerEmail", "type": "InvoiceDataCustomerEmail"},
        "supplier_email": {"key": "supplierEmail", "type": "InvoiceDataSupplierEmail"},
        "supplier_website": {"key": "supplierWebsite", "type": "InvoiceDataSupplierWebsite"},
    }

    def __init__(self, **kwargs):
        """
        :keyword invoice_date:
        :paramtype invoice_date: ~affinda.models.DateAnnotation
        :keyword invoice_order_date:
        :paramtype invoice_order_date: ~affinda.models.DateAnnotation
        :keyword payment_date_due:
        :paramtype payment_date_due: ~affinda.models.DateAnnotation
        :keyword payment_amount_base:
        :paramtype payment_amount_base: ~affinda.models.InvoiceDataPaymentAmountBase
        :keyword payment_amount_tax:
        :paramtype payment_amount_tax: ~affinda.models.InvoiceDataPaymentAmountTax
        :keyword payment_amount_total:
        :paramtype payment_amount_total: ~affinda.models.InvoiceDataPaymentAmountTotal
        :keyword payment_amount_paid:
        :paramtype payment_amount_paid: ~affinda.models.InvoiceDataPaymentAmountPaid
        :keyword payment_amount_due:
        :paramtype payment_amount_due: ~affinda.models.InvoiceDataPaymentAmountDue
        :keyword invoice_number:
        :paramtype invoice_number: ~affinda.models.InvoiceDataInvoiceNumber
        :keyword invoice_purchase_order_number:
        :paramtype invoice_purchase_order_number: ~affinda.models.InvoiceDataInvoicePurchaseOrderNumber
        :keyword supplier_business_number:
        :paramtype supplier_business_number: ~affinda.models.InvoiceDataSupplierBusinessNumber
        :keyword customer_number:
        :paramtype customer_number: ~affinda.models.InvoiceDataCustomerNumber
        :keyword customer_business_number:
        :paramtype customer_business_number: ~affinda.models.InvoiceDataCustomerBusinessNumber
        :keyword payment_reference:
        :paramtype payment_reference: ~affinda.models.InvoiceDataPaymentReference
        :keyword bank_account_number:
        :paramtype bank_account_number: ~affinda.models.InvoiceDataBankAccountNumber
        :keyword supplier_vat:
        :paramtype supplier_vat: ~affinda.models.InvoiceDataSupplierVAT
        :keyword customer_vat:
        :paramtype customer_vat: ~affinda.models.InvoiceDataCustomerVAT
        :keyword bpay_biller_code:
        :paramtype bpay_biller_code: ~affinda.models.InvoiceDataBpayBillerCode
        :keyword bpay_reference:
        :paramtype bpay_reference: ~affinda.models.InvoiceDataBpayReference
        :keyword bank_sort_code:
        :paramtype bank_sort_code: ~affinda.models.InvoiceDataBankSortCode
        :keyword bank_iban:
        :paramtype bank_iban: ~affinda.models.InvoiceDataBankIBAN
        :keyword bank_swift:
        :paramtype bank_swift: ~affinda.models.InvoiceDataBankSwift
        :keyword bank_bsb:
        :paramtype bank_bsb: ~affinda.models.InvoiceDataBankBSB
        :keyword customer_contact_name:
        :paramtype customer_contact_name: ~affinda.models.InvoiceDataCustomerContactName
        :keyword customer_company_name:
        :paramtype customer_company_name: ~affinda.models.InvoiceDataCustomerCompanyName
        :keyword supplier_company_name:
        :paramtype supplier_company_name: ~affinda.models.InvoiceDataSupplierCompanyName
        :keyword customer_billing_address:
        :paramtype customer_billing_address: ~affinda.models.LocationAnnotation
        :keyword customer_delivery_address:
        :paramtype customer_delivery_address: ~affinda.models.LocationAnnotation
        :keyword supplier_address:
        :paramtype supplier_address: ~affinda.models.LocationAnnotation
        :keyword customer_phone_number:
        :paramtype customer_phone_number: ~affinda.models.InvoiceDataCustomerPhoneNumber
        :keyword supplier_phone_number:
        :paramtype supplier_phone_number: ~affinda.models.InvoiceDataSupplierPhoneNumber
        :keyword supplier_fax:
        :paramtype supplier_fax: ~affinda.models.InvoiceDataSupplierFax
        :keyword customer_email:
        :paramtype customer_email: ~affinda.models.InvoiceDataCustomerEmail
        :keyword supplier_email:
        :paramtype supplier_email: ~affinda.models.InvoiceDataSupplierEmail
        :keyword supplier_website:
        :paramtype supplier_website: ~affinda.models.InvoiceDataSupplierWebsite
        """
        super(InvoiceData, self).__init__(**kwargs)
        self.invoice_date = kwargs.get("invoice_date", None)
        self.invoice_order_date = kwargs.get("invoice_order_date", None)
        self.payment_date_due = kwargs.get("payment_date_due", None)
        self.payment_amount_base = kwargs.get("payment_amount_base", None)
        self.payment_amount_tax = kwargs.get("payment_amount_tax", None)
        self.payment_amount_total = kwargs.get("payment_amount_total", None)
        self.payment_amount_paid = kwargs.get("payment_amount_paid", None)
        self.payment_amount_due = kwargs.get("payment_amount_due", None)
        self.invoice_number = kwargs.get("invoice_number", None)
        self.invoice_purchase_order_number = kwargs.get("invoice_purchase_order_number", None)
        self.supplier_business_number = kwargs.get("supplier_business_number", None)
        self.customer_number = kwargs.get("customer_number", None)
        self.customer_business_number = kwargs.get("customer_business_number", None)
        self.payment_reference = kwargs.get("payment_reference", None)
        self.bank_account_number = kwargs.get("bank_account_number", None)
        self.supplier_vat = kwargs.get("supplier_vat", None)
        self.customer_vat = kwargs.get("customer_vat", None)
        self.bpay_biller_code = kwargs.get("bpay_biller_code", None)
        self.bpay_reference = kwargs.get("bpay_reference", None)
        self.bank_sort_code = kwargs.get("bank_sort_code", None)
        self.bank_iban = kwargs.get("bank_iban", None)
        self.bank_swift = kwargs.get("bank_swift", None)
        self.bank_bsb = kwargs.get("bank_bsb", None)
        self.customer_contact_name = kwargs.get("customer_contact_name", None)
        self.customer_company_name = kwargs.get("customer_company_name", None)
        self.supplier_company_name = kwargs.get("supplier_company_name", None)
        self.customer_billing_address = kwargs.get("customer_billing_address", None)
        self.customer_delivery_address = kwargs.get("customer_delivery_address", None)
        self.supplier_address = kwargs.get("supplier_address", None)
        self.customer_phone_number = kwargs.get("customer_phone_number", None)
        self.supplier_phone_number = kwargs.get("supplier_phone_number", None)
        self.supplier_fax = kwargs.get("supplier_fax", None)
        self.customer_email = kwargs.get("customer_email", None)
        self.supplier_email = kwargs.get("supplier_email", None)
        self.supplier_website = kwargs.get("supplier_website", None)


class TextAnnotation(Annotation):
    """TextAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(TextAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankAccountNumber(
    TextAnnotation, Components14Dm0XSchemasInvoicedataPropertiesBankaccountnumberAllof2
):
    """InvoiceDataBankAccountNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankAccountNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankBSB(
    TextAnnotation, ComponentsUilt2MSchemasInvoicedataPropertiesBankbsbAllof2
):
    """InvoiceDataBankBSB.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankBSB, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankIBAN(
    TextAnnotation, ComponentsE6Bjv3SchemasInvoicedataPropertiesBankibanAllof2
):
    """InvoiceDataBankIBAN.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankIBAN, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankSortCode(
    TextAnnotation, Components1Rbm6P1SchemasInvoicedataPropertiesBanksortcodeAllof2
):
    """InvoiceDataBankSortCode.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankSortCode, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankSwift(
    TextAnnotation, Components11Zi81FSchemasInvoicedataPropertiesBankswiftAllof2
):
    """InvoiceDataBankSwift.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankSwift, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBpayBillerCode(
    TextAnnotation, Components1Bh8NlbSchemasInvoicedataPropertiesBpaybillercodeAllof2
):
    """InvoiceDataBpayBillerCode.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBpayBillerCode, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBpayReference(
    TextAnnotation, Components1OmsnpSchemasInvoicedataPropertiesBpayreferenceAllof2
):
    """InvoiceDataBpayReference.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBpayReference, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerBusinessNumber(
    TextAnnotation, ComponentsRft7JdSchemasInvoicedataPropertiesCustomerbusinessnumberAllof2
):
    """InvoiceDataCustomerBusinessNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerBusinessNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerCompanyName(
    TextAnnotation, Components6DhvidSchemasInvoicedataPropertiesCustomercompanynameAllof2
):
    """InvoiceDataCustomerCompanyName.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerCompanyName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerContactName(
    TextAnnotation, ComponentsWywi9WSchemasInvoicedataPropertiesCustomercontactnameAllof2
):
    """InvoiceDataCustomerContactName.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerContactName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerEmail(
    TextAnnotation, Components5PwavySchemasInvoicedataPropertiesCustomeremailAllof2
):
    """InvoiceDataCustomerEmail.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerEmail, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerNumber(
    TextAnnotation, Components2Hu973SchemasInvoicedataPropertiesCustomernumberAllof2
):
    """InvoiceDataCustomerNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerPhoneNumber(
    TextAnnotation, ComponentsPs8Uo7SchemasInvoicedataPropertiesCustomerphonenumberAllof2
):
    """InvoiceDataCustomerPhoneNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerPhoneNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerVAT(
    TextAnnotation, ComponentsRsi73USchemasInvoicedataPropertiesCustomervatAllof2
):
    """InvoiceDataCustomerVAT.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerVAT, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataInvoiceNumber(
    TextAnnotation, Components7CqvqpSchemasInvoicedataPropertiesInvoicenumberAllof2
):
    """InvoiceDataInvoiceNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataInvoiceNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataInvoicePurchaseOrderNumber(
    TextAnnotation, Components55Nj82SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof2
):
    """InvoiceDataInvoicePurchaseOrderNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataInvoicePurchaseOrderNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountBase(
    TextAnnotation, ComponentsTz04ToSchemasInvoicedataPropertiesPaymentamountbaseAllof2
):
    """InvoiceDataPaymentAmountBase.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountBase, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountDue(
    TextAnnotation, Components14V23KqSchemasInvoicedataPropertiesPaymentamountdueAllof2
):
    """InvoiceDataPaymentAmountDue.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountDue, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountPaid(
    TextAnnotation, Components1LdfgdeSchemasInvoicedataPropertiesPaymentamountpaidAllof2
):
    """InvoiceDataPaymentAmountPaid.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountPaid, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountTax(
    TextAnnotation, ComponentsY49P83SchemasInvoicedataPropertiesPaymentamounttaxAllof2
):
    """InvoiceDataPaymentAmountTax.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountTax, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountTotal(
    TextAnnotation, Components15Ayv0YSchemasInvoicedataPropertiesPaymentamounttotalAllof2
):
    """InvoiceDataPaymentAmountTotal.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountTotal, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentReference(
    TextAnnotation, Components1Wx56HlSchemasInvoicedataPropertiesPaymentreferenceAllof2
):
    """InvoiceDataPaymentReference.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentReference, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierBusinessNumber(
    TextAnnotation, ComponentsYe0TzySchemasInvoicedataPropertiesSupplierbusinessnumberAllof2
):
    """InvoiceDataSupplierBusinessNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierBusinessNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierCompanyName(
    TextAnnotation, Components1O4BmpySchemasInvoicedataPropertiesSuppliercompanynameAllof2
):
    """InvoiceDataSupplierCompanyName.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierCompanyName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierEmail(
    TextAnnotation, ComponentsVyrnzuSchemasInvoicedataPropertiesSupplieremailAllof2
):
    """InvoiceDataSupplierEmail.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierEmail, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierFax(
    TextAnnotation, Components1ByjheSchemasInvoicedataPropertiesSupplierfaxAllof2
):
    """InvoiceDataSupplierFax.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierFax, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierPhoneNumber(
    TextAnnotation, ComponentsBvthtoSchemasInvoicedataPropertiesSupplierphonenumberAllof2
):
    """InvoiceDataSupplierPhoneNumber.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierPhoneNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierVAT(
    TextAnnotation, Components1Fdmi0OSchemasInvoicedataPropertiesSuppliervatAllof2
):
    """InvoiceDataSupplierVAT.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierVAT, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierWebsite(
    TextAnnotation, Components179Pdz6SchemasInvoicedataPropertiesSupplierwebsiteAllof2
):
    """InvoiceDataSupplierWebsite.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierWebsite, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.rectangle = kwargs["rectangle"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.is_verified = kwargs["is_verified"]
        self.classification = kwargs["classification"]
        self.parsed = kwargs.get("parsed", None)


class Meta(msrest.serialization.Model):
    """Meta.

    All required parameters must be populated in order to send to Azure.

    :ivar identifier: Required. Unique identifier for the document. If creating a document and left
     blank, one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar ready: Required. If true, the document has finished processing. Particularly useful if an
     endpoint request specified wait=False, when polling use this variable to determine when to stop
     polling.
    :vartype ready: bool
    :ivar ready_dt: The datetime when the document was ready.
    :vartype ready_dt: ~datetime.datetime
    :ivar failed: Required. If true, some exception was raised during processing. Check the 'error'
     field of the main return object.
    :vartype failed: bool
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _validation = {
        "identifier": {"required": True},
        "ready": {"required": True},
        "failed": {"required": True},
    }

    _attribute_map = {
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "ready": {"key": "ready", "type": "bool"},
        "ready_dt": {"key": "readyDt", "type": "iso-8601"},
        "failed": {"key": "failed", "type": "bool"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Required. Unique identifier for the document. If creating a document and
         left blank, one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword ready: Required. If true, the document has finished processing. Particularly useful if
         an endpoint request specified wait=False, when polling use this variable to determine when to
         stop polling.
        :paramtype ready: bool
        :keyword ready_dt: The datetime when the document was ready.
        :paramtype ready_dt: ~datetime.datetime
        :keyword failed: Required. If true, some exception was raised during processing. Check the
         'error' field of the main return object.
        :paramtype failed: bool
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(Meta, self).__init__(**kwargs)
        self.identifier = kwargs["identifier"]
        self.file_name = kwargs.get("file_name", None)
        self.ready = kwargs["ready"]
        self.ready_dt = kwargs.get("ready_dt", None)
        self.failed = kwargs["failed"]
        self.expiry_time = kwargs.get("expiry_time", None)


class InvoiceMeta(Meta, Components17Ashz6SchemasInvoicePropertiesMetaAllof1):
    """InvoiceMeta.

    All required parameters must be populated in order to send to Azure.

    :ivar review_url: Signed URL (valid for 60 minutes) to access the invoice review tool.
    :vartype review_url: str
    :ivar identifier: Required. Unique identifier for the document. If creating a document and left
     blank, one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar ready: Required. If true, the document has finished processing. Particularly useful if an
     endpoint request specified wait=False, when polling use this variable to determine when to stop
     polling.
    :vartype ready: bool
    :ivar ready_dt: The datetime when the document was ready.
    :vartype ready_dt: ~datetime.datetime
    :ivar failed: Required. If true, some exception was raised during processing. Check the 'error'
     field of the main return object.
    :vartype failed: bool
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _validation = {
        "identifier": {"required": True},
        "ready": {"required": True},
        "failed": {"required": True},
    }

    _attribute_map = {
        "review_url": {"key": "reviewUrl", "type": "str"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "ready": {"key": "ready", "type": "bool"},
        "ready_dt": {"key": "readyDt", "type": "iso-8601"},
        "failed": {"key": "failed", "type": "bool"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword review_url: Signed URL (valid for 60 minutes) to access the invoice review tool.
        :paramtype review_url: str
        :keyword identifier: Required. Unique identifier for the document. If creating a document and
         left blank, one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword ready: Required. If true, the document has finished processing. Particularly useful if
         an endpoint request specified wait=False, when polling use this variable to determine when to
         stop polling.
        :paramtype ready: bool
        :keyword ready_dt: The datetime when the document was ready.
        :paramtype ready_dt: ~datetime.datetime
        :keyword failed: Required. If true, some exception was raised during processing. Check the
         'error' field of the main return object.
        :paramtype failed: bool
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(InvoiceMeta, self).__init__(**kwargs)
        self.review_url = kwargs.get("review_url", None)
        self.identifier = kwargs["identifier"]
        self.file_name = kwargs.get("file_name", None)
        self.ready = kwargs["ready"]
        self.ready_dt = kwargs.get("ready_dt", None)
        self.failed = kwargs["failed"]
        self.expiry_time = kwargs.get("expiry_time", None)


class JobDescription(msrest.serialization.Model):
    """JobDescription.

    All required parameters must be populated in order to send to Azure.

    :ivar data: Required.
    :vartype data: ~affinda.models.JobDescriptionData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.Meta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

    _validation = {
        "data": {"required": True},
        "meta": {"required": True},
        "error": {"required": True},
    }

    _attribute_map = {
        "data": {"key": "data", "type": "JobDescriptionData"},
        "meta": {"key": "meta", "type": "Meta"},
        "error": {"key": "error", "type": "Error"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data: Required.
        :paramtype data: ~affinda.models.JobDescriptionData
        :keyword meta: Required.
        :paramtype meta: ~affinda.models.Meta
        :keyword error: Required.
        :paramtype error: ~affinda.models.Error
        """
        super(JobDescription, self).__init__(**kwargs)
        self.data = kwargs["data"]
        self.meta = kwargs["meta"]
        self.error = kwargs["error"]


class JobDescriptionData(msrest.serialization.Model):
    """JobDescriptionData.

    :ivar contact_email:
    :vartype contact_email: ~affinda.models.TextAnnotation
    :ivar contact_name:
    :vartype contact_name: ~affinda.models.TextAnnotation
    :ivar contact_phone:
    :vartype contact_phone: ~affinda.models.TextAnnotation
    :ivar start_date:
    :vartype start_date: ~affinda.models.DateAnnotation
    :ivar end_date:
    :vartype end_date: ~affinda.models.DateAnnotation
    :ivar job_type:
    :vartype job_type: ~affinda.models.TextAnnotation
    :ivar languages:
    :vartype languages: list[~affinda.models.LanguageAnnotation]
    :ivar skills:
    :vartype skills: list[~affinda.models.SkillAnnotation]
    :ivar organization_name:
    :vartype organization_name: ~affinda.models.TextAnnotation
    :ivar organization_website:
    :vartype organization_website: ~affinda.models.TextAnnotation
    :ivar education_level:
    :vartype education_level: ~affinda.models.TextAnnotation
    :ivar education_accreditation:
    :vartype education_accreditation: ~affinda.models.TextAnnotation
    :ivar expected_remuneration:
    :vartype expected_remuneration: ~affinda.models.ExpectedRemunerationAnnotation
    :ivar location:
    :vartype location: ~affinda.models.LocationAnnotation
    :ivar certifications:
    :vartype certifications: list[~affinda.models.TextAnnotation]
    """

    _attribute_map = {
        "contact_email": {"key": "contactEmail", "type": "TextAnnotation"},
        "contact_name": {"key": "contactName", "type": "TextAnnotation"},
        "contact_phone": {"key": "contactPhone", "type": "TextAnnotation"},
        "start_date": {"key": "startDate", "type": "DateAnnotation"},
        "end_date": {"key": "endDate", "type": "DateAnnotation"},
        "job_type": {"key": "jobType", "type": "TextAnnotation"},
        "languages": {"key": "languages", "type": "[LanguageAnnotation]"},
        "skills": {"key": "skills", "type": "[SkillAnnotation]"},
        "organization_name": {"key": "organizationName", "type": "TextAnnotation"},
        "organization_website": {"key": "organizationWebsite", "type": "TextAnnotation"},
        "education_level": {"key": "educationLevel", "type": "TextAnnotation"},
        "education_accreditation": {"key": "educationAccreditation", "type": "TextAnnotation"},
        "expected_remuneration": {
            "key": "expectedRemuneration",
            "type": "ExpectedRemunerationAnnotation",
        },
        "location": {"key": "location", "type": "LocationAnnotation"},
        "certifications": {"key": "certifications", "type": "[TextAnnotation]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword contact_email:
        :paramtype contact_email: ~affinda.models.TextAnnotation
        :keyword contact_name:
        :paramtype contact_name: ~affinda.models.TextAnnotation
        :keyword contact_phone:
        :paramtype contact_phone: ~affinda.models.TextAnnotation
        :keyword start_date:
        :paramtype start_date: ~affinda.models.DateAnnotation
        :keyword end_date:
        :paramtype end_date: ~affinda.models.DateAnnotation
        :keyword job_type:
        :paramtype job_type: ~affinda.models.TextAnnotation
        :keyword languages:
        :paramtype languages: list[~affinda.models.LanguageAnnotation]
        :keyword skills:
        :paramtype skills: list[~affinda.models.SkillAnnotation]
        :keyword organization_name:
        :paramtype organization_name: ~affinda.models.TextAnnotation
        :keyword organization_website:
        :paramtype organization_website: ~affinda.models.TextAnnotation
        :keyword education_level:
        :paramtype education_level: ~affinda.models.TextAnnotation
        :keyword education_accreditation:
        :paramtype education_accreditation: ~affinda.models.TextAnnotation
        :keyword expected_remuneration:
        :paramtype expected_remuneration: ~affinda.models.ExpectedRemunerationAnnotation
        :keyword location:
        :paramtype location: ~affinda.models.LocationAnnotation
        :keyword certifications:
        :paramtype certifications: list[~affinda.models.TextAnnotation]
        """
        super(JobDescriptionData, self).__init__(**kwargs)
        self.contact_email = kwargs.get("contact_email", None)
        self.contact_name = kwargs.get("contact_name", None)
        self.contact_phone = kwargs.get("contact_phone", None)
        self.start_date = kwargs.get("start_date", None)
        self.end_date = kwargs.get("end_date", None)
        self.job_type = kwargs.get("job_type", None)
        self.languages = kwargs.get("languages", None)
        self.skills = kwargs.get("skills", None)
        self.organization_name = kwargs.get("organization_name", None)
        self.organization_website = kwargs.get("organization_website", None)
        self.education_level = kwargs.get("education_level", None)
        self.education_accreditation = kwargs.get("education_accreditation", None)
        self.expected_remuneration = kwargs.get("expected_remuneration", None)
        self.location = kwargs.get("location", None)
        self.certifications = kwargs.get("certifications", None)


class LanguageAnnotation(Annotation):
    """LanguageAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(LanguageAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class Location(msrest.serialization.Model):
    """Location.

    All required parameters must be populated in order to send to Azure.

    :ivar formatted:
    :vartype formatted: str
    :ivar postal_code:
    :vartype postal_code: str
    :ivar state:
    :vartype state: str
    :ivar country:
    :vartype country: str
    :ivar country_code: Two letter country code (ISO 3166-1 alpha-2).
    :vartype country_code: str
    :ivar raw_input: Required.
    :vartype raw_input: str
    :ivar street_number:
    :vartype street_number: str
    :ivar street:
    :vartype street: str
    :ivar apartment_number:
    :vartype apartment_number: str
    :ivar city:
    :vartype city: str
    """

    _validation = {
        "raw_input": {"required": True},
    }

    _attribute_map = {
        "formatted": {"key": "formatted", "type": "str"},
        "postal_code": {"key": "postalCode", "type": "str"},
        "state": {"key": "state", "type": "str"},
        "country": {"key": "country", "type": "str"},
        "country_code": {"key": "countryCode", "type": "str"},
        "raw_input": {"key": "rawInput", "type": "str"},
        "street_number": {"key": "streetNumber", "type": "str"},
        "street": {"key": "street", "type": "str"},
        "apartment_number": {"key": "apartmentNumber", "type": "str"},
        "city": {"key": "city", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword formatted:
        :paramtype formatted: str
        :keyword postal_code:
        :paramtype postal_code: str
        :keyword state:
        :paramtype state: str
        :keyword country:
        :paramtype country: str
        :keyword country_code: Two letter country code (ISO 3166-1 alpha-2).
        :paramtype country_code: str
        :keyword raw_input: Required.
        :paramtype raw_input: str
        :keyword street_number:
        :paramtype street_number: str
        :keyword street:
        :paramtype street: str
        :keyword apartment_number:
        :paramtype apartment_number: str
        :keyword city:
        :paramtype city: str
        """
        super(Location, self).__init__(**kwargs)
        self.formatted = kwargs.get("formatted", None)
        self.postal_code = kwargs.get("postal_code", None)
        self.state = kwargs.get("state", None)
        self.country = kwargs.get("country", None)
        self.country_code = kwargs.get("country_code", None)
        self.raw_input = kwargs["raw_input"]
        self.street_number = kwargs.get("street_number", None)
        self.street = kwargs.get("street", None)
        self.apartment_number = kwargs.get("apartment_number", None)
        self.city = kwargs.get("city", None)


class LocationAnnotation(Annotation):
    """LocationAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.Location
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "Location"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: ~affinda.models.Location
        """
        super(LocationAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class OccupationGroup(msrest.serialization.Model):
    """OccupationGroup.

    All required parameters must be populated in order to send to Azure.

    :ivar code: Required.
    :vartype code: int
    :ivar name: Required.
    :vartype name: str
    :ivar children: Required.
    :vartype children: list[~affinda.models.OccupationGroup]
    """

    _validation = {
        "code": {"required": True},
        "name": {"required": True},
        "children": {"required": True},
    }

    _attribute_map = {
        "code": {"key": "code", "type": "int"},
        "name": {"key": "name", "type": "str"},
        "children": {"key": "children", "type": "[OccupationGroup]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword code: Required.
        :paramtype code: int
        :keyword name: Required.
        :paramtype name: str
        :keyword children: Required.
        :paramtype children: list[~affinda.models.OccupationGroup]
        """
        super(OccupationGroup, self).__init__(**kwargs)
        self.code = kwargs["code"]
        self.name = kwargs["name"]
        self.children = kwargs["children"]


class Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems(
    msrest.serialization.Model
):
    """Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems.

    All required parameters must be populated in order to send to Azure.

    :ivar name: Required.
    :vartype name: str
    """

    _validation = {
        "name": {"required": True},
    }

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name: Required.
        :paramtype name: str
        """
        super(
            Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems,
            self,
        ).__init__(**kwargs)
        self.name = kwargs["name"]


class Paths1BwrvmkInvoicesPostRequestbodyContentMultipartFormDataSchema(
    msrest.serialization.Model
):
    """Paths1BwrvmkInvoicesPostRequestbodyContentMultipartFormDataSchema.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG.
    :vartype file: IO
    :ivar identifier: Unique identifier for the document. If creating a document and left blank,
     one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to file to download and process.
    :vartype url: str
    :ivar wait: If "true" (default), will return a response only after processing has completed. If
     "false", will return an empty data object which can be polled at the GET endpoint until
     processing is complete.
    :vartype wait: bool
    :ivar language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
    :vartype language: str
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "url": {"key": "url", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG.
        :paramtype file: IO
        :keyword identifier: Unique identifier for the document. If creating a document and left blank,
         one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to file to download and process.
        :paramtype url: str
        :keyword wait: If "true" (default), will return a response only after processing has completed.
         If "false", will return an empty data object which can be polled at the GET endpoint until
         processing is complete.
        :paramtype wait: bool
        :keyword language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
        :paramtype language: str
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(Paths1BwrvmkInvoicesPostRequestbodyContentMultipartFormDataSchema, self).__init__(
            **kwargs
        )
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.url = kwargs.get("url", None)
        self.wait = kwargs.get("wait", True)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)


class Paths1Mc0Je6IndexPostResponses201ContentApplicationJsonSchema(msrest.serialization.Model):
    """Paths1Mc0Je6IndexPostResponses201ContentApplicationJsonSchema.

    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        """
        super(Paths1Mc0Je6IndexPostResponses201ContentApplicationJsonSchema, self).__init__(
            **kwargs
        )
        self.name = kwargs.get("name", None)


class Paths1UtuacyResumeFormatsGetResponses200ContentApplicationJsonSchema(
    msrest.serialization.Model
):
    """Paths1UtuacyResumeFormatsGetResponses200ContentApplicationJsonSchema.

    :ivar count: Number of documents in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results: list[~affinda.models.Get200ApplicationJsonPropertiesItemsItem]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {"key": "results", "type": "[Get200ApplicationJsonPropertiesItemsItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of documents in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results: list[~affinda.models.Get200ApplicationJsonPropertiesItemsItem]
        """
        super(Paths1UtuacyResumeFormatsGetResponses200ContentApplicationJsonSchema, self).__init__(
            **kwargs
        )
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class Paths6Pypg5IndexGetResponses200ContentApplicationJsonSchema(msrest.serialization.Model):
    """Paths6Pypg5IndexGetResponses200ContentApplicationJsonSchema.

    :ivar count: Number of indexes in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results:
     list[~affinda.models.Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {
            "key": "results",
            "type": "[Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of indexes in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results:
         list[~affinda.models.Paths108CfgmIndexGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]
        """
        super(Paths6Pypg5IndexGetResponses200ContentApplicationJsonSchema, self).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class Paths7EskthResumesPostRequestbodyContentMultipartFormDataSchema(msrest.serialization.Model):
    """Paths7EskthResumesPostRequestbodyContentMultipartFormDataSchema.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG.
    :vartype file: IO
    :ivar identifier: Unique identifier for the document. If creating a document and left blank,
     one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to file to download and process.
    :vartype url: str
    :ivar wait: If "true" (default), will return a response only after processing has completed. If
     "false", will return an empty data object which can be polled at the GET endpoint until
     processing is complete.
    :vartype wait: bool
    :ivar language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
    :vartype language: str
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "url": {"key": "url", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG.
        :paramtype file: IO
        :keyword identifier: Unique identifier for the document. If creating a document and left blank,
         one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to file to download and process.
        :paramtype url: str
        :keyword wait: If "true" (default), will return a response only after processing has completed.
         If "false", will return an empty data object which can be polled at the GET endpoint until
         processing is complete.
        :paramtype wait: bool
        :keyword language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
        :paramtype language: str
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(Paths7EskthResumesPostRequestbodyContentMultipartFormDataSchema, self).__init__(
            **kwargs
        )
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.url = kwargs.get("url", None)
        self.wait = kwargs.get("wait", True)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)


class Paths8DdhfcRedactedResumesPostRequestbodyContentMultipartFormDataSchema(
    msrest.serialization.Model
):
    """Paths8DdhfcRedactedResumesPostRequestbodyContentMultipartFormDataSchema.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG.
    :vartype file: IO
    :ivar identifier: Unique identifier for the document. If creating a document and left blank,
     one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to file to download and process.
    :vartype url: str
    :ivar language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
    :vartype language: str
    :ivar wait: If "true" (default), will return a response only after processing has completed. If
     "false", will return an empty data object which can be polled at the GET endpoint until
     processing is complete.
    :vartype wait: bool
    :ivar redact_headshot: Whether to redact headshot.
    :vartype redact_headshot: bool
    :ivar redact_personal_details: Whether to redact personal details (e.g. name, address).
    :vartype redact_personal_details: bool
    :ivar redact_work_details: Whether to redact work details (e.g. company names).
    :vartype redact_work_details: bool
    :ivar redact_education_details: Whether to redact education details (e.g. university names).
    :vartype redact_education_details: bool
    :ivar redact_referees: Whether to redact referee details.
    :vartype redact_referees: bool
    :ivar redact_locations: Whether to redact location names.
    :vartype redact_locations: bool
    :ivar redact_dates: Whether to redact dates.
    :vartype redact_dates: bool
    :ivar redact_gender: Whether to redact gender.
    :vartype redact_gender: bool
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "url": {"key": "url", "type": "str"},
        "language": {"key": "language", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "redact_headshot": {"key": "redactHeadshot", "type": "bool"},
        "redact_personal_details": {"key": "redactPersonalDetails", "type": "bool"},
        "redact_work_details": {"key": "redactWorkDetails", "type": "bool"},
        "redact_education_details": {"key": "redactEducationDetails", "type": "bool"},
        "redact_referees": {"key": "redactReferees", "type": "bool"},
        "redact_locations": {"key": "redactLocations", "type": "bool"},
        "redact_dates": {"key": "redactDates", "type": "bool"},
        "redact_gender": {"key": "redactGender", "type": "bool"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG.
        :paramtype file: IO
        :keyword identifier: Unique identifier for the document. If creating a document and left blank,
         one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to file to download and process.
        :paramtype url: str
        :keyword language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
        :paramtype language: str
        :keyword wait: If "true" (default), will return a response only after processing has completed.
         If "false", will return an empty data object which can be polled at the GET endpoint until
         processing is complete.
        :paramtype wait: bool
        :keyword redact_headshot: Whether to redact headshot.
        :paramtype redact_headshot: bool
        :keyword redact_personal_details: Whether to redact personal details (e.g. name, address).
        :paramtype redact_personal_details: bool
        :keyword redact_work_details: Whether to redact work details (e.g. company names).
        :paramtype redact_work_details: bool
        :keyword redact_education_details: Whether to redact education details (e.g. university names).
        :paramtype redact_education_details: bool
        :keyword redact_referees: Whether to redact referee details.
        :paramtype redact_referees: bool
        :keyword redact_locations: Whether to redact location names.
        :paramtype redact_locations: bool
        :keyword redact_dates: Whether to redact dates.
        :paramtype redact_dates: bool
        :keyword redact_gender: Whether to redact gender.
        :paramtype redact_gender: bool
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(
            Paths8DdhfcRedactedResumesPostRequestbodyContentMultipartFormDataSchema, self
        ).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.url = kwargs.get("url", None)
        self.language = kwargs.get("language", None)
        self.wait = kwargs.get("wait", True)
        self.redact_headshot = kwargs.get("redact_headshot", True)
        self.redact_personal_details = kwargs.get("redact_personal_details", True)
        self.redact_work_details = kwargs.get("redact_work_details", True)
        self.redact_education_details = kwargs.get("redact_education_details", True)
        self.redact_referees = kwargs.get("redact_referees", True)
        self.redact_locations = kwargs.get("redact_locations", True)
        self.redact_dates = kwargs.get("redact_dates", True)
        self.redact_gender = kwargs.get("redact_gender", True)
        self.expiry_time = kwargs.get("expiry_time", None)


class PathsCoo0XpIndexNameDocumentsPostResponses201ContentApplicationJsonSchema(
    msrest.serialization.Model
):
    """PathsCoo0XpIndexNameDocumentsPostResponses201ContentApplicationJsonSchema.

    :ivar document: Unique identifier for the document.
    :vartype document: str
    """

    _attribute_map = {
        "document": {"key": "document", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword document: Unique identifier for the document.
        :paramtype document: str
        """
        super(
            PathsCoo0XpIndexNameDocumentsPostResponses201ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.document = kwargs.get("document", None)


class PathsGpptmIndexNameDocumentsPostRequestbodyContentApplicationJsonSchema(
    msrest.serialization.Model
):
    """PathsGpptmIndexNameDocumentsPostRequestbodyContentApplicationJsonSchema.

    :ivar document:
    :vartype document: str
    """

    _attribute_map = {
        "document": {"key": "document", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword document:
        :paramtype document: str
        """
        super(
            PathsGpptmIndexNameDocumentsPostRequestbodyContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.document = kwargs.get("document", None)


class PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems(
    msrest.serialization.Model
):
    """PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems.

    :ivar document:
    :vartype document: str
    """

    _attribute_map = {
        "document": {"key": "document", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword document:
        :paramtype document: str
        """
        super(
            PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems,
            self,
        ).__init__(**kwargs)
        self.document = kwargs.get("document", None)


class PathsRvverlIndexNameDocumentsGetResponses200ContentApplicationJsonSchema(
    msrest.serialization.Model
):
    """PathsRvverlIndexNameDocumentsGetResponses200ContentApplicationJsonSchema.

    :ivar count: Number of indexed documents in result.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar results:
    :vartype results:
     list[~affinda.models.PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "results": {
            "key": "results",
            "type": "[PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Number of indexed documents in result.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword results:
        :paramtype results:
         list[~affinda.models.PathsHryo8IndexNameDocumentsGetResponses200ContentApplicationJsonSchemaPropertiesResultsItems]
        """
        super(
            PathsRvverlIndexNameDocumentsGetResponses200ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.results = kwargs.get("results", None)


class PathsSot11NIndexPostRequestbodyContentMultipartFormDataSchema(msrest.serialization.Model):
    """PathsSot11NIndexPostRequestbodyContentMultipartFormDataSchema.

    :ivar name:
    :vartype name: bool
    """

    _attribute_map = {
        "name": {"key": "name", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: bool
        """
        super(PathsSot11NIndexPostRequestbodyContentMultipartFormDataSchema, self).__init__(
            **kwargs
        )
        self.name = kwargs.get("name", True)


class PathsYlw96JobDescriptionsPostRequestbodyContentMultipartFormDataSchema(
    msrest.serialization.Model
):
    """PathsYlw96JobDescriptionsPostRequestbodyContentMultipartFormDataSchema.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG.
    :vartype file: IO
    :ivar identifier: Unique identifier for the document. If creating a document and left blank,
     one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to file to download and process.
    :vartype url: str
    :ivar wait: If "true" (default), will return a response only after processing has completed. If
     "false", will return an empty data object which can be polled at the GET endpoint until
     processing is complete.
    :vartype wait: bool
    :ivar language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
    :vartype language: str
    :ivar expiry_time: The date/time in ISO-8601 format when the document will be automatically
     deleted.  Defaults to no expiry.
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "url": {"key": "url", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG.
        :paramtype file: IO
        :keyword identifier: Unique identifier for the document. If creating a document and left blank,
         one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to file to download and process.
        :paramtype url: str
        :keyword wait: If "true" (default), will return a response only after processing has completed.
         If "false", will return an empty data object which can be polled at the GET endpoint until
         processing is complete.
        :paramtype wait: bool
        :keyword language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
        :paramtype language: str
        :keyword expiry_time: The date/time in ISO-8601 format when the document will be automatically
         deleted.  Defaults to no expiry.
        :paramtype expiry_time: ~datetime.datetime
        """
        super(
            PathsYlw96JobDescriptionsPostRequestbodyContentMultipartFormDataSchema, self
        ).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.url = kwargs.get("url", None)
        self.wait = kwargs.get("wait", True)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)


class PathsYzn84IReformattedResumesPostRequestbodyContentMultipartFormDataSchema(
    msrest.serialization.Model
):
    """PathsYzn84IReformattedResumesPostRequestbodyContentMultipartFormDataSchema.

    All required parameters must be populated in order to send to Azure.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG.
    :vartype file: IO
    :ivar identifier: Unique identifier for the document. If creating a document and left blank,
     one will be automatically generated.
    :vartype identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to file to download and process.
    :vartype url: str
    :ivar language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
    :vartype language: str
    :ivar resume_format: Required. Identifier of the format used.
    :vartype resume_format: str
    :ivar wait: If "true" (default), will return a response only after processing has completed. If
     "false", will return an empty data object which can be polled at the GET endpoint until
     processing is complete.
    :vartype wait: bool
    """

    _validation = {
        "resume_format": {"required": True},
    }

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "identifier": {"key": "identifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "url": {"key": "url", "type": "str"},
        "language": {"key": "language", "type": "str"},
        "resume_format": {"key": "resumeFormat", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG.
        :paramtype file: IO
        :keyword identifier: Unique identifier for the document. If creating a document and left blank,
         one will be automatically generated.
        :paramtype identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to file to download and process.
        :paramtype url: str
        :keyword language: Language code in ISO 639-1 format. Must specify zh-cn or zh-tw for Chinese.
        :paramtype language: str
        :keyword resume_format: Required. Identifier of the format used.
        :paramtype resume_format: str
        :keyword wait: If "true" (default), will return a response only after processing has completed.
         If "false", will return an empty data object which can be polled at the GET endpoint until
         processing is complete.
        :paramtype wait: bool
        """
        super(
            PathsYzn84IReformattedResumesPostRequestbodyContentMultipartFormDataSchema, self
        ).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.url = kwargs.get("url", None)
        self.language = kwargs.get("language", None)
        self.resume_format = kwargs["resume_format"]
        self.wait = kwargs.get("wait", True)


class Rectangle(msrest.serialization.Model):
    """Rectangle.

    All required parameters must be populated in order to send to Azure.

    :ivar x0: Required.
    :vartype x0: float
    :ivar y0: Required.
    :vartype y0: float
    :ivar x1: Required.
    :vartype x1: float
    :ivar y1: Required.
    :vartype y1: float
    """

    _validation = {
        "x0": {"required": True},
        "y0": {"required": True},
        "x1": {"required": True},
        "y1": {"required": True},
    }

    _attribute_map = {
        "x0": {"key": "x0", "type": "float"},
        "y0": {"key": "y0", "type": "float"},
        "x1": {"key": "x1", "type": "float"},
        "y1": {"key": "y1", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword x0: Required.
        :paramtype x0: float
        :keyword y0: Required.
        :paramtype y0: float
        :keyword x1: Required.
        :paramtype x1: float
        :keyword y1: Required.
        :paramtype y1: float
        """
        super(Rectangle, self).__init__(**kwargs)
        self.x0 = kwargs["x0"]
        self.y0 = kwargs["y0"]
        self.x1 = kwargs["x1"]
        self.y1 = kwargs["y1"]


class RedactedResume(msrest.serialization.Model):
    """RedactedResume.

    All required parameters must be populated in order to send to Azure.

    :ivar data: Required.
    :vartype data: ~affinda.models.RedactedResumeData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.Meta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

    _validation = {
        "data": {"required": True},
        "meta": {"required": True},
        "error": {"required": True},
    }

    _attribute_map = {
        "data": {"key": "data", "type": "RedactedResumeData"},
        "meta": {"key": "meta", "type": "Meta"},
        "error": {"key": "error", "type": "Error"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data: Required.
        :paramtype data: ~affinda.models.RedactedResumeData
        :keyword meta: Required.
        :paramtype meta: ~affinda.models.Meta
        :keyword error: Required.
        :paramtype error: ~affinda.models.Error
        """
        super(RedactedResume, self).__init__(**kwargs)
        self.data = kwargs["data"]
        self.meta = kwargs["meta"]
        self.error = kwargs["error"]


class RedactedResumeData(msrest.serialization.Model):
    """RedactedResumeData.

    :ivar redacted_pdf: URL to redacted PDF.
    :vartype redacted_pdf: str
    """

    _attribute_map = {
        "redacted_pdf": {"key": "redactedPdf", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword redacted_pdf: URL to redacted PDF.
        :paramtype redacted_pdf: str
        """
        super(RedactedResumeData, self).__init__(**kwargs)
        self.redacted_pdf = kwargs.get("redacted_pdf", None)


class ReformattedResume(msrest.serialization.Model):
    """ReformattedResume.

    All required parameters must be populated in order to send to Azure.

    :ivar data: Required.
    :vartype data: ~affinda.models.ReformattedResumeData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.Meta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

    _validation = {
        "data": {"required": True},
        "meta": {"required": True},
        "error": {"required": True},
    }

    _attribute_map = {
        "data": {"key": "data", "type": "ReformattedResumeData"},
        "meta": {"key": "meta", "type": "Meta"},
        "error": {"key": "error", "type": "Error"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data: Required.
        :paramtype data: ~affinda.models.ReformattedResumeData
        :keyword meta: Required.
        :paramtype meta: ~affinda.models.Meta
        :keyword error: Required.
        :paramtype error: ~affinda.models.Error
        """
        super(ReformattedResume, self).__init__(**kwargs)
        self.data = kwargs["data"]
        self.meta = kwargs["meta"]
        self.error = kwargs["error"]


class ReformattedResumeData(msrest.serialization.Model):
    """ReformattedResumeData.

    :ivar reformatted_file:
    :vartype reformatted_file: str
    """

    _attribute_map = {
        "reformatted_file": {"key": "reformattedFile", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword reformatted_file:
        :paramtype reformatted_file: str
        """
        super(ReformattedResumeData, self).__init__(**kwargs)
        self.reformatted_file = kwargs.get("reformatted_file", None)


class RequestError(msrest.serialization.Model):
    """RequestError.

    All required parameters must be populated in order to send to Azure.

    :ivar detail: Required.
    :vartype detail: str
    :ivar status_code: Required.
    :vartype status_code: int
    """

    _validation = {
        "detail": {"required": True},
        "status_code": {"required": True},
    }

    _attribute_map = {
        "detail": {"key": "detail", "type": "str"},
        "status_code": {"key": "statusCode", "type": "int"},
    }

    def __init__(self, **kwargs):
        """
        :keyword detail: Required.
        :paramtype detail: str
        :keyword status_code: Required.
        :paramtype status_code: int
        """
        super(RequestError, self).__init__(**kwargs)
        self.detail = kwargs["detail"]
        self.status_code = kwargs["status_code"]


class Resume(msrest.serialization.Model):
    """Resume.

    All required parameters must be populated in order to send to Azure.

    :ivar data: Required.
    :vartype data: ~affinda.models.ResumeData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.Meta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

    _validation = {
        "data": {"required": True},
        "meta": {"required": True},
        "error": {"required": True},
    }

    _attribute_map = {
        "data": {"key": "data", "type": "ResumeData"},
        "meta": {"key": "meta", "type": "Meta"},
        "error": {"key": "error", "type": "Error"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data: Required.
        :paramtype data: ~affinda.models.ResumeData
        :keyword meta: Required.
        :paramtype meta: ~affinda.models.Meta
        :keyword error: Required.
        :paramtype error: ~affinda.models.Error
        """
        super(Resume, self).__init__(**kwargs)
        self.data = kwargs["data"]
        self.meta = kwargs["meta"]
        self.error = kwargs["error"]


class ResumeData(msrest.serialization.Model):
    """ResumeData.

    :ivar name:
    :vartype name: ~affinda.models.ResumeDataName
    :ivar phone_numbers:
    :vartype phone_numbers: list[str]
    :ivar websites:
    :vartype websites: list[str]
    :ivar emails:
    :vartype emails: list[str]
    :ivar date_of_birth:
    :vartype date_of_birth: str
    :ivar location:
    :vartype location: ~affinda.models.Location
    :ivar objective:
    :vartype objective: str
    :ivar languages:
    :vartype languages: list[str]
    :ivar summary:
    :vartype summary: str
    :ivar total_years_experience:
    :vartype total_years_experience: int
    :ivar head_shot: base64 encoded string.
    :vartype head_shot: bytearray
    :ivar education:
    :vartype education: list[~affinda.models.ResumeDataEducationItem]
    :ivar profession: Prediction of the candidate's profession based on recent work experience.
    :vartype profession: str
    :ivar linkedin: Linkedin account associated with the candidate.
    :vartype linkedin: str
    :ivar work_experience:
    :vartype work_experience: list[~affinda.models.ResumeDataWorkExperienceItem]
    :ivar skills:
    :vartype skills: list[~affinda.models.ResumeDataSkillsItem]
    :ivar certifications:
    :vartype certifications: list[str]
    :ivar publications:
    :vartype publications: list[str]
    :ivar referees:
    :vartype referees: list[~affinda.models.ResumeDataRefereesItem]
    :ivar sections:
    :vartype sections: list[~affinda.models.ResumeDataSectionsItem]
    :ivar is_resume_probability: Probability that the given document is a resume. Values below 30
     suggest that the document is not a resume.
    :vartype is_resume_probability: int
    :ivar raw_text: All of the raw text of the parsed resume, example is shortened for readiblity.
    :vartype raw_text: str
    """

    _attribute_map = {
        "name": {"key": "name", "type": "ResumeDataName"},
        "phone_numbers": {"key": "phoneNumbers", "type": "[str]"},
        "websites": {"key": "websites", "type": "[str]"},
        "emails": {"key": "emails", "type": "[str]"},
        "date_of_birth": {"key": "dateOfBirth", "type": "str"},
        "location": {"key": "location", "type": "Location"},
        "objective": {"key": "objective", "type": "str"},
        "languages": {"key": "languages", "type": "[str]"},
        "summary": {"key": "summary", "type": "str"},
        "total_years_experience": {"key": "totalYearsExperience", "type": "int"},
        "head_shot": {"key": "headShot", "type": "bytearray"},
        "education": {"key": "education", "type": "[ResumeDataEducationItem]"},
        "profession": {"key": "profession", "type": "str"},
        "linkedin": {"key": "linkedin", "type": "str"},
        "work_experience": {"key": "workExperience", "type": "[ResumeDataWorkExperienceItem]"},
        "skills": {"key": "skills", "type": "[ResumeDataSkillsItem]"},
        "certifications": {"key": "certifications", "type": "[str]"},
        "publications": {"key": "publications", "type": "[str]"},
        "referees": {"key": "referees", "type": "[ResumeDataRefereesItem]"},
        "sections": {"key": "sections", "type": "[ResumeDataSectionsItem]"},
        "is_resume_probability": {"key": "isResumeProbability", "type": "int"},
        "raw_text": {"key": "rawText", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: ~affinda.models.ResumeDataName
        :keyword phone_numbers:
        :paramtype phone_numbers: list[str]
        :keyword websites:
        :paramtype websites: list[str]
        :keyword emails:
        :paramtype emails: list[str]
        :keyword date_of_birth:
        :paramtype date_of_birth: str
        :keyword location:
        :paramtype location: ~affinda.models.Location
        :keyword objective:
        :paramtype objective: str
        :keyword languages:
        :paramtype languages: list[str]
        :keyword summary:
        :paramtype summary: str
        :keyword total_years_experience:
        :paramtype total_years_experience: int
        :keyword head_shot: base64 encoded string.
        :paramtype head_shot: bytearray
        :keyword education:
        :paramtype education: list[~affinda.models.ResumeDataEducationItem]
        :keyword profession: Prediction of the candidate's profession based on recent work experience.
        :paramtype profession: str
        :keyword linkedin: Linkedin account associated with the candidate.
        :paramtype linkedin: str
        :keyword work_experience:
        :paramtype work_experience: list[~affinda.models.ResumeDataWorkExperienceItem]
        :keyword skills:
        :paramtype skills: list[~affinda.models.ResumeDataSkillsItem]
        :keyword certifications:
        :paramtype certifications: list[str]
        :keyword publications:
        :paramtype publications: list[str]
        :keyword referees:
        :paramtype referees: list[~affinda.models.ResumeDataRefereesItem]
        :keyword sections:
        :paramtype sections: list[~affinda.models.ResumeDataSectionsItem]
        :keyword is_resume_probability: Probability that the given document is a resume. Values below
         30 suggest that the document is not a resume.
        :paramtype is_resume_probability: int
        :keyword raw_text: All of the raw text of the parsed resume, example is shortened for
         readiblity.
        :paramtype raw_text: str
        """
        super(ResumeData, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.phone_numbers = kwargs.get("phone_numbers", None)
        self.websites = kwargs.get("websites", None)
        self.emails = kwargs.get("emails", None)
        self.date_of_birth = kwargs.get("date_of_birth", None)
        self.location = kwargs.get("location", None)
        self.objective = kwargs.get("objective", None)
        self.languages = kwargs.get("languages", None)
        self.summary = kwargs.get("summary", None)
        self.total_years_experience = kwargs.get("total_years_experience", None)
        self.head_shot = kwargs.get("head_shot", None)
        self.education = kwargs.get("education", None)
        self.profession = kwargs.get("profession", None)
        self.linkedin = kwargs.get("linkedin", None)
        self.work_experience = kwargs.get("work_experience", None)
        self.skills = kwargs.get("skills", None)
        self.certifications = kwargs.get("certifications", None)
        self.publications = kwargs.get("publications", None)
        self.referees = kwargs.get("referees", None)
        self.sections = kwargs.get("sections", None)
        self.is_resume_probability = kwargs.get("is_resume_probability", None)
        self.raw_text = kwargs.get("raw_text", None)


class ResumeDataEducationItem(msrest.serialization.Model):
    """ResumeDataEducationItem.

    :ivar organization:
    :vartype organization: str
    :ivar accreditation:
    :vartype accreditation: ~affinda.models.ResumeDataEducationItemAccreditation
    :ivar grade:
    :vartype grade: ~affinda.models.ResumeDataEducationItemGrade
    :ivar location:
    :vartype location: ~affinda.models.Location
    :ivar dates:
    :vartype dates: ~affinda.models.ResumeDataEducationItemDates
    """

    _attribute_map = {
        "organization": {"key": "organization", "type": "str"},
        "accreditation": {"key": "accreditation", "type": "ResumeDataEducationItemAccreditation"},
        "grade": {"key": "grade", "type": "ResumeDataEducationItemGrade"},
        "location": {"key": "location", "type": "Location"},
        "dates": {"key": "dates", "type": "ResumeDataEducationItemDates"},
    }

    def __init__(self, **kwargs):
        """
        :keyword organization:
        :paramtype organization: str
        :keyword accreditation:
        :paramtype accreditation: ~affinda.models.ResumeDataEducationItemAccreditation
        :keyword grade:
        :paramtype grade: ~affinda.models.ResumeDataEducationItemGrade
        :keyword location:
        :paramtype location: ~affinda.models.Location
        :keyword dates:
        :paramtype dates: ~affinda.models.ResumeDataEducationItemDates
        """
        super(ResumeDataEducationItem, self).__init__(**kwargs)
        self.organization = kwargs.get("organization", None)
        self.accreditation = kwargs.get("accreditation", None)
        self.grade = kwargs.get("grade", None)
        self.location = kwargs.get("location", None)
        self.dates = kwargs.get("dates", None)


class ResumeDataEducationItemAccreditation(msrest.serialization.Model):
    """ResumeDataEducationItemAccreditation.

    :ivar education:
    :vartype education: str
    :ivar input_str:
    :vartype input_str: str
    :ivar match_str:
    :vartype match_str: str
    :ivar education_level:
    :vartype education_level: str
    """

    _attribute_map = {
        "education": {"key": "education", "type": "str"},
        "input_str": {"key": "inputStr", "type": "str"},
        "match_str": {"key": "matchStr", "type": "str"},
        "education_level": {"key": "educationLevel", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword education:
        :paramtype education: str
        :keyword input_str:
        :paramtype input_str: str
        :keyword match_str:
        :paramtype match_str: str
        :keyword education_level:
        :paramtype education_level: str
        """
        super(ResumeDataEducationItemAccreditation, self).__init__(**kwargs)
        self.education = kwargs.get("education", None)
        self.input_str = kwargs.get("input_str", None)
        self.match_str = kwargs.get("match_str", None)
        self.education_level = kwargs.get("education_level", None)


class ResumeDataEducationItemDates(msrest.serialization.Model):
    """ResumeDataEducationItemDates.

    :ivar completion_date:
    :vartype completion_date: ~datetime.date
    :ivar is_current:
    :vartype is_current: bool
    :ivar start_date:
    :vartype start_date: ~datetime.date
    """

    _attribute_map = {
        "completion_date": {"key": "completionDate", "type": "date"},
        "is_current": {"key": "isCurrent", "type": "bool"},
        "start_date": {"key": "startDate", "type": "date"},
    }

    def __init__(self, **kwargs):
        """
        :keyword completion_date:
        :paramtype completion_date: ~datetime.date
        :keyword is_current:
        :paramtype is_current: bool
        :keyword start_date:
        :paramtype start_date: ~datetime.date
        """
        super(ResumeDataEducationItemDates, self).__init__(**kwargs)
        self.completion_date = kwargs.get("completion_date", None)
        self.is_current = kwargs.get("is_current", None)
        self.start_date = kwargs.get("start_date", None)


class ResumeDataEducationItemGrade(msrest.serialization.Model):
    """ResumeDataEducationItemGrade.

    :ivar raw:
    :vartype raw: str
    :ivar metric:
    :vartype metric: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "metric": {"key": "metric", "type": "str"},
        "value": {"key": "value", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword metric:
        :paramtype metric: str
        :keyword value:
        :paramtype value: str
        """
        super(ResumeDataEducationItemGrade, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.metric = kwargs.get("metric", None)
        self.value = kwargs.get("value", None)


class ResumeDataName(msrest.serialization.Model):
    """ResumeDataName.

    :ivar raw:
    :vartype raw: str
    :ivar first:
    :vartype first: str
    :ivar last:
    :vartype last: str
    :ivar middle:
    :vartype middle: str
    :ivar title:
    :vartype title: str
    """

    _attribute_map = {
        "raw": {"key": "raw", "type": "str"},
        "first": {"key": "first", "type": "str"},
        "last": {"key": "last", "type": "str"},
        "middle": {"key": "middle", "type": "str"},
        "title": {"key": "title", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw:
        :paramtype raw: str
        :keyword first:
        :paramtype first: str
        :keyword last:
        :paramtype last: str
        :keyword middle:
        :paramtype middle: str
        :keyword title:
        :paramtype title: str
        """
        super(ResumeDataName, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.first = kwargs.get("first", None)
        self.last = kwargs.get("last", None)
        self.middle = kwargs.get("middle", None)
        self.title = kwargs.get("title", None)


class ResumeDataRefereesItem(msrest.serialization.Model):
    """ResumeDataRefereesItem.

    :ivar name:
    :vartype name: str
    :ivar text:
    :vartype text: str
    :ivar email:
    :vartype email: str
    :ivar number:
    :vartype number: str
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "text": {"key": "text", "type": "str"},
        "email": {"key": "email", "type": "str"},
        "number": {"key": "number", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword text:
        :paramtype text: str
        :keyword email:
        :paramtype email: str
        :keyword number:
        :paramtype number: str
        """
        super(ResumeDataRefereesItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.text = kwargs.get("text", None)
        self.email = kwargs.get("email", None)
        self.number = kwargs.get("number", None)


class ResumeDataSectionsItem(msrest.serialization.Model):
    """ResumeDataSectionsItem.

    :ivar section_type:
    :vartype section_type: str
    :ivar bbox:
    :vartype bbox: list[float]
    :ivar page_index:
    :vartype page_index: int
    :ivar text:
    :vartype text: str
    """

    _validation = {
        "bbox": {"max_items": 4, "min_items": 4},
    }

    _attribute_map = {
        "section_type": {"key": "sectionType", "type": "str"},
        "bbox": {"key": "bbox", "type": "[float]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "text": {"key": "text", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword section_type:
        :paramtype section_type: str
        :keyword bbox:
        :paramtype bbox: list[float]
        :keyword page_index:
        :paramtype page_index: int
        :keyword text:
        :paramtype text: str
        """
        super(ResumeDataSectionsItem, self).__init__(**kwargs)
        self.section_type = kwargs.get("section_type", None)
        self.bbox = kwargs.get("bbox", None)
        self.page_index = kwargs.get("page_index", None)
        self.text = kwargs.get("text", None)


class ResumeDataSkillsItem(msrest.serialization.Model):
    """ResumeDataSkillsItem.

    :ivar name:
    :vartype name: str
    :ivar last_used:
    :vartype last_used: str
    :ivar number_of_months:
    :vartype number_of_months: int
    :ivar type:
    :vartype type: str
    :ivar sources:
    :vartype sources: list[~affinda.models.ResumeDataSkillsPropertiesItemsItem]
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "last_used": {"key": "lastUsed", "type": "str"},
        "number_of_months": {"key": "numberOfMonths", "type": "int"},
        "type": {"key": "type", "type": "str"},
        "sources": {"key": "sources", "type": "[ResumeDataSkillsPropertiesItemsItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword last_used:
        :paramtype last_used: str
        :keyword number_of_months:
        :paramtype number_of_months: int
        :keyword type:
        :paramtype type: str
        :keyword sources:
        :paramtype sources: list[~affinda.models.ResumeDataSkillsPropertiesItemsItem]
        """
        super(ResumeDataSkillsItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.last_used = kwargs.get("last_used", None)
        self.number_of_months = kwargs.get("number_of_months", None)
        self.type = kwargs.get("type", None)
        self.sources = kwargs.get("sources", None)


class ResumeDataSkillsPropertiesItemsItem(msrest.serialization.Model):
    """ResumeDataSkillsPropertiesItemsItem.

    :ivar section:
    :vartype section: str
    :ivar position:
    :vartype position: int
    """

    _attribute_map = {
        "section": {"key": "section", "type": "str"},
        "position": {"key": "position", "type": "int"},
    }

    def __init__(self, **kwargs):
        """
        :keyword section:
        :paramtype section: str
        :keyword position:
        :paramtype position: int
        """
        super(ResumeDataSkillsPropertiesItemsItem, self).__init__(**kwargs)
        self.section = kwargs.get("section", None)
        self.position = kwargs.get("position", None)


class ResumeDataWorkExperienceItem(msrest.serialization.Model):
    """ResumeDataWorkExperienceItem.

    :ivar job_title:
    :vartype job_title: str
    :ivar organization:
    :vartype organization: str
    :ivar location:
    :vartype location: ~affinda.models.Location
    :ivar job_description:
    :vartype job_description: str
    :ivar dates:
    :vartype dates: ~affinda.models.ResumeDataWorkExperienceItemDates
    :ivar occupation:
    :vartype occupation: ~affinda.models.ResumeDataWorkExperienceItemOccupation
    """

    _attribute_map = {
        "job_title": {"key": "jobTitle", "type": "str"},
        "organization": {"key": "organization", "type": "str"},
        "location": {"key": "location", "type": "Location"},
        "job_description": {"key": "jobDescription", "type": "str"},
        "dates": {"key": "dates", "type": "ResumeDataWorkExperienceItemDates"},
        "occupation": {"key": "occupation", "type": "ResumeDataWorkExperienceItemOccupation"},
    }

    def __init__(self, **kwargs):
        """
        :keyword job_title:
        :paramtype job_title: str
        :keyword organization:
        :paramtype organization: str
        :keyword location:
        :paramtype location: ~affinda.models.Location
        :keyword job_description:
        :paramtype job_description: str
        :keyword dates:
        :paramtype dates: ~affinda.models.ResumeDataWorkExperienceItemDates
        :keyword occupation:
        :paramtype occupation: ~affinda.models.ResumeDataWorkExperienceItemOccupation
        """
        super(ResumeDataWorkExperienceItem, self).__init__(**kwargs)
        self.job_title = kwargs.get("job_title", None)
        self.organization = kwargs.get("organization", None)
        self.location = kwargs.get("location", None)
        self.job_description = kwargs.get("job_description", None)
        self.dates = kwargs.get("dates", None)
        self.occupation = kwargs.get("occupation", None)


class ResumeDataWorkExperienceItemDates(msrest.serialization.Model):
    """ResumeDataWorkExperienceItemDates.

    :ivar start_date:
    :vartype start_date: ~datetime.date
    :ivar end_date:
    :vartype end_date: ~datetime.date
    :ivar months_in_position:
    :vartype months_in_position: int
    :ivar is_current:
    :vartype is_current: bool
    """

    _attribute_map = {
        "start_date": {"key": "startDate", "type": "date"},
        "end_date": {"key": "endDate", "type": "date"},
        "months_in_position": {"key": "monthsInPosition", "type": "int"},
        "is_current": {"key": "isCurrent", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword start_date:
        :paramtype start_date: ~datetime.date
        :keyword end_date:
        :paramtype end_date: ~datetime.date
        :keyword months_in_position:
        :paramtype months_in_position: int
        :keyword is_current:
        :paramtype is_current: bool
        """
        super(ResumeDataWorkExperienceItemDates, self).__init__(**kwargs)
        self.start_date = kwargs.get("start_date", None)
        self.end_date = kwargs.get("end_date", None)
        self.months_in_position = kwargs.get("months_in_position", None)
        self.is_current = kwargs.get("is_current", None)


class ResumeDataWorkExperienceItemOccupation(msrest.serialization.Model):
    """ResumeDataWorkExperienceItemOccupation.

    :ivar job_title: The raw (not normalized) job title pulled from the work experience entry.
    :vartype job_title: str
    :ivar job_title_normalized: Mapped onto the EMSI job title taxonomy if a sufficiently close
     match exists.
    :vartype job_title_normalized: str
    :ivar management_level: Possible values include: "Low", "Mid", "Upper".
    :vartype management_level: str or ~affinda.models.ManagementLevel
    :ivar classification:
    :vartype classification:
     ~affinda.models.Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification
    """

    _attribute_map = {
        "job_title": {"key": "jobTitle", "type": "str"},
        "job_title_normalized": {"key": "jobTitleNormalized", "type": "str"},
        "management_level": {"key": "managementLevel", "type": "str"},
        "classification": {
            "key": "classification",
            "type": "Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword job_title: The raw (not normalized) job title pulled from the work experience entry.
        :paramtype job_title: str
        :keyword job_title_normalized: Mapped onto the EMSI job title taxonomy if a sufficiently close
         match exists.
        :paramtype job_title_normalized: str
        :keyword management_level: Possible values include: "Low", "Mid", "Upper".
        :paramtype management_level: str or ~affinda.models.ManagementLevel
        :keyword classification:
        :paramtype classification:
         ~affinda.models.Components1TryetgSchemasResumedataPropertiesWorkexperienceItemsPropertiesOccupationPropertiesClassification
        """
        super(ResumeDataWorkExperienceItemOccupation, self).__init__(**kwargs)
        self.job_title = kwargs.get("job_title", None)
        self.job_title_normalized = kwargs.get("job_title_normalized", None)
        self.management_level = kwargs.get("management_level", None)
        self.classification = kwargs.get("classification", None)


class ResumeSearch(msrest.serialization.Model):
    """ResumeSearch.

    :ivar count: Total number of results.
    :vartype count: int
    :ivar next: URL to request next page of results.
    :vartype next: str
    :ivar previous: URL to request previous page of results.
    :vartype previous: str
    :ivar parameters:
    :vartype parameters: ~affinda.models.ResumeSearchParameters
    :ivar results:
    :vartype results: list[~affinda.models.ResumeSearchResult]
    """

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
        "parameters": {"key": "parameters", "type": "ResumeSearchParameters"},
        "results": {"key": "results", "type": "[ResumeSearchResult]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Total number of results.
        :paramtype count: int
        :keyword next: URL to request next page of results.
        :paramtype next: str
        :keyword previous: URL to request previous page of results.
        :paramtype previous: str
        :keyword parameters:
        :paramtype parameters: ~affinda.models.ResumeSearchParameters
        :keyword results:
        :paramtype results: list[~affinda.models.ResumeSearchResult]
        """
        super(ResumeSearch, self).__init__(**kwargs)
        self.count = kwargs.get("count", None)
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)
        self.parameters = kwargs.get("parameters", None)
        self.results = kwargs.get("results", None)


class ResumeSearchParameters(msrest.serialization.Model):
    """ResumeSearchParameters.

    All required parameters must be populated in order to send to Azure.

    :ivar indices: Required.
    :vartype indices: list[str]
    :ivar job_description: Unique identifier for the document. If creating a document and left
     blank, one will be automatically generated.
    :vartype job_description: str
    :ivar job_titles:
    :vartype job_titles: list[str]
    :ivar job_titles_current_only:
    :vartype job_titles_current_only: bool
    :ivar job_titles_required:
    :vartype job_titles_required: bool
    :ivar job_titles_weight:
    :vartype job_titles_weight: float
    :ivar years_experience_min:
    :vartype years_experience_min: int
    :ivar years_experience_max:
    :vartype years_experience_max: int
    :ivar years_experience_required:
    :vartype years_experience_required: bool
    :ivar years_experience_weight:
    :vartype years_experience_weight: float
    :ivar locations:
    :vartype locations: list[~affinda.models.ResumeSearchParametersLocationsItem]
    :ivar locations_weight:
    :vartype locations_weight: float
    :ivar locations_required:
    :vartype locations_required: bool
    :ivar skills:
    :vartype skills: list[~affinda.models.ResumeSearchParametersSkillsItem]
    :ivar skills_weight:
    :vartype skills_weight: float
    :ivar languages:
    :vartype languages: list[~affinda.models.ResumeSearchParametersLanguagesItem]
    :ivar languages_weight:
    :vartype languages_weight: float
    :ivar institutions:
    :vartype institutions: list[str]
    :ivar institutions_required:
    :vartype institutions_required: bool
    :ivar degrees:
    :vartype degrees: list[str]
    :ivar degrees_required:
    :vartype degrees_required: bool
    :ivar highest_degree_types:
    :vartype highest_degree_types: list[str or ~affinda.models.EducationLevel]
    :ivar highest_degree_types_required:
    :vartype highest_degree_types_required: bool
    :ivar is_current_student:
    :vartype is_current_student: bool
    :ivar is_current_student_required:
    :vartype is_current_student_required: bool
    :ivar is_recent_graduate:
    :vartype is_recent_graduate: bool
    :ivar is_recent_graduate_required:
    :vartype is_recent_graduate_required: bool
    :ivar education_weight:
    :vartype education_weight: float
    :ivar search_expression:
    :vartype search_expression: str
    :ivar search_expression_required:
    :vartype search_expression_required: bool
    :ivar search_expression_weight:
    :vartype search_expression_weight: float
    :ivar soc_codes:
    :vartype soc_codes: list[int]
    :ivar soc_codes_weight:
    :vartype soc_codes_weight: float
    :ivar soc_codes_required:
    :vartype soc_codes_required: bool
    :ivar management_level: Possible values include: "Low", "Mid", "Upper".
    :vartype management_level: str or ~affinda.models.ManagementLevel
    :ivar management_level_required:
    :vartype management_level_required: bool
    :ivar management_level_weight:
    :vartype management_level_weight: float
    """

    _validation = {
        "indices": {"required": True},
        "job_titles_weight": {"maximum": 1, "minimum": 0},
        "years_experience_weight": {"maximum": 1, "minimum": 0},
        "locations_weight": {"maximum": 1, "minimum": 0},
        "skills_weight": {"maximum": 1, "minimum": 0},
        "languages_weight": {"maximum": 1, "minimum": 0},
        "highest_degree_types": {"unique": True},
        "education_weight": {"maximum": 1, "minimum": 0},
        "search_expression_weight": {"maximum": 1, "minimum": 0},
        "soc_codes_weight": {"maximum": 1, "minimum": 0},
        "management_level_weight": {"maximum": 1, "minimum": 0},
    }

    _attribute_map = {
        "indices": {"key": "indices", "type": "[str]"},
        "job_description": {"key": "jobDescription", "type": "str"},
        "job_titles": {"key": "jobTitles", "type": "[str]"},
        "job_titles_current_only": {"key": "jobTitlesCurrentOnly", "type": "bool"},
        "job_titles_required": {"key": "jobTitlesRequired", "type": "bool"},
        "job_titles_weight": {"key": "jobTitlesWeight", "type": "float"},
        "years_experience_min": {"key": "yearsExperienceMin", "type": "int"},
        "years_experience_max": {"key": "yearsExperienceMax", "type": "int"},
        "years_experience_required": {"key": "yearsExperienceRequired", "type": "bool"},
        "years_experience_weight": {"key": "yearsExperienceWeight", "type": "float"},
        "locations": {"key": "locations", "type": "[ResumeSearchParametersLocationsItem]"},
        "locations_weight": {"key": "locationsWeight", "type": "float"},
        "locations_required": {"key": "locationsRequired", "type": "bool"},
        "skills": {"key": "skills", "type": "[ResumeSearchParametersSkillsItem]"},
        "skills_weight": {"key": "skillsWeight", "type": "float"},
        "languages": {"key": "languages", "type": "[ResumeSearchParametersLanguagesItem]"},
        "languages_weight": {"key": "languagesWeight", "type": "float"},
        "institutions": {"key": "institutions", "type": "[str]"},
        "institutions_required": {"key": "institutionsRequired", "type": "bool"},
        "degrees": {"key": "degrees", "type": "[str]"},
        "degrees_required": {"key": "degreesRequired", "type": "bool"},
        "highest_degree_types": {"key": "highestDegreeTypes", "type": "[str]"},
        "highest_degree_types_required": {"key": "highestDegreeTypesRequired", "type": "bool"},
        "is_current_student": {"key": "isCurrentStudent", "type": "bool"},
        "is_current_student_required": {"key": "isCurrentStudentRequired", "type": "bool"},
        "is_recent_graduate": {"key": "isRecentGraduate", "type": "bool"},
        "is_recent_graduate_required": {"key": "isRecentGraduateRequired", "type": "bool"},
        "education_weight": {"key": "educationWeight", "type": "float"},
        "search_expression": {"key": "searchExpression", "type": "str"},
        "search_expression_required": {"key": "searchExpressionRequired", "type": "bool"},
        "search_expression_weight": {"key": "searchExpressionWeight", "type": "float"},
        "soc_codes": {"key": "socCodes", "type": "[int]"},
        "soc_codes_weight": {"key": "socCodesWeight", "type": "float"},
        "soc_codes_required": {"key": "socCodesRequired", "type": "bool"},
        "management_level": {"key": "managementLevel", "type": "str"},
        "management_level_required": {"key": "managementLevelRequired", "type": "bool"},
        "management_level_weight": {"key": "managementLevelWeight", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword indices: Required.
        :paramtype indices: list[str]
        :keyword job_description: Unique identifier for the document. If creating a document and left
         blank, one will be automatically generated.
        :paramtype job_description: str
        :keyword job_titles:
        :paramtype job_titles: list[str]
        :keyword job_titles_current_only:
        :paramtype job_titles_current_only: bool
        :keyword job_titles_required:
        :paramtype job_titles_required: bool
        :keyword job_titles_weight:
        :paramtype job_titles_weight: float
        :keyword years_experience_min:
        :paramtype years_experience_min: int
        :keyword years_experience_max:
        :paramtype years_experience_max: int
        :keyword years_experience_required:
        :paramtype years_experience_required: bool
        :keyword years_experience_weight:
        :paramtype years_experience_weight: float
        :keyword locations:
        :paramtype locations: list[~affinda.models.ResumeSearchParametersLocationsItem]
        :keyword locations_weight:
        :paramtype locations_weight: float
        :keyword locations_required:
        :paramtype locations_required: bool
        :keyword skills:
        :paramtype skills: list[~affinda.models.ResumeSearchParametersSkillsItem]
        :keyword skills_weight:
        :paramtype skills_weight: float
        :keyword languages:
        :paramtype languages: list[~affinda.models.ResumeSearchParametersLanguagesItem]
        :keyword languages_weight:
        :paramtype languages_weight: float
        :keyword institutions:
        :paramtype institutions: list[str]
        :keyword institutions_required:
        :paramtype institutions_required: bool
        :keyword degrees:
        :paramtype degrees: list[str]
        :keyword degrees_required:
        :paramtype degrees_required: bool
        :keyword highest_degree_types:
        :paramtype highest_degree_types: list[str or ~affinda.models.EducationLevel]
        :keyword highest_degree_types_required:
        :paramtype highest_degree_types_required: bool
        :keyword is_current_student:
        :paramtype is_current_student: bool
        :keyword is_current_student_required:
        :paramtype is_current_student_required: bool
        :keyword is_recent_graduate:
        :paramtype is_recent_graduate: bool
        :keyword is_recent_graduate_required:
        :paramtype is_recent_graduate_required: bool
        :keyword education_weight:
        :paramtype education_weight: float
        :keyword search_expression:
        :paramtype search_expression: str
        :keyword search_expression_required:
        :paramtype search_expression_required: bool
        :keyword search_expression_weight:
        :paramtype search_expression_weight: float
        :keyword soc_codes:
        :paramtype soc_codes: list[int]
        :keyword soc_codes_weight:
        :paramtype soc_codes_weight: float
        :keyword soc_codes_required:
        :paramtype soc_codes_required: bool
        :keyword management_level: Possible values include: "Low", "Mid", "Upper".
        :paramtype management_level: str or ~affinda.models.ManagementLevel
        :keyword management_level_required:
        :paramtype management_level_required: bool
        :keyword management_level_weight:
        :paramtype management_level_weight: float
        """
        super(ResumeSearchParameters, self).__init__(**kwargs)
        self.indices = kwargs["indices"]
        self.job_description = kwargs.get("job_description", None)
        self.job_titles = kwargs.get("job_titles", None)
        self.job_titles_current_only = kwargs.get("job_titles_current_only", None)
        self.job_titles_required = kwargs.get("job_titles_required", None)
        self.job_titles_weight = kwargs.get("job_titles_weight", None)
        self.years_experience_min = kwargs.get("years_experience_min", None)
        self.years_experience_max = kwargs.get("years_experience_max", None)
        self.years_experience_required = kwargs.get("years_experience_required", None)
        self.years_experience_weight = kwargs.get("years_experience_weight", None)
        self.locations = kwargs.get("locations", None)
        self.locations_weight = kwargs.get("locations_weight", None)
        self.locations_required = kwargs.get("locations_required", None)
        self.skills = kwargs.get("skills", None)
        self.skills_weight = kwargs.get("skills_weight", None)
        self.languages = kwargs.get("languages", None)
        self.languages_weight = kwargs.get("languages_weight", None)
        self.institutions = kwargs.get("institutions", None)
        self.institutions_required = kwargs.get("institutions_required", None)
        self.degrees = kwargs.get("degrees", None)
        self.degrees_required = kwargs.get("degrees_required", None)
        self.highest_degree_types = kwargs.get("highest_degree_types", None)
        self.highest_degree_types_required = kwargs.get("highest_degree_types_required", None)
        self.is_current_student = kwargs.get("is_current_student", None)
        self.is_current_student_required = kwargs.get("is_current_student_required", None)
        self.is_recent_graduate = kwargs.get("is_recent_graduate", None)
        self.is_recent_graduate_required = kwargs.get("is_recent_graduate_required", None)
        self.education_weight = kwargs.get("education_weight", None)
        self.search_expression = kwargs.get("search_expression", None)
        self.search_expression_required = kwargs.get("search_expression_required", None)
        self.search_expression_weight = kwargs.get("search_expression_weight", None)
        self.soc_codes = kwargs.get("soc_codes", None)
        self.soc_codes_weight = kwargs.get("soc_codes_weight", None)
        self.soc_codes_required = kwargs.get("soc_codes_required", None)
        self.management_level = kwargs.get("management_level", None)
        self.management_level_required = kwargs.get("management_level_required", None)
        self.management_level_weight = kwargs.get("management_level_weight", None)


class ResumeSearchParametersLanguagesItem(msrest.serialization.Model):
    """ResumeSearchParametersLanguagesItem.

    :ivar name:
    :vartype name: str
    :ivar required:
    :vartype required: bool
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "required": {"key": "required", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword required:
        :paramtype required: bool
        """
        super(ResumeSearchParametersLanguagesItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.required = kwargs.get("required", None)


class ResumeSearchParametersLocationsItem(msrest.serialization.Model):
    """ResumeSearchParametersLocationsItem.

    :ivar name:
    :vartype name: str
    :ivar coordinates:
    :vartype coordinates: ~affinda.models.ResumeSearchParametersLocationsItemCoordinates
    :ivar distance:
    :vartype distance: int
    :ivar unit: Possible values include: "km", "mi".
    :vartype unit: str or ~affinda.models.SearchLocationUnit
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "coordinates": {
            "key": "coordinates",
            "type": "ResumeSearchParametersLocationsItemCoordinates",
        },
        "distance": {"key": "distance", "type": "int"},
        "unit": {"key": "unit", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword coordinates:
        :paramtype coordinates: ~affinda.models.ResumeSearchParametersLocationsItemCoordinates
        :keyword distance:
        :paramtype distance: int
        :keyword unit: Possible values include: "km", "mi".
        :paramtype unit: str or ~affinda.models.SearchLocationUnit
        """
        super(ResumeSearchParametersLocationsItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.coordinates = kwargs.get("coordinates", None)
        self.distance = kwargs.get("distance", None)
        self.unit = kwargs.get("unit", None)


class ResumeSearchParametersLocationsItemCoordinates(msrest.serialization.Model):
    """ResumeSearchParametersLocationsItemCoordinates.

    :ivar latitude:
    :vartype latitude: float
    :ivar longitude:
    :vartype longitude: float
    """

    _attribute_map = {
        "latitude": {"key": "latitude", "type": "float"},
        "longitude": {"key": "longitude", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword latitude:
        :paramtype latitude: float
        :keyword longitude:
        :paramtype longitude: float
        """
        super(ResumeSearchParametersLocationsItemCoordinates, self).__init__(**kwargs)
        self.latitude = kwargs.get("latitude", None)
        self.longitude = kwargs.get("longitude", None)


class ResumeSearchParametersSkillsItem(msrest.serialization.Model):
    """ResumeSearchParametersSkillsItem.

    :ivar name:
    :vartype name: str
    :ivar required:
    :vartype required: bool
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "required": {"key": "required", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword required:
        :paramtype required: bool
        """
        super(ResumeSearchParametersSkillsItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.required = kwargs.get("required", None)


class ResumeSearchResult(msrest.serialization.Model):
    """ResumeSearchResult.

    All required parameters must be populated in order to send to Azure.

    :ivar identifier: Required. Unique identifier for the document. If creating a document and left
     blank, one will be automatically generated.
    :vartype identifier: str
    :ivar score: Required.
    :vartype score: float
    :ivar pdf: Required.
    :vartype pdf: str
    :ivar name:
    :vartype name: str
    :ivar job_title: Required.
    :vartype job_title: ~affinda.models.ResumeSearchScoreComponent
    :ivar management_level: Required.
    :vartype management_level: ~affinda.models.ResumeSearchScoreComponent
    :ivar experience: Required.
    :vartype experience: ~affinda.models.ResumeSearchScoreComponent
    :ivar skills: Required.
    :vartype skills: ~affinda.models.ResumeSearchScoreComponent
    :ivar languages: Required.
    :vartype languages: ~affinda.models.ResumeSearchScoreComponent
    :ivar location: Required.
    :vartype location: ~affinda.models.ResumeSearchScoreComponent
    :ivar education: Required.
    :vartype education: ~affinda.models.ResumeSearchScoreComponent
    :ivar occupation_group: Required.
    :vartype occupation_group: ~affinda.models.ResumeSearchScoreComponent
    """

    _validation = {
        "identifier": {"required": True},
        "score": {"required": True},
        "pdf": {"required": True},
        "job_title": {"required": True},
        "management_level": {"required": True},
        "experience": {"required": True},
        "skills": {"required": True},
        "languages": {"required": True},
        "location": {"required": True},
        "education": {"required": True},
        "occupation_group": {"required": True},
    }

    _attribute_map = {
        "identifier": {"key": "identifier", "type": "str"},
        "score": {"key": "score", "type": "float"},
        "pdf": {"key": "pdf", "type": "str"},
        "name": {"key": "name", "type": "str"},
        "job_title": {"key": "jobTitle", "type": "ResumeSearchScoreComponent"},
        "management_level": {"key": "managementLevel", "type": "ResumeSearchScoreComponent"},
        "experience": {"key": "experience", "type": "ResumeSearchScoreComponent"},
        "skills": {"key": "skills", "type": "ResumeSearchScoreComponent"},
        "languages": {"key": "languages", "type": "ResumeSearchScoreComponent"},
        "location": {"key": "location", "type": "ResumeSearchScoreComponent"},
        "education": {"key": "education", "type": "ResumeSearchScoreComponent"},
        "occupation_group": {"key": "occupationGroup", "type": "ResumeSearchScoreComponent"},
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Required. Unique identifier for the document. If creating a document and
         left blank, one will be automatically generated.
        :paramtype identifier: str
        :keyword score: Required.
        :paramtype score: float
        :keyword pdf: Required.
        :paramtype pdf: str
        :keyword name:
        :paramtype name: str
        :keyword job_title: Required.
        :paramtype job_title: ~affinda.models.ResumeSearchScoreComponent
        :keyword management_level: Required.
        :paramtype management_level: ~affinda.models.ResumeSearchScoreComponent
        :keyword experience: Required.
        :paramtype experience: ~affinda.models.ResumeSearchScoreComponent
        :keyword skills: Required.
        :paramtype skills: ~affinda.models.ResumeSearchScoreComponent
        :keyword languages: Required.
        :paramtype languages: ~affinda.models.ResumeSearchScoreComponent
        :keyword location: Required.
        :paramtype location: ~affinda.models.ResumeSearchScoreComponent
        :keyword education: Required.
        :paramtype education: ~affinda.models.ResumeSearchScoreComponent
        :keyword occupation_group: Required.
        :paramtype occupation_group: ~affinda.models.ResumeSearchScoreComponent
        """
        super(ResumeSearchResult, self).__init__(**kwargs)
        self.identifier = kwargs["identifier"]
        self.score = kwargs["score"]
        self.pdf = kwargs["pdf"]
        self.name = kwargs.get("name", None)
        self.job_title = kwargs["job_title"]
        self.management_level = kwargs["management_level"]
        self.experience = kwargs["experience"]
        self.skills = kwargs["skills"]
        self.languages = kwargs["languages"]
        self.location = kwargs["location"]
        self.education = kwargs["education"]
        self.occupation_group = kwargs["occupation_group"]


class ResumeSearchScoreComponent(msrest.serialization.Model):
    """ResumeSearchScoreComponent.

    All required parameters must be populated in order to send to Azure.

    :ivar label: Required.
    :vartype label: str
    :ivar value:
    :vartype value: str
    :ivar score:
    :vartype score: float
    """

    _validation = {
        "label": {"required": True},
    }

    _attribute_map = {
        "label": {"key": "label", "type": "str"},
        "value": {"key": "value", "type": "str"},
        "score": {"key": "score", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword label: Required.
        :paramtype label: str
        :keyword value:
        :paramtype value: str
        :keyword score:
        :paramtype score: float
        """
        super(ResumeSearchScoreComponent, self).__init__(**kwargs)
        self.label = kwargs["label"]
        self.value = kwargs.get("value", None)
        self.score = kwargs.get("score", None)


class SkillAnnotation(Annotation):
    """SkillAnnotation.

    All required parameters must be populated in order to send to Azure.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required.
    :vartype confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar classification: Required.
    :vartype classification: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "rectangle": {"required": True},
        "page_index": {"required": True},
        "raw": {"required": True},
        "confidence": {"required": True},
        "is_verified": {"required": True},
        "classification": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "classification": {"key": "classification", "type": "str"},
        "parsed": {"key": "parsed", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required.
        :paramtype confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword classification: Required.
        :paramtype classification: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(SkillAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)
