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

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


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

    Variables are only populated by the server, and will be ignored when sending a request.

    :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
    """

    _validation = {
        "input_str": {"readonly": True},
        "match_str": {"readonly": True},
        "education_level": {"readonly": True},
    }

    _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
        """
        super(Accreditation, self).__init__(**kwargs)
        self.education = kwargs.get("education", None)
        self.input_str = None
        self.match_str = None
        self.education_level = None


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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        """
        super(Annotation, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]


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

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        """
        super(AnnotationV2Base, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs.get("id", None)
        self.rectangle = kwargs.get("rectangle", None)
        self.rectangles = None
        self.page_index = kwargs.get("page_index", None)
        self.raw = kwargs.get("raw", None)
        self.confidence = kwargs.get("confidence", None)
        self.classification_confidence = kwargs.get("classification_confidence", None)
        self.text_extraction_confidence = kwargs.get("text_extraction_confidence", None)
        self.is_verified = kwargs.get("is_verified", None)
        self.is_client_verified = kwargs.get("is_client_verified", None)
        self.is_auto_verified = kwargs.get("is_auto_verified", None)
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs.get("content_type", None)


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

    :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(Components105Abr3SchemasInvoicedataPropertiesCustomernumberAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components10Thcs2SchemasInvoicedataPropertiesSupplieremailAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1127QwqSchemasInvoicedataPropertiesBankibanAllof1, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components158Lya5SchemasInvoicedataPropertiesCustomerbusinessnumberAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            Components159Ji55SchemasResumesearchdetailPropertiesLanguagesPropertiesValueItemsAllof1,
            self,
        ).__init__(**kwargs)
        self.match = kwargs.get("match", None)


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

    :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(Components17JmwpjSchemasInvoicedataPropertiesSupplierwebsiteAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1Fe3VqtSchemasInvoicedataPropertiesSupplierfaxAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components1Hr2XldSchemasInvoicedataPropertiesSupplierphonenumberAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components1O8OpknSchemasInvoicedataPropertiesCustomercompanynameAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components1P4Fl61SchemasInvoicedataPropertiesSuppliercompanynameAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1QdassaSchemasInvoicedataPropertiesBanksortcodeAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1Roa72HSchemasInvoicedataPropertiesBankswiftAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1RrxgkvSchemasInvoicedataPropertiesBankbsbAllof1, self).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            Components1TlnsonSchemasJobdescriptionsearchdetailPropertiesLocationPropertiesValueAllof1,
            self,
        ).__init__(**kwargs)
        self.match = kwargs.get("match", 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
    :ivar minor_group_code: The 4 digit code representing the SOC2020 classification for this job
     title.
    :vartype minor_group_code: int
    :ivar sub_major_group_code: The 4 digit code representing the SOC2020 classification for this
     job title.
    :vartype sub_major_group_code: int
    :ivar major_group_code: The 4 digit code representing the SOC2020 classification for this job
     title.
    :vartype major_group_code: int
    """

    _validation = {
        "soc_code": {"maximum": 9999, "minimum": 1},
        "minor_group_code": {"maximum": 9999, "minimum": 1},
        "sub_major_group_code": {"maximum": 9999, "minimum": 1},
        "major_group_code": {"maximum": 9999, "minimum": 1},
    }

    _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"},
        "minor_group_code": {"key": "minorGroupCode", "type": "int"},
        "sub_major_group_code": {"key": "subMajorGroupCode", "type": "int"},
        "major_group_code": {"key": "majorGroupCode", "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
        :keyword minor_group_code: The 4 digit code representing the SOC2020 classification for this
         job title.
        :paramtype minor_group_code: int
        :keyword sub_major_group_code: The 4 digit code representing the SOC2020 classification for
         this job title.
        :paramtype sub_major_group_code: int
        :keyword major_group_code: The 4 digit code representing the SOC2020 classification for this
         job title.
        :paramtype major_group_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)
        self.minor_group_code = kwargs.get("minor_group_code", None)
        self.sub_major_group_code = kwargs.get("sub_major_group_code", None)
        self.major_group_code = kwargs.get("major_group_code", None)


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

    :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(Components1Vvtu5NSchemasInvoicedataPropertiesPaymentamountpaidAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1W3SqeuSchemasInvoicedataPropertiesPaymentamountbaseAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components1Y7HcurSchemasInvoicedataPropertiesCustomeremailAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components1YsiqwnSchemasInvoicedataPropertiesCustomerphonenumberAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components2XnshtSchemasInvoicedataPropertiesPaymentreferenceAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components4A2PzvSchemasInvoicedataPropertiesPaymentamounttotalAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            Components5D6NjySchemasInvoicedataPropertiesSupplierbusinessnumberAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components5Rnu7ESchemasInvoicedataPropertiesInvoicenumberAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components6Zm20BSchemasInvoicedataPropertiesPaymentamounttaxAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(Components74A7C1SchemasInvoicedataPropertiesBankaccountnumberAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(ComponentsA69Bd0SchemasInvoicedataPropertiesBpaybillercodeAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            ComponentsAq75Z8SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(ComponentsB3U7OaSchemasInvoicedataPropertiesSuppliervatAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(ComponentsBeazccSchemasInvoicedataPropertiesCustomervatAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(ComponentsEtsq6MSchemasInvoicedataPropertiesPaymentamountdueAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            ComponentsH65QjbSchemasResumesearchdetailPropertiesSkillsPropertiesValueItemsAllof1,
            self,
        ).__init__(**kwargs)
        self.match = kwargs.get("match", None)


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            ComponentsN9ShogSchemasResumesearchdetailPropertiesLocationPropertiesValueAllof1, self
        ).__init__(**kwargs)
        self.match = kwargs.get("match", None)


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

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

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

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

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

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


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            ComponentsRe6GnoSchemasJobdescriptionsearchdetailPropertiesOccupationgroupPropertiesValueAllof1,
            self,
        ).__init__(**kwargs)
        self.match = kwargs.get("match", None)


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

    :ivar match:
    :vartype match: bool
    """

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

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        """
        super(
            ComponentsSxu0N3SchemasResumesearchdetailPropertiesEducationPropertiesValueItemsAllof1,
            self,
        ).__init__(**kwargs)
        self.match = kwargs.get("match", None)


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

    :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(ComponentsW32SuaSchemasInvoicedataPropertiesBpayreferenceAllof1, self).__init__(
            **kwargs
        )
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

    :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(
            ComponentsWv2QrxSchemasInvoicedataPropertiesCustomercontactnameAllof1, self
        ).__init__(**kwargs)
        self.raw = kwargs.get("raw", None)
        self.parsed = kwargs.get("parsed", None)


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

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

    :ivar data_point: Required. Data point identifier.
    :vartype data_point: str
    :ivar weight: Required.
    :vartype weight: float
    """

    _validation = {
        "data_point": {"required": True},
        "weight": {"required": True, "maximum": 1, "minimum": 0},
    }

    _attribute_map = {
        "data_point": {"key": "dataPoint", "type": "str"},
        "weight": {"key": "weight", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword data_point: Required. Data point identifier.
        :paramtype data_point: str
        :keyword weight: Required.
        :paramtype weight: float
        """
        super(CustomFieldConfig, self).__init__(**kwargs)
        self.data_point = kwargs["data_point"]
        self.weight = kwargs.get("weight", 0.5)


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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~datetime.date
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: ~datetime.date
        """
        super(DateAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class DateAnnotationV2Update(AnnotationV2Base):
    """DateAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~datetime.date
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: ~datetime.date
        """
        super(DateAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


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

    :ivar id:
    :vartype id: int
    :ivar organization:
    :vartype organization: str
    :ivar accreditation:
    :vartype accreditation: ~affinda.models.Accreditation
    :ivar grade:
    :vartype grade: ~affinda.models.EducationGrade
    :ivar location:
    :vartype location: ~affinda.models.Location
    :ivar dates:
    :vartype dates: ~affinda.models.EducationDates
    """

    _validation = {
        "id": {"minimum": 1},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "organization": {"key": "organization", "type": "str"},
        "accreditation": {"key": "accreditation", "type": "Accreditation"},
        "grade": {"key": "grade", "type": "EducationGrade"},
        "location": {"key": "location", "type": "Location"},
        "dates": {"key": "dates", "type": "EducationDates"},
    }

    def __init__(self, **kwargs):
        """
        :keyword id:
        :paramtype id: int
        :keyword organization:
        :paramtype organization: str
        :keyword accreditation:
        :paramtype accreditation: ~affinda.models.Accreditation
        :keyword grade:
        :paramtype grade: ~affinda.models.EducationGrade
        :keyword location:
        :paramtype location: ~affinda.models.Location
        :keyword dates:
        :paramtype dates: ~affinda.models.EducationDates
        """
        super(Education, self).__init__(**kwargs)
        self.id = kwargs.get("id", None)
        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 EducationDates(msrest.serialization.Model):
    """EducationDates.

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

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

    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
        :keyword raw_text:
        :paramtype raw_text: str
        """
        super(EducationDates, 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)
        self.raw_text = kwargs.get("raw_text", None)


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

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar raw:
    :vartype raw: str
    :ivar metric:
    :vartype metric: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "raw": {"key": "raw", "type": "str"},
        "metric": {"key": "metric", "type": "str"},
        "value": {"key": "value", "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 raw:
        :paramtype raw: str
        :keyword metric:
        :paramtype metric: str
        :keyword value:
        :paramtype value: str
        """
        super(EducationGrade, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.raw = kwargs.get("raw", None)
        self.metric = kwargs.get("metric", None)
        self.value = kwargs.get("value", None)


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

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

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

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

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

    def __init__(self, **kwargs):
        """
        :keyword value:
        :paramtype value: str
        :keyword label: Required.
        :paramtype label: str
        :keyword score:
        :paramtype score: float
        """
        super(EducationSearchScoreComponent, self).__init__(**kwargs)
        self.value = kwargs.get("value", None)
        self.label = kwargs["label"]
        self.score = kwargs.get("score", 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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.ExpectedRemunerationAnnotationParsed
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: 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 ExpectedRemunerationAnnotationV2Update(AnnotationV2Base):
    """ExpectedRemunerationAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.ExpectedRemunerationAnnotationV2UpdateParsed
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "type": "str"},
        "parsed": {"key": "parsed", "type": "ExpectedRemunerationAnnotationV2UpdateParsed"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: ~affinda.models.ExpectedRemunerationAnnotationV2UpdateParsed
        """
        super(ExpectedRemunerationAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


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

    :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(ExpectedRemunerationAnnotationV2UpdateParsed, 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 ExperienceSearchScoreComponent(msrest.serialization.Model):
    """ExperienceSearchScoreComponent.

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

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

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

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

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


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

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

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

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


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

    Variables are only populated by the server, and will be ignored when sending a request.

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

    :ivar name: Required. Unique index name.
    :vartype name: str
    :ivar document_type: Required. Known values are: "resumes", "job_descriptions".
    :vartype document_type: str or ~affinda.models.IndexDocumentType
    :ivar user: Required. The user who created this index.
    :vartype user: ~affinda.models.IndexUser
    """

    _validation = {
        "name": {"required": True},
        "document_type": {"required": True},
        "user": {"required": True, "readonly": True},
    }

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "document_type": {"key": "documentType", "type": "str"},
        "user": {"key": "user", "type": "IndexUser"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name: Required. Unique index name.
        :paramtype name: str
        :keyword document_type: Required. Known values are: "resumes", "job_descriptions".
        :paramtype document_type: str or ~affinda.models.IndexDocumentType
        """
        super(Index, self).__init__(**kwargs)
        self.name = kwargs["name"]
        self.document_type = kwargs["document_type"]
        self.user = None


class IndexCreate(msrest.serialization.Model):
    """IndexRequestBody.

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

    :ivar name: Required. Unique index name.
    :vartype name: str
    :ivar document_type: Known values are: "resumes", "job_descriptions".
    :vartype document_type: str or ~affinda.models.DocumentType
    """

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

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

    def __init__(self, **kwargs):
        """
        :keyword name: Required. Unique index name.
        :paramtype name: str
        :keyword document_type: Known values are: "resumes", "job_descriptions".
        :paramtype document_type: str or ~affinda.models.DocumentType
        """
        super(IndexCreate, self).__init__(**kwargs)
        self.name = kwargs["name"]
        self.document_type = kwargs.get("document_type", None)


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

    :ivar name: Unique index name.
    :vartype name: str
    """

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

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


class IndexUser(msrest.serialization.Model):
    """The user who created this index.

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

    :ivar id: Required. Uniquely identify a user.
    :vartype id: int
    :ivar name: Required.
    :vartype name: str
    :ivar email: Required.
    :vartype email: str
    :ivar avatar: Required. URL of the user's avatar.
    :vartype avatar: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "name": {"required": True},
        "email": {"required": True},
        "avatar": {"required": True},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "name": {"key": "name", "type": "str"},
        "email": {"key": "email", "type": "str"},
        "avatar": {"key": "avatar", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword id: Required. Uniquely identify a user.
        :paramtype id: int
        :keyword name: Required.
        :paramtype name: str
        :keyword email: Required.
        :paramtype email: str
        :keyword avatar: Required. URL of the user's avatar.
        :paramtype avatar: str
        """
        super(IndexUser, self).__init__(**kwargs)
        self.id = kwargs["id"]
        self.name = kwargs["name"]
        self.email = kwargs["email"]
        self.avatar = kwargs["avatar"]


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

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

    :ivar client_verified_dt: Required.
    :vartype client_verified_dt: str
    :ivar data: Required.
    :vartype data: ~affinda.models.InvoiceData
    :ivar meta: Required.
    :vartype meta: ~affinda.models.Meta
    :ivar error: Required.
    :vartype error: ~affinda.models.Error
    """

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

    _attribute_map = {
        "client_verified_dt": {"key": "clientVerifiedDt", "type": "str"},
        "data": {"key": "data", "type": "InvoiceData"},
        "meta": {"key": "meta", "type": "Meta"},
        "error": {"key": "error", "type": "Error"},
    }

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


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

    :ivar tables:
    :vartype tables: list[~affinda.models.InvoiceDataTablesItem]
    :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
    :ivar currency_code:
    :vartype currency_code: ~affinda.models.TextAnnotation
    :ivar custom_fields: Dictionary of :code:`<any>`.
    :vartype custom_fields: dict[str, any]
    """

    _attribute_map = {
        "tables": {"key": "tables", "type": "[InvoiceDataTablesItem]"},
        "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"},
        "currency_code": {"key": "currencyCode", "type": "TextAnnotation"},
        "custom_fields": {"key": "customFields", "type": "{object}"},
    }

    def __init__(self, **kwargs):
        """
        :keyword tables:
        :paramtype tables: list[~affinda.models.InvoiceDataTablesItem]
        :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
        :keyword currency_code:
        :paramtype currency_code: ~affinda.models.TextAnnotation
        :keyword custom_fields: Dictionary of :code:`<any>`.
        :paramtype custom_fields: dict[str, any]
        """
        super(InvoiceData, self).__init__(**kwargs)
        self.tables = kwargs.get("tables", None)
        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)
        self.currency_code = kwargs.get("currency_code", None)
        self.custom_fields = kwargs.get("custom_fields", 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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(TextAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankAccountNumber(
    TextAnnotation, Components74A7C1SchemasInvoicedataPropertiesBankaccountnumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankAccountNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankBsb(
    TextAnnotation, Components1RrxgkvSchemasInvoicedataPropertiesBankbsbAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankBsb, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankIban(
    TextAnnotation, Components1127QwqSchemasInvoicedataPropertiesBankibanAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankIban, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankSortCode(
    TextAnnotation, Components1QdassaSchemasInvoicedataPropertiesBanksortcodeAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankSortCode, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBankSwift(
    TextAnnotation, Components1Roa72HSchemasInvoicedataPropertiesBankswiftAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBankSwift, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBpayBillerCode(
    TextAnnotation, ComponentsA69Bd0SchemasInvoicedataPropertiesBpaybillercodeAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBpayBillerCode, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataBpayReference(
    TextAnnotation, ComponentsW32SuaSchemasInvoicedataPropertiesBpayreferenceAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataBpayReference, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerBusinessNumber(
    TextAnnotation, Components158Lya5SchemasInvoicedataPropertiesCustomerbusinessnumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerBusinessNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerCompanyName(
    TextAnnotation, Components1O8OpknSchemasInvoicedataPropertiesCustomercompanynameAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerCompanyName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerContactName(
    TextAnnotation, ComponentsWv2QrxSchemasInvoicedataPropertiesCustomercontactnameAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerContactName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerEmail(
    TextAnnotation, Components1Y7HcurSchemasInvoicedataPropertiesCustomeremailAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerEmail, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerNumber(
    TextAnnotation, Components105Abr3SchemasInvoicedataPropertiesCustomernumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerPhoneNumber(
    TextAnnotation, Components1YsiqwnSchemasInvoicedataPropertiesCustomerphonenumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerPhoneNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataCustomerVat(
    TextAnnotation, ComponentsBeazccSchemasInvoicedataPropertiesCustomervatAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataCustomerVat, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataInvoiceNumber(
    TextAnnotation, Components5Rnu7ESchemasInvoicedataPropertiesInvoicenumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataInvoiceNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataInvoicePurchaseOrderNumber(
    TextAnnotation, ComponentsAq75Z8SchemasInvoicedataPropertiesInvoicepurchaseordernumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataInvoicePurchaseOrderNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountBase(
    TextAnnotation, Components1W3SqeuSchemasInvoicedataPropertiesPaymentamountbaseAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountBase, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountDue(
    TextAnnotation, ComponentsEtsq6MSchemasInvoicedataPropertiesPaymentamountdueAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountDue, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountPaid(
    TextAnnotation, Components1Vvtu5NSchemasInvoicedataPropertiesPaymentamountpaidAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountPaid, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountTax(
    TextAnnotation, Components6Zm20BSchemasInvoicedataPropertiesPaymentamounttaxAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountTax, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentAmountTotal(
    TextAnnotation, Components4A2PzvSchemasInvoicedataPropertiesPaymentamounttotalAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentAmountTotal, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataPaymentReference(
    TextAnnotation, Components2XnshtSchemasInvoicedataPropertiesPaymentreferenceAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataPaymentReference, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierBusinessNumber(
    TextAnnotation, Components5D6NjySchemasInvoicedataPropertiesSupplierbusinessnumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierBusinessNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierCompanyName(
    TextAnnotation, Components1P4Fl61SchemasInvoicedataPropertiesSuppliercompanynameAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierCompanyName, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierEmail(
    TextAnnotation, Components10Thcs2SchemasInvoicedataPropertiesSupplieremailAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierEmail, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierFax(
    TextAnnotation, Components1Fe3VqtSchemasInvoicedataPropertiesSupplierfaxAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierFax, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierPhoneNumber(
    TextAnnotation, Components1Hr2XldSchemasInvoicedataPropertiesSupplierphonenumberAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierPhoneNumber, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierVat(
    TextAnnotation, ComponentsB3U7OaSchemasInvoicedataPropertiesSuppliervatAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierVat, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


class InvoiceDataSupplierWebsite(
    TextAnnotation, Components17JmwpjSchemasInvoicedataPropertiesSupplierwebsiteAllof1
):
    """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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(InvoiceDataSupplierWebsite, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]
        self.parsed = kwargs.get("parsed", None)


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

    :ivar rows:
    :vartype rows: list[~affinda.models.RowAnnotation]
    """

    _attribute_map = {
        "rows": {"key": "rows", "type": "[RowAnnotation]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword rows:
        :paramtype rows: list[~affinda.models.RowAnnotation]
        """
        super(InvoiceDataTablesItem, self).__init__(**kwargs)
        self.rows = kwargs.get("rows", None)


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

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG, TIFF, ODT, XLS, XLSX, ZIP.
    :vartype file: IO
    :ivar url: URL to download the invoice.
    :vartype url: str
    :ivar identifier: Deprecated in favor of ``customIdentifier``.
    :vartype identifier: str
    :ivar custom_identifier: Specify a custom identifier for the document if you need one, not
     required to be unique.
    :vartype custom_identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is duplicate
     of an existing document, no credits will be consumed. If "false", will parse the document
     normally whether its a duplicate or not. If not provided, will fallback to the workspace
     settings.
    :vartype reject_duplicates: 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
    :ivar region_bias: A JSON representation of the RegionBias object.
    :vartype region_bias: str
    :ivar low_priority: Explicitly mark this document as low priority.
    :vartype low_priority: bool
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "url": {"key": "url", "type": "str"},
        "identifier": {"key": "identifier", "type": "str"},
        "custom_identifier": {"key": "customIdentifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "reject_duplicates": {"key": "rejectDuplicates", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
        "region_bias": {"key": "regionBias", "type": "str"},
        "low_priority": {"key": "lowPriority", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG, TIFF, ODT, XLS, XLSX, ZIP.
        :paramtype file: IO
        :keyword url: URL to download the invoice.
        :paramtype url: str
        :keyword identifier: Deprecated in favor of ``customIdentifier``.
        :paramtype identifier: str
        :keyword custom_identifier: Specify a custom identifier for the document if you need one, not
         required to be unique.
        :paramtype custom_identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is
         duplicate of an existing document, no credits will be consumed. If "false", will parse the
         document normally whether its a duplicate or not. If not provided, will fallback to the
         workspace settings.
        :paramtype reject_duplicates: 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
        :keyword region_bias: A JSON representation of the RegionBias object.
        :paramtype region_bias: str
        :keyword low_priority: Explicitly mark this document as low priority.
        :paramtype low_priority: bool
        """
        super(InvoiceRequestBody, self).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.url = kwargs.get("url", None)
        self.identifier = kwargs.get("identifier", None)
        self.custom_identifier = kwargs.get("custom_identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.wait = kwargs.get("wait", True)
        self.reject_duplicates = kwargs.get("reject_duplicates", None)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)
        self.region_bias = kwargs.get("region_bias", None)
        self.low_priority = kwargs.get("low_priority", 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 additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar job_title:
    :vartype job_title: ~affinda.models.JobTitleAnnotation
    :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]
    :ivar years_experience:
    :vartype years_experience: ~affinda.models.YearsExperienceAnnotation
    :ivar raw_text: All of the raw text of the parsed job description, example is shortened for
     readability.
    :vartype raw_text: str
    """

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "job_title": {"key": "jobTitle", "type": "JobTitleAnnotation"},
        "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]"},
        "years_experience": {"key": "yearsExperience", "type": "YearsExperienceAnnotation"},
        "raw_text": {"key": "rawText", "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 job_title:
        :paramtype job_title: ~affinda.models.JobTitleAnnotation
        :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]
        :keyword years_experience:
        :paramtype years_experience: ~affinda.models.YearsExperienceAnnotation
        :keyword raw_text: All of the raw text of the parsed job description, example is shortened for
         readability.
        :paramtype raw_text: str
        """
        super(JobDescriptionData, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.job_title = kwargs.get("job_title", None)
        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)
        self.years_experience = kwargs.get("years_experience", None)
        self.raw_text = kwargs.get("raw_text", None)


class JobDescriptionDataUpdate(msrest.serialization.Model):
    """A JSON-encoded string of the ``JobDescriptionData`` object.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar job_title:
    :vartype job_title: ~affinda.models.JobTitleAnnotationUpdate
    :ivar contact_email:
    :vartype contact_email: ~affinda.models.TextAnnotationV2Update
    :ivar contact_name:
    :vartype contact_name: ~affinda.models.TextAnnotationV2Update
    :ivar contact_phone:
    :vartype contact_phone: ~affinda.models.TextAnnotationV2Update
    :ivar start_date:
    :vartype start_date: ~affinda.models.DateAnnotationV2Update
    :ivar end_date:
    :vartype end_date: ~affinda.models.DateAnnotationV2Update
    :ivar job_type:
    :vartype job_type: ~affinda.models.TextAnnotationV2Update
    :ivar languages:
    :vartype languages: list[~affinda.models.LanguageAnnotationV2Update]
    :ivar skills:
    :vartype skills: list[~affinda.models.SkillAnnotationV2Update]
    :ivar organization_name:
    :vartype organization_name: ~affinda.models.TextAnnotationV2Update
    :ivar organization_website:
    :vartype organization_website: ~affinda.models.TextAnnotationV2Update
    :ivar education_level:
    :vartype education_level: ~affinda.models.TextAnnotationV2Update
    :ivar education_accreditation:
    :vartype education_accreditation: ~affinda.models.TextAnnotationV2Update
    :ivar expected_remuneration:
    :vartype expected_remuneration: ~affinda.models.ExpectedRemunerationAnnotationV2Update
    :ivar location:
    :vartype location: ~affinda.models.LocationAnnotationV2Update
    :ivar certifications:
    :vartype certifications: list[~affinda.models.TextAnnotationV2Update]
    :ivar years_experience:
    :vartype years_experience: ~affinda.models.YearsExperienceAnnotationV2Update
    """

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "job_title": {"key": "jobTitle", "type": "JobTitleAnnotationUpdate"},
        "contact_email": {"key": "contactEmail", "type": "TextAnnotationV2Update"},
        "contact_name": {"key": "contactName", "type": "TextAnnotationV2Update"},
        "contact_phone": {"key": "contactPhone", "type": "TextAnnotationV2Update"},
        "start_date": {"key": "startDate", "type": "DateAnnotationV2Update"},
        "end_date": {"key": "endDate", "type": "DateAnnotationV2Update"},
        "job_type": {"key": "jobType", "type": "TextAnnotationV2Update"},
        "languages": {"key": "languages", "type": "[LanguageAnnotationV2Update]"},
        "skills": {"key": "skills", "type": "[SkillAnnotationV2Update]"},
        "organization_name": {"key": "organizationName", "type": "TextAnnotationV2Update"},
        "organization_website": {"key": "organizationWebsite", "type": "TextAnnotationV2Update"},
        "education_level": {"key": "educationLevel", "type": "TextAnnotationV2Update"},
        "education_accreditation": {
            "key": "educationAccreditation",
            "type": "TextAnnotationV2Update",
        },
        "expected_remuneration": {
            "key": "expectedRemuneration",
            "type": "ExpectedRemunerationAnnotationV2Update",
        },
        "location": {"key": "location", "type": "LocationAnnotationV2Update"},
        "certifications": {"key": "certifications", "type": "[TextAnnotationV2Update]"},
        "years_experience": {
            "key": "yearsExperience",
            "type": "YearsExperienceAnnotationV2Update",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword job_title:
        :paramtype job_title: ~affinda.models.JobTitleAnnotationUpdate
        :keyword contact_email:
        :paramtype contact_email: ~affinda.models.TextAnnotationV2Update
        :keyword contact_name:
        :paramtype contact_name: ~affinda.models.TextAnnotationV2Update
        :keyword contact_phone:
        :paramtype contact_phone: ~affinda.models.TextAnnotationV2Update
        :keyword start_date:
        :paramtype start_date: ~affinda.models.DateAnnotationV2Update
        :keyword end_date:
        :paramtype end_date: ~affinda.models.DateAnnotationV2Update
        :keyword job_type:
        :paramtype job_type: ~affinda.models.TextAnnotationV2Update
        :keyword languages:
        :paramtype languages: list[~affinda.models.LanguageAnnotationV2Update]
        :keyword skills:
        :paramtype skills: list[~affinda.models.SkillAnnotationV2Update]
        :keyword organization_name:
        :paramtype organization_name: ~affinda.models.TextAnnotationV2Update
        :keyword organization_website:
        :paramtype organization_website: ~affinda.models.TextAnnotationV2Update
        :keyword education_level:
        :paramtype education_level: ~affinda.models.TextAnnotationV2Update
        :keyword education_accreditation:
        :paramtype education_accreditation: ~affinda.models.TextAnnotationV2Update
        :keyword expected_remuneration:
        :paramtype expected_remuneration: ~affinda.models.ExpectedRemunerationAnnotationV2Update
        :keyword location:
        :paramtype location: ~affinda.models.LocationAnnotationV2Update
        :keyword certifications:
        :paramtype certifications: list[~affinda.models.TextAnnotationV2Update]
        :keyword years_experience:
        :paramtype years_experience: ~affinda.models.YearsExperienceAnnotationV2Update
        """
        super(JobDescriptionDataUpdate, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.job_title = kwargs.get("job_title", None)
        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)
        self.years_experience = kwargs.get("years_experience", None)


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

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG, TIFF, ODT, XLS, XLSX, ZIP.
    :vartype file: IO
    :ivar url: URL to download the job description.
    :vartype url: str
    :ivar data: A JSON-encoded string of the ``JobDescriptionData`` object.
    :vartype data: ~affinda.models.JobDescriptionDataUpdate
    :ivar identifier: Deprecated in favor of ``customIdentifier``.
    :vartype identifier: str
    :ivar custom_identifier: Specify a custom identifier for the document if you need one, not
     required to be unique.
    :vartype custom_identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is duplicate
     of an existing document, no credits will be consumed. If "false", will parse the document
     normally whether its a duplicate or not. If not provided, will fallback to the workspace
     settings.
    :vartype reject_duplicates: 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
    :ivar region_bias: A JSON representation of the RegionBias object.
    :vartype region_bias: str
    :ivar low_priority: Explicitly mark this document as low priority.
    :vartype low_priority: bool
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "url": {"key": "url", "type": "str"},
        "data": {"key": "data", "type": "JobDescriptionDataUpdate"},
        "identifier": {"key": "identifier", "type": "str"},
        "custom_identifier": {"key": "customIdentifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "reject_duplicates": {"key": "rejectDuplicates", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
        "region_bias": {"key": "regionBias", "type": "str"},
        "low_priority": {"key": "lowPriority", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG, TIFF, ODT, XLS, XLSX, ZIP.
        :paramtype file: IO
        :keyword url: URL to download the job description.
        :paramtype url: str
        :keyword data: A JSON-encoded string of the ``JobDescriptionData`` object.
        :paramtype data: ~affinda.models.JobDescriptionDataUpdate
        :keyword identifier: Deprecated in favor of ``customIdentifier``.
        :paramtype identifier: str
        :keyword custom_identifier: Specify a custom identifier for the document if you need one, not
         required to be unique.
        :paramtype custom_identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is
         duplicate of an existing document, no credits will be consumed. If "false", will parse the
         document normally whether its a duplicate or not. If not provided, will fallback to the
         workspace settings.
        :paramtype reject_duplicates: 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
        :keyword region_bias: A JSON representation of the RegionBias object.
        :paramtype region_bias: str
        :keyword low_priority: Explicitly mark this document as low priority.
        :paramtype low_priority: bool
        """
        super(JobDescriptionRequestBody, self).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.url = kwargs.get("url", None)
        self.data = kwargs.get("data", None)
        self.identifier = kwargs.get("identifier", None)
        self.custom_identifier = kwargs.get("custom_identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.wait = kwargs.get("wait", True)
        self.reject_duplicates = kwargs.get("reject_duplicates", None)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)
        self.region_bias = kwargs.get("region_bias", None)
        self.low_priority = kwargs.get("low_priority", None)


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

    :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.JobDescriptionSearchParameters
    :ivar results:
    :vartype results: list[~affinda.models.JobDescriptionSearchResult]
    """

    _validation = {
        "count": {"minimum": 0},
    }

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

    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.JobDescriptionSearchParameters
        :keyword results:
        :paramtype results: list[~affinda.models.JobDescriptionSearchResult]
        """
        super(JobDescriptionSearch, 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 JobDescriptionSearchConfig(msrest.serialization.Model):
    """JobDescriptionSearchConfig.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar allow_pdf_download:
    :vartype allow_pdf_download: bool
    :ivar max_results: Maximum number of results that can be returned. Setting to "null" means no
     limitation.
    :vartype max_results: int
    :ivar display_job_title:
    :vartype display_job_title: bool
    :ivar display_location:
    :vartype display_location: bool
    :ivar display_years_experience:
    :vartype display_years_experience: bool
    :ivar display_occupation_group:
    :vartype display_occupation_group: bool
    :ivar display_education:
    :vartype display_education: bool
    :ivar display_skills:
    :vartype display_skills: bool
    :ivar display_languages:
    :vartype display_languages: bool
    :ivar display_management_level:
    :vartype display_management_level: bool
    :ivar display_keywords:
    :vartype display_keywords: bool
    :ivar weight_job_title:
    :vartype weight_job_title: float
    :ivar weight_location:
    :vartype weight_location: float
    :ivar weight_years_experience:
    :vartype weight_years_experience: float
    :ivar weight_occupation_group:
    :vartype weight_occupation_group: float
    :ivar weight_education:
    :vartype weight_education: float
    :ivar weight_skills:
    :vartype weight_skills: float
    :ivar weight_languages:
    :vartype weight_languages: float
    :ivar weight_management_level:
    :vartype weight_management_level: float
    :ivar weight_keywords:
    :vartype weight_keywords: float
    :ivar indices: List of index names.
    :vartype indices: list[str]
    :ivar show_index_dropdown: Controls whether or not the index dropdown is displayed to the user.
    :vartype show_index_dropdown: bool
    :ivar search_tool_theme: Customize the theme of the embeded search tool.
    :vartype search_tool_theme: dict[str, any]
    :ivar user_id: ID of the logged in user.
    :vartype user_id: int
    :ivar username: Username of the logged in user.
    :vartype username: str
    :ivar actions: A list of actions to show in the dropdown in the embedded search tool.
    :vartype actions: list[~affinda.models.JobDescriptionSearchConfigActionsItem]
    :ivar custom_fields_config:
    :vartype custom_fields_config: list[~affinda.models.CustomFieldConfig]
    :ivar distance_unit: The unit of distance to use for location based searches. Known values are:
     "mi", "km".
    :vartype distance_unit: str or ~affinda.models.JobDescriptionSearchConfigDistanceUnit
    """

    _validation = {
        "max_results": {"minimum": 1},
        "user_id": {"readonly": True, "minimum": 1},
        "username": {"readonly": True},
    }

    _attribute_map = {
        "allow_pdf_download": {"key": "allowPdfDownload", "type": "bool"},
        "max_results": {"key": "maxResults", "type": "int"},
        "display_job_title": {"key": "displayJobTitle", "type": "bool"},
        "display_location": {"key": "displayLocation", "type": "bool"},
        "display_years_experience": {"key": "displayYearsExperience", "type": "bool"},
        "display_occupation_group": {"key": "displayOccupationGroup", "type": "bool"},
        "display_education": {"key": "displayEducation", "type": "bool"},
        "display_skills": {"key": "displaySkills", "type": "bool"},
        "display_languages": {"key": "displayLanguages", "type": "bool"},
        "display_management_level": {"key": "displayManagementLevel", "type": "bool"},
        "display_keywords": {"key": "displayKeywords", "type": "bool"},
        "weight_job_title": {"key": "weightJobTitle", "type": "float"},
        "weight_location": {"key": "weightLocation", "type": "float"},
        "weight_years_experience": {"key": "weightYearsExperience", "type": "float"},
        "weight_occupation_group": {"key": "weightOccupationGroup", "type": "float"},
        "weight_education": {"key": "weightEducation", "type": "float"},
        "weight_skills": {"key": "weightSkills", "type": "float"},
        "weight_languages": {"key": "weightLanguages", "type": "float"},
        "weight_management_level": {"key": "weightManagementLevel", "type": "float"},
        "weight_keywords": {"key": "weightKeywords", "type": "float"},
        "indices": {"key": "indices", "type": "[str]"},
        "show_index_dropdown": {"key": "showIndexDropdown", "type": "bool"},
        "search_tool_theme": {"key": "searchToolTheme", "type": "{object}"},
        "user_id": {"key": "userId", "type": "int"},
        "username": {"key": "username", "type": "str"},
        "actions": {"key": "actions", "type": "[JobDescriptionSearchConfigActionsItem]"},
        "custom_fields_config": {"key": "customFieldsConfig", "type": "[CustomFieldConfig]"},
        "distance_unit": {"key": "distanceUnit", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword allow_pdf_download:
        :paramtype allow_pdf_download: bool
        :keyword max_results: Maximum number of results that can be returned. Setting to "null" means
         no limitation.
        :paramtype max_results: int
        :keyword display_job_title:
        :paramtype display_job_title: bool
        :keyword display_location:
        :paramtype display_location: bool
        :keyword display_years_experience:
        :paramtype display_years_experience: bool
        :keyword display_occupation_group:
        :paramtype display_occupation_group: bool
        :keyword display_education:
        :paramtype display_education: bool
        :keyword display_skills:
        :paramtype display_skills: bool
        :keyword display_languages:
        :paramtype display_languages: bool
        :keyword display_management_level:
        :paramtype display_management_level: bool
        :keyword display_keywords:
        :paramtype display_keywords: bool
        :keyword weight_job_title:
        :paramtype weight_job_title: float
        :keyword weight_location:
        :paramtype weight_location: float
        :keyword weight_years_experience:
        :paramtype weight_years_experience: float
        :keyword weight_occupation_group:
        :paramtype weight_occupation_group: float
        :keyword weight_education:
        :paramtype weight_education: float
        :keyword weight_skills:
        :paramtype weight_skills: float
        :keyword weight_languages:
        :paramtype weight_languages: float
        :keyword weight_management_level:
        :paramtype weight_management_level: float
        :keyword weight_keywords:
        :paramtype weight_keywords: float
        :keyword indices: List of index names.
        :paramtype indices: list[str]
        :keyword show_index_dropdown: Controls whether or not the index dropdown is displayed to the
         user.
        :paramtype show_index_dropdown: bool
        :keyword search_tool_theme: Customize the theme of the embeded search tool.
        :paramtype search_tool_theme: dict[str, any]
        :keyword actions: A list of actions to show in the dropdown in the embedded search tool.
        :paramtype actions: list[~affinda.models.JobDescriptionSearchConfigActionsItem]
        :keyword custom_fields_config:
        :paramtype custom_fields_config: list[~affinda.models.CustomFieldConfig]
        :keyword distance_unit: The unit of distance to use for location based searches. Known values
         are: "mi", "km".
        :paramtype distance_unit: str or ~affinda.models.JobDescriptionSearchConfigDistanceUnit
        """
        super(JobDescriptionSearchConfig, self).__init__(**kwargs)
        self.allow_pdf_download = kwargs.get("allow_pdf_download", None)
        self.max_results = kwargs.get("max_results", None)
        self.display_job_title = kwargs.get("display_job_title", None)
        self.display_location = kwargs.get("display_location", None)
        self.display_years_experience = kwargs.get("display_years_experience", None)
        self.display_occupation_group = kwargs.get("display_occupation_group", None)
        self.display_education = kwargs.get("display_education", None)
        self.display_skills = kwargs.get("display_skills", None)
        self.display_languages = kwargs.get("display_languages", None)
        self.display_management_level = kwargs.get("display_management_level", None)
        self.display_keywords = kwargs.get("display_keywords", None)
        self.weight_job_title = kwargs.get("weight_job_title", None)
        self.weight_location = kwargs.get("weight_location", None)
        self.weight_years_experience = kwargs.get("weight_years_experience", None)
        self.weight_occupation_group = kwargs.get("weight_occupation_group", None)
        self.weight_education = kwargs.get("weight_education", None)
        self.weight_skills = kwargs.get("weight_skills", None)
        self.weight_languages = kwargs.get("weight_languages", None)
        self.weight_management_level = kwargs.get("weight_management_level", None)
        self.weight_keywords = kwargs.get("weight_keywords", None)
        self.indices = kwargs.get("indices", None)
        self.show_index_dropdown = kwargs.get("show_index_dropdown", None)
        self.search_tool_theme = kwargs.get("search_tool_theme", None)
        self.user_id = None
        self.username = None
        self.actions = kwargs.get("actions", None)
        self.custom_fields_config = kwargs.get("custom_fields_config", None)
        self.distance_unit = kwargs.get("distance_unit", None)


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

    :ivar label: Human readable label to display in the UI.
    :vartype label: str
    :ivar event_name: Name of the event to be triggered.
    :vartype event_name: str
    """

    _attribute_map = {
        "label": {"key": "label", "type": "str"},
        "event_name": {"key": "eventName", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword label: Human readable label to display in the UI.
        :paramtype label: str
        :keyword event_name: Name of the event to be triggered.
        :paramtype event_name: str
        """
        super(JobDescriptionSearchConfigActionsItem, self).__init__(**kwargs)
        self.label = kwargs.get("label", None)
        self.event_name = kwargs.get("event_name", None)


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

    :ivar job_title:
    :vartype job_title: ~affinda.models.JobDescriptionSearchDetailJobTitle
    :ivar location:
    :vartype location: ~affinda.models.JobDescriptionSearchDetailLocation
    :ivar education:
    :vartype education: ~affinda.models.JobDescriptionSearchDetailEducation
    :ivar skills:
    :vartype skills: ~affinda.models.JobDescriptionSearchDetailSkills
    :ivar experience:
    :vartype experience: ~affinda.models.JobDescriptionSearchDetailExperience
    :ivar occupation_group:
    :vartype occupation_group: ~affinda.models.JobDescriptionSearchDetailOccupationGroup
    :ivar languages:
    :vartype languages: ~affinda.models.JobDescriptionSearchDetailLanguages
    :ivar management_level:
    :vartype management_level: ~affinda.models.JobDescriptionSearchDetailManagementLevel
    :ivar search_expression:
    :vartype search_expression: ~affinda.models.JobDescriptionSearchDetailSearchExpression
    """

    _attribute_map = {
        "job_title": {"key": "jobTitle", "type": "JobDescriptionSearchDetailJobTitle"},
        "location": {"key": "location", "type": "JobDescriptionSearchDetailLocation"},
        "education": {"key": "education", "type": "JobDescriptionSearchDetailEducation"},
        "skills": {"key": "skills", "type": "JobDescriptionSearchDetailSkills"},
        "experience": {"key": "experience", "type": "JobDescriptionSearchDetailExperience"},
        "occupation_group": {
            "key": "occupationGroup",
            "type": "JobDescriptionSearchDetailOccupationGroup",
        },
        "languages": {"key": "languages", "type": "JobDescriptionSearchDetailLanguages"},
        "management_level": {
            "key": "managementLevel",
            "type": "JobDescriptionSearchDetailManagementLevel",
        },
        "search_expression": {
            "key": "searchExpression",
            "type": "JobDescriptionSearchDetailSearchExpression",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword job_title:
        :paramtype job_title: ~affinda.models.JobDescriptionSearchDetailJobTitle
        :keyword location:
        :paramtype location: ~affinda.models.JobDescriptionSearchDetailLocation
        :keyword education:
        :paramtype education: ~affinda.models.JobDescriptionSearchDetailEducation
        :keyword skills:
        :paramtype skills: ~affinda.models.JobDescriptionSearchDetailSkills
        :keyword experience:
        :paramtype experience: ~affinda.models.JobDescriptionSearchDetailExperience
        :keyword occupation_group:
        :paramtype occupation_group: ~affinda.models.JobDescriptionSearchDetailOccupationGroup
        :keyword languages:
        :paramtype languages: ~affinda.models.JobDescriptionSearchDetailLanguages
        :keyword management_level:
        :paramtype management_level: ~affinda.models.JobDescriptionSearchDetailManagementLevel
        :keyword search_expression:
        :paramtype search_expression: ~affinda.models.JobDescriptionSearchDetailSearchExpression
        """
        super(JobDescriptionSearchDetail, self).__init__(**kwargs)
        self.job_title = kwargs.get("job_title", None)
        self.location = kwargs.get("location", None)
        self.education = kwargs.get("education", None)
        self.skills = kwargs.get("skills", None)
        self.experience = kwargs.get("experience", None)
        self.occupation_group = kwargs.get("occupation_group", None)
        self.languages = kwargs.get("languages", None)
        self.management_level = kwargs.get("management_level", None)
        self.search_expression = kwargs.get("search_expression", None)


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

    :ivar missing:
    :vartype missing: ~affinda.models.JobDescriptionSearchDetailEducationMissing
    :ivar value:
    :vartype value: ~affinda.models.JobDescriptionSearchDetailEducationValue
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "JobDescriptionSearchDetailEducationMissing"},
        "value": {"key": "value", "type": "JobDescriptionSearchDetailEducationValue"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: ~affinda.models.JobDescriptionSearchDetailEducationMissing
        :keyword value:
        :paramtype value: ~affinda.models.JobDescriptionSearchDetailEducationValue
        """
        super(JobDescriptionSearchDetailEducation, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar degrees:
    :vartype degrees: list[str]
    :ivar degree_types:
    :vartype degree_types: list[str]
    """

    _attribute_map = {
        "degrees": {"key": "degrees", "type": "[str]"},
        "degree_types": {"key": "degreeTypes", "type": "[str]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword degrees:
        :paramtype degrees: list[str]
        :keyword degree_types:
        :paramtype degree_types: list[str]
        """
        super(JobDescriptionSearchDetailEducationMissing, self).__init__(**kwargs)
        self.degrees = kwargs.get("degrees", None)
        self.degree_types = kwargs.get("degree_types", None)


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

    :ivar degrees:
    :vartype degrees: list[str]
    :ivar degree_types:
    :vartype degree_types: list[str]
    :ivar match:
    :vartype match: bool
    """

    _attribute_map = {
        "degrees": {"key": "degrees", "type": "[str]"},
        "degree_types": {"key": "degreeTypes", "type": "[str]"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword degrees:
        :paramtype degrees: list[str]
        :keyword degree_types:
        :paramtype degree_types: list[str]
        :keyword match:
        :paramtype match: bool
        """
        super(JobDescriptionSearchDetailEducationValue, self).__init__(**kwargs)
        self.degrees = kwargs.get("degrees", None)
        self.degree_types = kwargs.get("degree_types", None)
        self.match = kwargs.get("match", None)


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

    :ivar minimum_experience:
    :vartype minimum_experience: int
    :ivar maximum_experience:
    :vartype maximum_experience: int
    :ivar match:
    :vartype match: bool
    """

    _validation = {
        "minimum_experience": {"minimum": 0},
        "maximum_experience": {"minimum": 0},
    }

    _attribute_map = {
        "minimum_experience": {"key": "minimumExperience", "type": "int"},
        "maximum_experience": {"key": "maximumExperience", "type": "int"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword minimum_experience:
        :paramtype minimum_experience: int
        :keyword maximum_experience:
        :paramtype maximum_experience: int
        :keyword match:
        :paramtype match: bool
        """
        super(JobDescriptionSearchDetailExperience, self).__init__(**kwargs)
        self.minimum_experience = kwargs.get("minimum_experience", None)
        self.maximum_experience = kwargs.get("maximum_experience", None)
        self.match = kwargs.get("match", None)


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

    :ivar missing:
    :vartype missing: list[str]
    :ivar value:
    :vartype value: ~affinda.models.JobDescriptionSearchDetailJobTitleValue
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[str]"},
        "value": {"key": "value", "type": "JobDescriptionSearchDetailJobTitleValue"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[str]
        :keyword value:
        :paramtype value: ~affinda.models.JobDescriptionSearchDetailJobTitleValue
        """
        super(JobDescriptionSearchDetailJobTitle, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar name:
    :vartype name: str
    :ivar company_name:
    :vartype company_name: str
    :ivar match:
    :vartype match: bool
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "company_name": {"key": "companyName", "type": "str"},
        "match": {"key": "match", "type": "bool"},
    }

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


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

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar value:
    :vartype value: list[~affinda.models.JobDescriptionSearchDetailLanguagesValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersSkill]"},
        "value": {"key": "value", "type": "[JobDescriptionSearchDetailLanguagesValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword value:
        :paramtype value: list[~affinda.models.JobDescriptionSearchDetailLanguagesValueItem]
        """
        super(JobDescriptionSearchDetailLanguages, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar name:
    :vartype name: str
    :ivar match:
    :vartype match: bool
    """

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

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


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

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersLocation]
    :ivar value:
    :vartype value: ~affinda.models.JobDescriptionSearchDetailLocationValue
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersLocation]"},
        "value": {"key": "value", "type": "JobDescriptionSearchDetailLocationValue"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersLocation]
        :keyword value:
        :paramtype value: ~affinda.models.JobDescriptionSearchDetailLocationValue
        """
        super(JobDescriptionSearchDetailLocation, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    Variables are only populated by the server, and will be ignored when sending a request.

    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 state_code:
    :vartype state_code: 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
    :ivar latitude:
    :vartype latitude: float
    :ivar longitude:
    :vartype longitude: float
    :ivar po_box:
    :vartype po_box: str
    """

    _validation = {
        "formatted": {"readonly": True},
        "postal_code": {"readonly": True},
        "state": {"readonly": True},
        "state_code": {"readonly": True},
        "country": {"readonly": True},
        "country_code": {"readonly": True},
        "raw_input": {"required": True},
        "street_number": {"readonly": True},
        "street": {"readonly": True},
        "apartment_number": {"readonly": True},
        "city": {"readonly": True},
        "latitude": {"readonly": True},
        "longitude": {"readonly": True},
        "po_box": {"readonly": True},
    }

    _attribute_map = {
        "formatted": {"key": "formatted", "type": "str"},
        "postal_code": {"key": "postalCode", "type": "str"},
        "state": {"key": "state", "type": "str"},
        "state_code": {"key": "stateCode", "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"},
        "latitude": {"key": "latitude", "type": "float"},
        "longitude": {"key": "longitude", "type": "float"},
        "po_box": {"key": "poBox", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw_input: Required.
        :paramtype raw_input: str
        """
        super(Location, self).__init__(**kwargs)
        self.formatted = None
        self.postal_code = None
        self.state = None
        self.state_code = None
        self.country = None
        self.country_code = None
        self.raw_input = kwargs["raw_input"]
        self.street_number = None
        self.street = None
        self.apartment_number = None
        self.city = None
        self.latitude = None
        self.longitude = None
        self.po_box = None


class JobDescriptionSearchDetailLocationValue(
    Location,
    Components1TlnsonSchemasJobdescriptionsearchdetailPropertiesLocationPropertiesValueAllof1,
):
    """JobDescriptionSearchDetailLocationValue.

    Variables are only populated by the server, and will be ignored when sending a request.

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

    :ivar match:
    :vartype match: bool
    :ivar formatted:
    :vartype formatted: str
    :ivar postal_code:
    :vartype postal_code: str
    :ivar state:
    :vartype state: str
    :ivar state_code:
    :vartype state_code: 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
    :ivar latitude:
    :vartype latitude: float
    :ivar longitude:
    :vartype longitude: float
    :ivar po_box:
    :vartype po_box: str
    """

    _validation = {
        "formatted": {"readonly": True},
        "postal_code": {"readonly": True},
        "state": {"readonly": True},
        "state_code": {"readonly": True},
        "country": {"readonly": True},
        "country_code": {"readonly": True},
        "raw_input": {"required": True},
        "street_number": {"readonly": True},
        "street": {"readonly": True},
        "apartment_number": {"readonly": True},
        "city": {"readonly": True},
        "latitude": {"readonly": True},
        "longitude": {"readonly": True},
        "po_box": {"readonly": True},
    }

    _attribute_map = {
        "match": {"key": "match", "type": "bool"},
        "formatted": {"key": "formatted", "type": "str"},
        "postal_code": {"key": "postalCode", "type": "str"},
        "state": {"key": "state", "type": "str"},
        "state_code": {"key": "stateCode", "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"},
        "latitude": {"key": "latitude", "type": "float"},
        "longitude": {"key": "longitude", "type": "float"},
        "po_box": {"key": "poBox", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        :keyword raw_input: Required.
        :paramtype raw_input: str
        """
        super(JobDescriptionSearchDetailLocationValue, self).__init__(**kwargs)
        self.match = kwargs.get("match", None)
        self.formatted = None
        self.postal_code = None
        self.state = None
        self.state_code = None
        self.country = None
        self.country_code = None
        self.raw_input = kwargs["raw_input"]
        self.street_number = None
        self.street = None
        self.apartment_number = None
        self.city = None
        self.latitude = None
        self.longitude = None
        self.po_box = None


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

    :ivar level: Known values are: "None", "Low", "Mid", "Upper".
    :vartype level: str or ~affinda.models.ManagementLevel
    :ivar match:
    :vartype match: bool
    """

    _attribute_map = {
        "level": {"key": "level", "type": "str"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword level: Known values are: "None", "Low", "Mid", "Upper".
        :paramtype level: str or ~affinda.models.ManagementLevel
        :keyword match:
        :paramtype match: bool
        """
        super(JobDescriptionSearchDetailManagementLevel, self).__init__(**kwargs)
        self.level = kwargs.get("level", None)
        self.match = kwargs.get("match", None)


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

    :ivar missing:
    :vartype missing: list[int]
    :ivar value:
    :vartype value: ~affinda.models.JobDescriptionSearchDetailOccupationGroupValue
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[int]"},
        "value": {"key": "value", "type": "JobDescriptionSearchDetailOccupationGroupValue"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[int]
        :keyword value:
        :paramtype value: ~affinda.models.JobDescriptionSearchDetailOccupationGroupValue
        """
        super(JobDescriptionSearchDetailOccupationGroup, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", 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]
    :ivar parents:
    :vartype parents: list[~affinda.models.OccupationGroup]
    """

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

    _attribute_map = {
        "code": {"key": "code", "type": "int"},
        "name": {"key": "name", "type": "str"},
        "children": {"key": "children", "type": "[OccupationGroup]"},
        "parents": {"key": "parents", "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]
        :keyword parents:
        :paramtype parents: list[~affinda.models.OccupationGroup]
        """
        super(OccupationGroup, self).__init__(**kwargs)
        self.code = kwargs["code"]
        self.name = kwargs["name"]
        self.children = kwargs["children"]
        self.parents = kwargs.get("parents", None)


class JobDescriptionSearchDetailOccupationGroupValue(
    OccupationGroup,
    ComponentsRe6GnoSchemasJobdescriptionsearchdetailPropertiesOccupationgroupPropertiesValueAllof1,
):
    """JobDescriptionSearchDetailOccupationGroupValue.

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

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

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

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

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


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

    :ivar missing:
    :vartype missing: list[str]
    :ivar value:
    :vartype value: list[str]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[str]"},
        "value": {"key": "value", "type": "[str]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[str]
        :keyword value:
        :paramtype value: list[str]
        """
        super(JobDescriptionSearchDetailSearchExpression, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar value:
    :vartype value: list[~affinda.models.JobDescriptionSearchDetailSkillsValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersSkill]"},
        "value": {"key": "value", "type": "[JobDescriptionSearchDetailSkillsValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword value:
        :paramtype value: list[~affinda.models.JobDescriptionSearchDetailSkillsValueItem]
        """
        super(JobDescriptionSearchDetailSkills, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar name:
    :vartype name: str
    :ivar match:
    :vartype match: bool
    """

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

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


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

    :ivar url: The signed URL for the embedable search tool.
    :vartype url: str
    """

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

    def __init__(self, **kwargs):
        """
        :keyword url: The signed URL for the embedable search tool.
        :paramtype url: str
        """
        super(JobDescriptionSearchEmbed, self).__init__(**kwargs)
        self.url = kwargs.get("url", None)


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

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

    :ivar indices: Required.
    :vartype indices: list[str]
    :ivar resume: A random string that uniquely identify the resource.
    :vartype resume: str
    :ivar job_titles:
    :vartype job_titles: list[str]
    :ivar job_titles_required:
    :vartype job_titles_required: bool
    :ivar job_titles_weight:
    :vartype job_titles_weight: float
    :ivar total_years_experience:
    :vartype total_years_experience: float
    :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.ResumeSearchParametersLocation]
    :ivar locations_weight:
    :vartype locations_weight: float
    :ivar locations_required:
    :vartype locations_required: bool
    :ivar skills:
    :vartype skills: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar skills_weight:
    :vartype skills_weight: float
    :ivar languages:
    :vartype languages: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar languages_weight:
    :vartype languages_weight: float
    :ivar degrees:
    :vartype degrees: list[str]
    :ivar degrees_required:
    :vartype degrees_required: bool
    :ivar degree_types:
    :vartype degree_types: list[str or ~affinda.models.EducationLevel]
    :ivar degree_types_required:
    :vartype degree_types_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: Known values are: "None", "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
    :ivar custom_data:
    :vartype custom_data: list[~affinda.models.SearchParametersCustomData]
    """

    _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},
        "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]"},
        "resume": {"key": "resume", "type": "str"},
        "job_titles": {"key": "jobTitles", "type": "[str]"},
        "job_titles_required": {"key": "jobTitlesRequired", "type": "bool"},
        "job_titles_weight": {"key": "jobTitlesWeight", "type": "float"},
        "total_years_experience": {"key": "totalYearsExperience", "type": "float"},
        "years_experience_required": {"key": "yearsExperienceRequired", "type": "bool"},
        "years_experience_weight": {"key": "yearsExperienceWeight", "type": "float"},
        "locations": {"key": "locations", "type": "[ResumeSearchParametersLocation]"},
        "locations_weight": {"key": "locationsWeight", "type": "float"},
        "locations_required": {"key": "locationsRequired", "type": "bool"},
        "skills": {"key": "skills", "type": "[ResumeSearchParametersSkill]"},
        "skills_weight": {"key": "skillsWeight", "type": "float"},
        "languages": {"key": "languages", "type": "[ResumeSearchParametersSkill]"},
        "languages_weight": {"key": "languagesWeight", "type": "float"},
        "degrees": {"key": "degrees", "type": "[str]"},
        "degrees_required": {"key": "degreesRequired", "type": "bool"},
        "degree_types": {"key": "degreeTypes", "type": "[str]"},
        "degree_types_required": {"key": "degreeTypesRequired", "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"},
        "custom_data": {"key": "customData", "type": "[SearchParametersCustomData]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword indices: Required.
        :paramtype indices: list[str]
        :keyword resume: A random string that uniquely identify the resource.
        :paramtype resume: str
        :keyword job_titles:
        :paramtype job_titles: list[str]
        :keyword job_titles_required:
        :paramtype job_titles_required: bool
        :keyword job_titles_weight:
        :paramtype job_titles_weight: float
        :keyword total_years_experience:
        :paramtype total_years_experience: float
        :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.ResumeSearchParametersLocation]
        :keyword locations_weight:
        :paramtype locations_weight: float
        :keyword locations_required:
        :paramtype locations_required: bool
        :keyword skills:
        :paramtype skills: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword skills_weight:
        :paramtype skills_weight: float
        :keyword languages:
        :paramtype languages: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword languages_weight:
        :paramtype languages_weight: float
        :keyword degrees:
        :paramtype degrees: list[str]
        :keyword degrees_required:
        :paramtype degrees_required: bool
        :keyword degree_types:
        :paramtype degree_types: list[str or ~affinda.models.EducationLevel]
        :keyword degree_types_required:
        :paramtype degree_types_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: Known values are: "None", "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
        :keyword custom_data:
        :paramtype custom_data: list[~affinda.models.SearchParametersCustomData]
        """
        super(JobDescriptionSearchParameters, self).__init__(**kwargs)
        self.indices = kwargs["indices"]
        self.resume = kwargs.get("resume", None)
        self.job_titles = kwargs.get("job_titles", None)
        self.job_titles_required = kwargs.get("job_titles_required", None)
        self.job_titles_weight = kwargs.get("job_titles_weight", None)
        self.total_years_experience = kwargs.get("total_years_experience", 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.degrees = kwargs.get("degrees", None)
        self.degrees_required = kwargs.get("degrees_required", None)
        self.degree_types = kwargs.get("degree_types", None)
        self.degree_types_required = kwargs.get("degree_types_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)
        self.custom_data = kwargs.get("custom_data", None)


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

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

    :ivar identifier: Required. A random string that uniquely identify the resource.
    :vartype identifier: str
    :ivar score: Required.
    :vartype score: float
    :ivar pdf: Required.
    :vartype pdf: str
    :ivar job_title: Required.
    :vartype job_title: ~affinda.models.JobTitleSearchScoreComponent
    :ivar management_level: Required.
    :vartype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
    :ivar experience: Required.
    :vartype experience: ~affinda.models.ExperienceSearchScoreComponent
    :ivar skills: Required.
    :vartype skills: ~affinda.models.SkillsSearchScoreComponent
    :ivar languages: Required.
    :vartype languages: ~affinda.models.LanguagesSearchScoreComponent
    :ivar location: Required.
    :vartype location: ~affinda.models.LocationSearchScoreComponent
    :ivar education: Required.
    :vartype education: ~affinda.models.EducationSearchScoreComponent
    :ivar occupation_group:
    :vartype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
    :ivar search_expression: Required.
    :vartype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
    :ivar organization_name: Required.
    :vartype organization_name: str
    :ivar custom_data: Required. Dictionary of
     <components·nqbw24·schemas·customdatasearchscorecomponent·additionalproperties>.
    :vartype custom_data: dict[str,
     ~affinda.models.ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties]
    """

    _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},
        "search_expression": {"required": True},
        "organization_name": {"required": True},
        "custom_data": {"required": True},
    }

    _attribute_map = {
        "identifier": {"key": "identifier", "type": "str"},
        "score": {"key": "score", "type": "float"},
        "pdf": {"key": "pdf", "type": "str"},
        "job_title": {"key": "jobTitle", "type": "JobTitleSearchScoreComponent"},
        "management_level": {
            "key": "managementLevel",
            "type": "ManagementLevelSearchScoreComponent",
        },
        "experience": {"key": "experience", "type": "ExperienceSearchScoreComponent"},
        "skills": {"key": "skills", "type": "SkillsSearchScoreComponent"},
        "languages": {"key": "languages", "type": "LanguagesSearchScoreComponent"},
        "location": {"key": "location", "type": "LocationSearchScoreComponent"},
        "education": {"key": "education", "type": "EducationSearchScoreComponent"},
        "occupation_group": {
            "key": "occupationGroup",
            "type": "OccupationGroupSearchScoreComponent",
        },
        "search_expression": {
            "key": "searchExpression",
            "type": "SearchExpressionSearchScoreComponent",
        },
        "organization_name": {"key": "organizationName", "type": "str"},
        "custom_data": {
            "key": "customData",
            "type": "{ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties}",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Required. A random string that uniquely identify the resource.
        :paramtype identifier: str
        :keyword score: Required.
        :paramtype score: float
        :keyword pdf: Required.
        :paramtype pdf: str
        :keyword job_title: Required.
        :paramtype job_title: ~affinda.models.JobTitleSearchScoreComponent
        :keyword management_level: Required.
        :paramtype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
        :keyword experience: Required.
        :paramtype experience: ~affinda.models.ExperienceSearchScoreComponent
        :keyword skills: Required.
        :paramtype skills: ~affinda.models.SkillsSearchScoreComponent
        :keyword languages: Required.
        :paramtype languages: ~affinda.models.LanguagesSearchScoreComponent
        :keyword location: Required.
        :paramtype location: ~affinda.models.LocationSearchScoreComponent
        :keyword education: Required.
        :paramtype education: ~affinda.models.EducationSearchScoreComponent
        :keyword occupation_group:
        :paramtype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
        :keyword search_expression: Required.
        :paramtype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
        :keyword organization_name: Required.
        :paramtype organization_name: str
        :keyword custom_data: Required. Dictionary of
         <components·nqbw24·schemas·customdatasearchscorecomponent·additionalproperties>.
        :paramtype custom_data: dict[str,
         ~affinda.models.ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties]
        """
        super(JobDescriptionSearchResult, self).__init__(**kwargs)
        self.identifier = kwargs["identifier"]
        self.score = kwargs["score"]
        self.pdf = kwargs["pdf"]
        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.get("occupation_group", None)
        self.search_expression = kwargs["search_expression"]
        self.organization_name = kwargs["organization_name"]
        self.custom_data = kwargs["custom_data"]


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

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar parsed: Matching job title to extracted text.
    :vartype parsed: ~affinda.models.JobTitleParsedParsed
    """

    _validation = {
        "parsed": {"readonly": True},
    }

    _attribute_map = {
        "parsed": {"key": "parsed", "type": "JobTitleParsedParsed"},
    }

    def __init__(self, **kwargs):
        """ """
        super(JobTitleParsed, self).__init__(**kwargs)
        self.parsed = None


class JobTitleAnnotation(Annotation, JobTitleParsed):
    """JobTitleAnnotation.

    Variables are only populated by the server, and will be ignored when sending a request.

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

    :ivar parsed: Matching job title to extracted text.
    :vartype parsed: ~affinda.models.JobTitleParsedParsed
    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    """

    _validation = {
        "parsed": {"readonly": True},
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "parsed": {"key": "parsed", "type": "JobTitleParsedParsed"},
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        """
        super(JobTitleAnnotation, self).__init__(**kwargs)
        self.parsed = None
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs["id"]
        self.rectangle = kwargs["rectangle"]
        self.rectangles = kwargs["rectangles"]
        self.page_index = kwargs["page_index"]
        self.raw = kwargs["raw"]
        self.confidence = kwargs["confidence"]
        self.classification_confidence = kwargs["classification_confidence"]
        self.text_extraction_confidence = kwargs["text_extraction_confidence"]
        self.is_verified = kwargs["is_verified"]
        self.is_client_verified = kwargs["is_client_verified"]
        self.is_auto_verified = kwargs["is_auto_verified"]
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs["content_type"]


class JobTitleAnnotationUpdate(AnnotationV2Base, JobTitleParsed):
    """JobTitleAnnotationUpdate.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar parsed: Matching job title to extracted text.
    :vartype parsed: ~affinda.models.JobTitleParsedParsed
    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    """

    _validation = {
        "parsed": {"readonly": True},
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "parsed": {"key": "parsed", "type": "JobTitleParsedParsed"},
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        """
        super(JobTitleAnnotationUpdate, self).__init__(**kwargs)
        self.parsed = None
        self.additional_properties = kwargs.get("additional_properties", None)
        self.id = kwargs.get("id", None)
        self.rectangle = kwargs.get("rectangle", None)
        self.rectangles = None
        self.page_index = kwargs.get("page_index", None)
        self.raw = kwargs.get("raw", None)
        self.confidence = kwargs.get("confidence", None)
        self.classification_confidence = kwargs.get("classification_confidence", None)
        self.text_extraction_confidence = kwargs.get("text_extraction_confidence", None)
        self.is_verified = kwargs.get("is_verified", None)
        self.is_client_verified = kwargs.get("is_client_verified", None)
        self.is_auto_verified = kwargs.get("is_auto_verified", None)
        self.data_point = kwargs.get("data_point", None)
        self.content_type = kwargs.get("content_type", None)


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

    :ivar soc_code:
    :vartype soc_code: float
    :ivar title:
    :vartype title: str
    :ivar minor_group:
    :vartype minor_group: str
    :ivar sub_major_group:
    :vartype sub_major_group: str
    :ivar major_group:
    :vartype major_group: str
    :ivar minor_group_code: The 4 digit code representing the SOC2020 classification for this job
     title.
    :vartype minor_group_code: int
    :ivar sub_major_group_code: The 4 digit code representing the SOC2020 classification for this
     job title.
    :vartype sub_major_group_code: int
    :ivar major_group_code: The 4 digit code representing the SOC2020 classification for this job
     title.
    :vartype major_group_code: int
    """

    _validation = {
        "minor_group_code": {"maximum": 9999, "minimum": 0},
        "sub_major_group_code": {"maximum": 9999, "minimum": 0},
        "major_group_code": {"maximum": 9999, "minimum": 0},
    }

    _attribute_map = {
        "soc_code": {"key": "socCode", "type": "float"},
        "title": {"key": "title", "type": "str"},
        "minor_group": {"key": "minorGroup", "type": "str"},
        "sub_major_group": {"key": "subMajorGroup", "type": "str"},
        "major_group": {"key": "majorGroup", "type": "str"},
        "minor_group_code": {"key": "minorGroupCode", "type": "int"},
        "sub_major_group_code": {"key": "subMajorGroupCode", "type": "int"},
        "major_group_code": {"key": "majorGroupCode", "type": "int"},
    }

    def __init__(self, **kwargs):
        """
        :keyword soc_code:
        :paramtype soc_code: float
        :keyword title:
        :paramtype title: str
        :keyword minor_group:
        :paramtype minor_group: str
        :keyword sub_major_group:
        :paramtype sub_major_group: str
        :keyword major_group:
        :paramtype major_group: str
        :keyword minor_group_code: The 4 digit code representing the SOC2020 classification for this
         job title.
        :paramtype minor_group_code: int
        :keyword sub_major_group_code: The 4 digit code representing the SOC2020 classification for
         this job title.
        :paramtype sub_major_group_code: int
        :keyword major_group_code: The 4 digit code representing the SOC2020 classification for this
         job title.
        :paramtype major_group_code: int
        """
        super(JobTitleParsedClassification, self).__init__(**kwargs)
        self.soc_code = kwargs.get("soc_code", None)
        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.minor_group_code = kwargs.get("minor_group_code", None)
        self.sub_major_group_code = kwargs.get("sub_major_group_code", None)
        self.major_group_code = kwargs.get("major_group_code", None)


class JobTitleParsedParsed(msrest.serialization.Model):
    """Matching job title to extracted text.

    :ivar name:
    :vartype name: str
    :ivar emsi_id: EMSI id of the normalised job title.
    :vartype emsi_id: str
    :ivar management_level:
    :vartype management_level: str
    :ivar classification:
    :vartype classification: ~affinda.models.JobTitleParsedClassification
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "emsi_id": {"key": "emsiId", "type": "str"},
        "management_level": {"key": "managementLevel", "type": "str"},
        "classification": {"key": "classification", "type": "JobTitleParsedClassification"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword emsi_id: EMSI id of the normalised job title.
        :paramtype emsi_id: str
        :keyword management_level:
        :paramtype management_level: str
        :keyword classification:
        :paramtype classification: ~affinda.models.JobTitleParsedClassification
        """
        super(JobTitleParsedParsed, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.emsi_id = kwargs.get("emsi_id", None)
        self.management_level = kwargs.get("management_level", None)
        self.classification = kwargs.get("classification", None)


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

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

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

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

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

    def __init__(self, **kwargs):
        """
        :keyword value:
        :paramtype value: str
        :keyword label: Required.
        :paramtype label: str
        :keyword score:
        :paramtype score: float
        """
        super(JobTitleSearchScoreComponent, self).__init__(**kwargs)
        self.value = kwargs.get("value", None)
        self.label = kwargs["label"]
        self.score = kwargs.get("score", 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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(LanguageAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class LanguageAnnotationV2Update(AnnotationV2Base):
    """LanguageAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
        "parsed": {"readonly": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        """
        super(LanguageAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = None


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

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

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

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

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

    def __init__(self, **kwargs):
        """
        :keyword value:
        :paramtype value: str
        :keyword label: Required.
        :paramtype label: str
        :keyword score:
        :paramtype score: float
        """
        super(LanguagesSearchScoreComponent, self).__init__(**kwargs)
        self.value = kwargs.get("value", None)
        self.label = kwargs["label"]
        self.score = kwargs.get("score", 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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.Location
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: ~affinda.models.Location
        """
        super(LocationAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class LocationAnnotationV2Update(AnnotationV2Base):
    """LocationAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: ~affinda.models.LocationAnnotationV2UpdateParsed
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
        "parsed": {"readonly": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "type": "str"},
        "parsed": {"key": "parsed", "type": "LocationAnnotationV2UpdateParsed"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        """
        super(LocationAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = None


class LocationAnnotationV2UpdateParsed(Location):
    """LocationAnnotationV2UpdateParsed.

    Variables are only populated by the server, and will be ignored when sending a request.

    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 state_code:
    :vartype state_code: 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
    :ivar latitude:
    :vartype latitude: float
    :ivar longitude:
    :vartype longitude: float
    :ivar po_box:
    :vartype po_box: str
    """

    _validation = {
        "formatted": {"readonly": True},
        "postal_code": {"readonly": True},
        "state": {"readonly": True},
        "state_code": {"readonly": True},
        "country": {"readonly": True},
        "country_code": {"readonly": True},
        "raw_input": {"required": True},
        "street_number": {"readonly": True},
        "street": {"readonly": True},
        "apartment_number": {"readonly": True},
        "city": {"readonly": True},
        "latitude": {"readonly": True},
        "longitude": {"readonly": True},
        "po_box": {"readonly": True},
    }

    _attribute_map = {
        "formatted": {"key": "formatted", "type": "str"},
        "postal_code": {"key": "postalCode", "type": "str"},
        "state": {"key": "state", "type": "str"},
        "state_code": {"key": "stateCode", "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"},
        "latitude": {"key": "latitude", "type": "float"},
        "longitude": {"key": "longitude", "type": "float"},
        "po_box": {"key": "poBox", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw_input: Required.
        :paramtype raw_input: str
        """
        super(LocationAnnotationV2UpdateParsed, self).__init__(**kwargs)


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

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

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

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

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

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


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

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

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

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

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

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


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

    :ivar identifier: Unique identifier for the document.
    :vartype identifier: str
    :ivar custom_identifier: Optional identifier for the document that you can set to track the
     document in the Affinda system.  Is not required to be unique.
    :vartype custom_identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar ready: 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: 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
    :ivar language: The document's language.
    :vartype language: str
    :ivar pdf: The URL to the document's pdf (if the uploaded document is not already pdf, it's
     converted to pdf as part of the parsing process).
    :vartype pdf: str
    :ivar parent_document: If this document is part of a splitted document, this attribute points
     to the original document that this document is splitted from.
    :vartype parent_document: ~affinda.models.MetaParentDocument
    :ivar child_documents: If this document has been splitted into a number of child documents,
     this attribute points to those child documents.
    :vartype child_documents: list[~affinda.models.MetaChildDocumentsItem]
    :ivar pages: The document's pages.
    :vartype pages: list[~affinda.models.PageMeta]
    :ivar is_verified: This is true if the 'confirm' button has been clicked in the Affinda
     validation tool.
    :vartype is_verified: bool
    :ivar review_url: Signed URL (valid for 60 minutes) to access the validation tool.  Not
     applicable for documents types such a resumes.
    :vartype review_url: str
    :ivar ocr_confidence: The overall confidence in the conversion of image to text.  (only
     applicable for images or PDF documents without a text layer).
    :vartype ocr_confidence: float
    :ivar created_dt:
    :vartype created_dt: ~datetime.datetime
    :ivar document_type:
    :vartype document_type: str
    :ivar region_bias:
    :vartype region_bias: ~affinda.models.RegionBias
    :ivar is_ocrd:
    :vartype is_ocrd: bool
    """

    _attribute_map = {
        "identifier": {"key": "identifier", "type": "str"},
        "custom_identifier": {"key": "customIdentifier", "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"},
        "language": {"key": "language", "type": "str"},
        "pdf": {"key": "pdf", "type": "str"},
        "parent_document": {"key": "parentDocument", "type": "MetaParentDocument"},
        "child_documents": {"key": "childDocuments", "type": "[MetaChildDocumentsItem]"},
        "pages": {"key": "pages", "type": "[PageMeta]"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "review_url": {"key": "reviewUrl", "type": "str"},
        "ocr_confidence": {"key": "ocrConfidence", "type": "float"},
        "created_dt": {"key": "createdDt", "type": "iso-8601"},
        "document_type": {"key": "documentType", "type": "str"},
        "region_bias": {"key": "regionBias", "type": "RegionBias"},
        "is_ocrd": {"key": "isOcrd", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Unique identifier for the document.
        :paramtype identifier: str
        :keyword custom_identifier: Optional identifier for the document that you can set to track the
         document in the Affinda system.  Is not required to be unique.
        :paramtype custom_identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword ready: 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: 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
        :keyword language: The document's language.
        :paramtype language: str
        :keyword pdf: The URL to the document's pdf (if the uploaded document is not already pdf, it's
         converted to pdf as part of the parsing process).
        :paramtype pdf: str
        :keyword parent_document: If this document is part of a splitted document, this attribute
         points to the original document that this document is splitted from.
        :paramtype parent_document: ~affinda.models.MetaParentDocument
        :keyword child_documents: If this document has been splitted into a number of child documents,
         this attribute points to those child documents.
        :paramtype child_documents: list[~affinda.models.MetaChildDocumentsItem]
        :keyword pages: The document's pages.
        :paramtype pages: list[~affinda.models.PageMeta]
        :keyword is_verified: This is true if the 'confirm' button has been clicked in the Affinda
         validation tool.
        :paramtype is_verified: bool
        :keyword review_url: Signed URL (valid for 60 minutes) to access the validation tool.  Not
         applicable for documents types such a resumes.
        :paramtype review_url: str
        :keyword ocr_confidence: The overall confidence in the conversion of image to text.  (only
         applicable for images or PDF documents without a text layer).
        :paramtype ocr_confidence: float
        :keyword created_dt:
        :paramtype created_dt: ~datetime.datetime
        :keyword document_type:
        :paramtype document_type: str
        :keyword region_bias:
        :paramtype region_bias: ~affinda.models.RegionBias
        :keyword is_ocrd:
        :paramtype is_ocrd: bool
        """
        super(Meta, self).__init__(**kwargs)
        self.identifier = kwargs.get("identifier", None)
        self.custom_identifier = kwargs.get("custom_identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.ready = kwargs.get("ready", None)
        self.ready_dt = kwargs.get("ready_dt", None)
        self.failed = kwargs.get("failed", None)
        self.expiry_time = kwargs.get("expiry_time", None)
        self.language = kwargs.get("language", None)
        self.pdf = kwargs.get("pdf", None)
        self.parent_document = kwargs.get("parent_document", None)
        self.child_documents = kwargs.get("child_documents", None)
        self.pages = kwargs.get("pages", None)
        self.is_verified = kwargs.get("is_verified", None)
        self.review_url = kwargs.get("review_url", None)
        self.ocr_confidence = kwargs.get("ocr_confidence", None)
        self.created_dt = kwargs.get("created_dt", None)
        self.document_type = kwargs.get("document_type", None)
        self.region_bias = kwargs.get("region_bias", None)
        self.is_ocrd = kwargs.get("is_ocrd", None)


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

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

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

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


class MetaParentDocument(msrest.serialization.Model):
    """If this document is part of a splitted document, this attribute points to the original document that this document is splitted from.

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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


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

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

    :ivar id: Required.
    :vartype id: int
    :ivar page_index: Required. Page number within the document, starts from 0.
    :vartype page_index: int
    :ivar image: Required. The URL to the image of the page.
    :vartype image: str
    :ivar image_translated: The URL to the translated image of the page.
    :vartype image_translated: str
    :ivar height: Required. Height of the page's image in px.
    :vartype height: float
    :ivar width: Required. Width of the page's image in px.
    :vartype width: float
    :ivar rotation: Required. The degree of rotation applied to the page. Greater than 0 indicates
     clockwise rotation. Less than 0 indicates counter-clockwise rotation.
    :vartype rotation: int
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "page_index": {"required": True, "minimum": 0},
        "image": {"required": True},
        "height": {"required": True},
        "width": {"required": True},
        "rotation": {"required": True, "maximum": 360, "minimum": -360},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "image": {"key": "image", "type": "str"},
        "image_translated": {"key": "imageTranslated", "type": "str"},
        "height": {"key": "height", "type": "float"},
        "width": {"key": "width", "type": "float"},
        "rotation": {"key": "rotation", "type": "int"},
    }

    def __init__(self, **kwargs):
        """
        :keyword id: Required.
        :paramtype id: int
        :keyword page_index: Required. Page number within the document, starts from 0.
        :paramtype page_index: int
        :keyword image: Required. The URL to the image of the page.
        :paramtype image: str
        :keyword image_translated: The URL to the translated image of the page.
        :paramtype image_translated: str
        :keyword height: Required. Height of the page's image in px.
        :paramtype height: float
        :keyword width: Required. Width of the page's image in px.
        :paramtype width: float
        :keyword rotation: Required. The degree of rotation applied to the page. Greater than 0
         indicates clockwise rotation. Less than 0 indicates counter-clockwise rotation.
        :paramtype rotation: int
        """
        super(PageMeta, self).__init__(**kwargs)
        self.id = kwargs["id"]
        self.page_index = kwargs["page_index"]
        self.image = kwargs["image"]
        self.image_translated = kwargs.get("image_translated", None)
        self.height = kwargs["height"]
        self.width = kwargs["width"]
        self.rotation = kwargs["rotation"]


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

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

    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

    _attribute_map = {
        "count": {"key": "count", "type": "int"},
        "next": {"key": "next", "type": "str"},
        "previous": {"key": "previous", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword count: Required. Number of items in 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
        """
        super(PaginatedResponse, self).__init__(**kwargs)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

    :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(
            Paths14R8PdgV2IndexNameDocumentsPostResponses201ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.document = kwargs.get("document", None)


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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(
            PathsX4VofmV2ResumesGetResponses200ContentApplicationJsonSchemaAllof1, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)


class Paths14VxierV2ResumesGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse, PathsX4VofmV2ResumesGetResponses200ContentApplicationJsonSchemaAllof1
):
    """Paths14VxierV2ResumesGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        :keyword count: Required. Number of items in 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
        """
        super(Paths14VxierV2ResumesGetResponses200ContentApplicationJsonSchema, self).__init__(
            **kwargs
        )
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

    :ivar config_override:
    :vartype config_override: ~affinda.models.JobDescriptionSearchConfig
    """

    _attribute_map = {
        "config_override": {"key": "configOverride", "type": "JobDescriptionSearchConfig"},
    }

    def __init__(self, **kwargs):
        """
        :keyword config_override:
        :paramtype config_override: ~affinda.models.JobDescriptionSearchConfig
        """
        super(
            Paths15O3Zn5V2JobDescriptionSearchEmbedPostRequestbodyContentApplicationJsonSchema,
            self,
        ).__init__(**kwargs)
        self.config_override = kwargs.get("config_override", None)


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

    :ivar results:
    :vartype results: list[~affinda.models.Index]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[Index]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Index]
        """
        super(Paths1BqdurzV2IndexGetResponses200ContentApplicationJsonSchemaAllof1, self).__init__(
            **kwargs
        )
        self.results = kwargs.get("results", None)


class Paths18Iqsr4V2IndexGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse, Paths1BqdurzV2IndexGetResponses200ContentApplicationJsonSchemaAllof1
):
    """Paths18Iqsr4V2IndexGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.Index]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Index]
        :keyword count: Required. Number of items in 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
        """
        super(Paths18Iqsr4V2IndexGetResponses200ContentApplicationJsonSchema, self).__init__(
            **kwargs
        )
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(
            Paths18ZzckpV2InvoicesGetResponses200ContentApplicationJsonSchemaAllof1, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)


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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(
            Paths1Q5Zfv5V2RedactedResumesGetResponses200ContentApplicationJsonSchemaAllof1, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)


class Paths1D957B5V2RedactedResumesGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse,
    Paths1Q5Zfv5V2RedactedResumesGetResponses200ContentApplicationJsonSchemaAllof1,
):
    """Paths1D957B5V2RedactedResumesGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        :keyword count: Required. Number of items in 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
        """
        super(
            Paths1D957B5V2RedactedResumesGetResponses200ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

    :ivar config_override:
    :vartype config_override: ~affinda.models.ResumeSearchConfig
    """

    _attribute_map = {
        "config_override": {"key": "configOverride", "type": "ResumeSearchConfig"},
    }

    def __init__(self, **kwargs):
        """
        :keyword config_override:
        :paramtype config_override: ~affinda.models.ResumeSearchConfig
        """
        super(
            Paths23Ubd8V2ResumeSearchEmbedPostRequestbodyContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.config_override = kwargs.get("config_override", None)


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

    :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.Get200ApplicationJsonPropertiesItemsItem]
    """

    _validation = {
        "count": {"minimum": 0},
    }

    _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 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.Get200ApplicationJsonPropertiesItemsItem]
        """
        super(
            PathsAf7Nd4V2IndexNameDocumentsGetResponses200ContentApplicationJsonSchema, 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 PathsV2IwngV2JobDescriptionsGetResponses200ContentApplicationJsonSchemaAllof1(
    msrest.serialization.Model
):
    """PathsV2IwngV2JobDescriptionsGetResponses200ContentApplicationJsonSchemaAllof1.

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[Meta]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        """
        super(
            PathsV2IwngV2JobDescriptionsGetResponses200ContentApplicationJsonSchemaAllof1, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)


class PathsChbpqfV2JobDescriptionsGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse,
    PathsV2IwngV2JobDescriptionsGetResponses200ContentApplicationJsonSchemaAllof1,
):
    """PathsChbpqfV2JobDescriptionsGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        :keyword count: Required. Number of items in 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
        """
        super(
            PathsChbpqfV2JobDescriptionsGetResponses200ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

    :ivar results:
    :vartype results: list[~affinda.models.ResthookSubscription]
    """

    _attribute_map = {
        "results": {"key": "results", "type": "[ResthookSubscription]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.ResthookSubscription]
        """
        super(
            PathsDd1FapV2ResthookSubscriptionsGetResponses200ContentApplicationJsonSchemaAllof1,
            self,
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)


class PathsGfm23QV2InvoicesGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse, Paths18ZzckpV2InvoicesGetResponses200ContentApplicationJsonSchemaAllof1
):
    """PathsGfm23QV2InvoicesGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.Meta]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.Meta]
        :keyword count: Required. Number of items in 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
        """
        super(PathsGfm23QV2InvoicesGetResponses200ContentApplicationJsonSchema, self).__init__(
            **kwargs
        )
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


class PathsMda0LlV2ResthookSubscriptionsGetResponses200ContentApplicationJsonSchema(
    PaginatedResponse,
    PathsDd1FapV2ResthookSubscriptionsGetResponses200ContentApplicationJsonSchemaAllof1,
):
    """PathsMda0LlV2ResthookSubscriptionsGetResponses200ContentApplicationJsonSchema.

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

    :ivar results:
    :vartype results: list[~affinda.models.ResthookSubscription]
    :ivar count: Required. Number of items in 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
    """

    _validation = {
        "count": {"required": True, "minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword results:
        :paramtype results: list[~affinda.models.ResthookSubscription]
        :keyword count: Required. Number of items in 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
        """
        super(
            PathsMda0LlV2ResthookSubscriptionsGetResponses200ContentApplicationJsonSchema, self
        ).__init__(**kwargs)
        self.results = kwargs.get("results", None)
        self.count = kwargs["count"]
        self.next = kwargs.get("next", None)
        self.previous = kwargs.get("previous", None)


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

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

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

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


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

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

    :ivar page_index:
    :vartype page_index: int
    :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 = {
        "page_index": {"minimum": 0},
        "x0": {"required": True},
        "y0": {"required": True},
        "x1": {"required": True},
        "y1": {"required": True},
    }

    _attribute_map = {
        "page_index": {"key": "pageIndex", "type": "int"},
        "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 page_index:
        :paramtype page_index: int
        :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.page_index = kwargs.get("page_index", None)
        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 RedactedResumeRequestBody(msrest.serialization.Model):
    """RedactedResumeRequestBody.

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG, TIFF, ODT, XLS, XLSX, ZIP.
    :vartype file: IO
    :ivar identifier: Deprecated in favor of ``customIdentifier``.
    :vartype identifier: str
    :ivar custom_identifier: Specify a custom identifier for the document if you need one, not
     required to be unique.
    :vartype custom_identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: str
    :ivar url: URL to download the resume.
    :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: str
    :ivar redact_personal_details: Whether to redact personal details (e.g. name, address).
    :vartype redact_personal_details: str
    :ivar redact_work_details: Whether to redact work details (e.g. company names).
    :vartype redact_work_details: str
    :ivar redact_education_details: Whether to redact education details (e.g. university names).
    :vartype redact_education_details: str
    :ivar redact_referees: Whether to redact referee details.
    :vartype redact_referees: str
    :ivar redact_locations: Whether to redact location names.
    :vartype redact_locations: str
    :ivar redact_dates: Whether to redact dates.
    :vartype redact_dates: str
    :ivar redact_gender: Whether to redact gender.
    :vartype redact_gender: str
    :ivar redact_pdf_metadata: Whether to redact PDF metadata.
    :vartype redact_pdf_metadata: 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"},
        "custom_identifier": {"key": "customIdentifier", "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": "str"},
        "redact_personal_details": {"key": "redactPersonalDetails", "type": "str"},
        "redact_work_details": {"key": "redactWorkDetails", "type": "str"},
        "redact_education_details": {"key": "redactEducationDetails", "type": "str"},
        "redact_referees": {"key": "redactReferees", "type": "str"},
        "redact_locations": {"key": "redactLocations", "type": "str"},
        "redact_dates": {"key": "redactDates", "type": "str"},
        "redact_gender": {"key": "redactGender", "type": "str"},
        "redact_pdf_metadata": {"key": "redactPdfMetadata", "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, TIFF, ODT, XLS, XLSX, ZIP.
        :paramtype file: IO
        :keyword identifier: Deprecated in favor of ``customIdentifier``.
        :paramtype identifier: str
        :keyword custom_identifier: Specify a custom identifier for the document if you need one, not
         required to be unique.
        :paramtype custom_identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: str
        :keyword url: URL to download the resume.
        :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: str
        :keyword redact_personal_details: Whether to redact personal details (e.g. name, address).
        :paramtype redact_personal_details: str
        :keyword redact_work_details: Whether to redact work details (e.g. company names).
        :paramtype redact_work_details: str
        :keyword redact_education_details: Whether to redact education details (e.g. university names).
        :paramtype redact_education_details: str
        :keyword redact_referees: Whether to redact referee details.
        :paramtype redact_referees: str
        :keyword redact_locations: Whether to redact location names.
        :paramtype redact_locations: str
        :keyword redact_dates: Whether to redact dates.
        :paramtype redact_dates: str
        :keyword redact_gender: Whether to redact gender.
        :paramtype redact_gender: str
        :keyword redact_pdf_metadata: Whether to redact PDF metadata.
        :paramtype redact_pdf_metadata: 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(RedactedResumeRequestBody, self).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.identifier = kwargs.get("identifier", None)
        self.custom_identifier = kwargs.get("custom_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.redact_pdf_metadata = kwargs.get("redact_pdf_metadata", "true")
        self.expiry_time = kwargs.get("expiry_time", None)


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

    :ivar country: A single alpha-2 country code (e.g. AU) used by google geocoding service.
    :vartype country: str
    :ivar countries: A list of alpha-2 country codes used by Pelias.
    :vartype countries: list[str]
    :ivar square_coordinates: A list of coordinates used by Pelias in the shape of [min_lon,
     min_lat, max_lon, max_lat].
    :vartype square_coordinates: list[float]
    :ivar strict: If true, the location must be within the region, as opposed to prefering
     locations within the region.
     Default to false.
    :vartype strict: bool
    """

    _attribute_map = {
        "country": {"key": "country", "type": "str"},
        "countries": {"key": "countries", "type": "[str]"},
        "square_coordinates": {"key": "squareCoordinates", "type": "[float]"},
        "strict": {"key": "strict", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword country: A single alpha-2 country code (e.g. AU) used by google geocoding service.
        :paramtype country: str
        :keyword countries: A list of alpha-2 country codes used by Pelias.
        :paramtype countries: list[str]
        :keyword square_coordinates: A list of coordinates used by Pelias in the shape of [min_lon,
         min_lat, max_lon, max_lat].
        :paramtype square_coordinates: list[float]
        :keyword strict: If true, the location must be within the region, as opposed to prefering
         locations within the region.
         Default to false.
        :paramtype strict: bool
        """
        super(RegionBias, self).__init__(**kwargs)
        self.country = kwargs.get("country", None)
        self.countries = kwargs.get("countries", None)
        self.square_coordinates = kwargs.get("square_coordinates", None)
        self.strict = kwargs.get("strict", None)


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

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

    :ivar type: Required.
    :vartype type: str
    :ivar errors: Required.
    :vartype errors: list[~affinda.models.RequestErrorErrorsItem]
    """

    _validation = {
        "type": {"required": True},
        "errors": {"required": True},
    }

    _attribute_map = {
        "type": {"key": "type", "type": "str"},
        "errors": {"key": "errors", "type": "[RequestErrorErrorsItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword type: Required.
        :paramtype type: str
        :keyword errors: Required.
        :paramtype errors: list[~affinda.models.RequestErrorErrorsItem]
        """
        super(RequestError, self).__init__(**kwargs)
        self.type = kwargs["type"]
        self.errors = kwargs["errors"]


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

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

    :ivar attr: Required.
    :vartype attr: str
    :ivar code: Required.
    :vartype code: str
    :ivar detail: Required.
    :vartype detail: str
    """

    _validation = {
        "attr": {"required": True},
        "code": {"required": True},
        "detail": {"required": True},
    }

    _attribute_map = {
        "attr": {"key": "attr", "type": "str"},
        "code": {"key": "code", "type": "str"},
        "detail": {"key": "detail", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword attr: Required.
        :paramtype attr: str
        :keyword code: Required.
        :paramtype code: str
        :keyword detail: Required.
        :paramtype detail: str
        """
        super(RequestErrorErrorsItem, self).__init__(**kwargs)
        self.attr = kwargs["attr"]
        self.code = kwargs["code"]
        self.detail = kwargs["detail"]


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

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

    :ivar id: Required. Resthook subscription's ID.
    :vartype id: int
    :ivar event: Required. The event name to subscribe to. Known values are:
     "resume.parse.succeeded", "resume.parse.failed", "resume.parse.completed",
     "invoice.parse.succeeded", "invoice.parse.failed", "invoice.parse.completed",
     "invoice.validate.completed", "document.parse.succeeded", "document.parse.failed",
     "document.parse.completed", "document.validate.completed", "document.classify.succeeded",
     "document.classify.failed", "document.classify.completed", "document.rejected",
     "annotation.validated".
    :vartype event: str or ~affinda.models.ResthookEvent
    :ivar target_url: Required. URL of the resthook's receiver.
    :vartype target_url: str
    :ivar active: Required. Resthooks only fire for active subscriptions.
    :vartype active: bool
    :ivar auto_deactivated: Required. Resthook subscriptions can be auto deactivated if the
     receiver continuously returns error status code over a period of time.
    :vartype auto_deactivated: bool
    :ivar auto_deactivate_reason: Required. The reason for the subscription being auto deactivated.
     May contains the error response that the receiver returned.
    :vartype auto_deactivate_reason: str
    :ivar version: Required. Version of the resthook subscription. Determines the resthook body
     being fired. Known values are: "v1", "v2", "v3".
    :vartype version: str or ~affinda.models.ResthookSubscriptionVersion
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "event": {"required": True},
        "target_url": {"required": True},
        "active": {"required": True},
        "auto_deactivated": {"required": True},
        "auto_deactivate_reason": {"required": True},
        "version": {"required": True},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "event": {"key": "event", "type": "str"},
        "target_url": {"key": "targetUrl", "type": "str"},
        "active": {"key": "active", "type": "bool"},
        "auto_deactivated": {"key": "autoDeactivated", "type": "bool"},
        "auto_deactivate_reason": {"key": "autoDeactivateReason", "type": "str"},
        "version": {"key": "version", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword id: Required. Resthook subscription's ID.
        :paramtype id: int
        :keyword event: Required. The event name to subscribe to. Known values are:
         "resume.parse.succeeded", "resume.parse.failed", "resume.parse.completed",
         "invoice.parse.succeeded", "invoice.parse.failed", "invoice.parse.completed",
         "invoice.validate.completed", "document.parse.succeeded", "document.parse.failed",
         "document.parse.completed", "document.validate.completed", "document.classify.succeeded",
         "document.classify.failed", "document.classify.completed", "document.rejected",
         "annotation.validated".
        :paramtype event: str or ~affinda.models.ResthookEvent
        :keyword target_url: Required. URL of the resthook's receiver.
        :paramtype target_url: str
        :keyword active: Required. Resthooks only fire for active subscriptions.
        :paramtype active: bool
        :keyword auto_deactivated: Required. Resthook subscriptions can be auto deactivated if the
         receiver continuously returns error status code over a period of time.
        :paramtype auto_deactivated: bool
        :keyword auto_deactivate_reason: Required. The reason for the subscription being auto
         deactivated. May contains the error response that the receiver returned.
        :paramtype auto_deactivate_reason: str
        :keyword version: Required. Version of the resthook subscription. Determines the resthook body
         being fired. Known values are: "v1", "v2", "v3".
        :paramtype version: str or ~affinda.models.ResthookSubscriptionVersion
        """
        super(ResthookSubscription, self).__init__(**kwargs)
        self.id = kwargs["id"]
        self.event = kwargs["event"]
        self.target_url = kwargs["target_url"]
        self.active = kwargs["active"]
        self.auto_deactivated = kwargs["auto_deactivated"]
        self.auto_deactivate_reason = kwargs["auto_deactivate_reason"]
        self.version = kwargs["version"]


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

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

    :ivar target_url: Required. URL of the resthook's receiver.
    :vartype target_url: str
    :ivar event: Required. The event name to subscribe to. Known values are:
     "resume.parse.succeeded", "resume.parse.failed", "resume.parse.completed",
     "invoice.parse.succeeded", "invoice.parse.failed", "invoice.parse.completed",
     "invoice.validate.completed", "document.parse.succeeded", "document.parse.failed",
     "document.parse.completed", "document.validate.completed", "document.classify.succeeded",
     "document.classify.failed", "document.classify.completed", "document.rejected",
     "annotation.validated".
    :vartype event: str or ~affinda.models.ResthookEvent
    :ivar version: Version of the resthook subscription. Determines the resthook body being fired.
     Known values are: "v1", "v2", "v3".
    :vartype version: str or ~affinda.models.Version
    """

    _validation = {
        "target_url": {"required": True},
        "event": {"required": True},
    }

    _attribute_map = {
        "target_url": {"key": "targetUrl", "type": "str"},
        "event": {"key": "event", "type": "str"},
        "version": {"key": "version", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword target_url: Required. URL of the resthook's receiver.
        :paramtype target_url: str
        :keyword event: Required. The event name to subscribe to. Known values are:
         "resume.parse.succeeded", "resume.parse.failed", "resume.parse.completed",
         "invoice.parse.succeeded", "invoice.parse.failed", "invoice.parse.completed",
         "invoice.validate.completed", "document.parse.succeeded", "document.parse.failed",
         "document.parse.completed", "document.validate.completed", "document.classify.succeeded",
         "document.classify.failed", "document.classify.completed", "document.rejected",
         "annotation.validated".
        :paramtype event: str or ~affinda.models.ResthookEvent
        :keyword version: Version of the resthook subscription. Determines the resthook body being
         fired. Known values are: "v1", "v2", "v3".
        :paramtype version: str or ~affinda.models.Version
        """
        super(ResthookSubscriptionCreate, self).__init__(**kwargs)
        self.target_url = kwargs["target_url"]
        self.event = kwargs["event"]
        self.version = kwargs.get("version", None)


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

    :ivar event: The event name to subscribe to. Known values are: "resume.parse.succeeded",
     "resume.parse.failed", "resume.parse.completed", "invoice.parse.succeeded",
     "invoice.parse.failed", "invoice.parse.completed", "invoice.validate.completed",
     "document.parse.succeeded", "document.parse.failed", "document.parse.completed",
     "document.validate.completed", "document.classify.succeeded", "document.classify.failed",
     "document.classify.completed", "document.rejected", "annotation.validated".
    :vartype event: str or ~affinda.models.ResthookEvent
    :ivar version: Version of the resthook subscription. Determines the resthook body being fired.
     Known values are: "v1", "v2", "v3".
    :vartype version: str or ~affinda.models.Version
    """

    _attribute_map = {
        "event": {"key": "event", "type": "str"},
        "version": {"key": "version", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword event: The event name to subscribe to. Known values are: "resume.parse.succeeded",
         "resume.parse.failed", "resume.parse.completed", "invoice.parse.succeeded",
         "invoice.parse.failed", "invoice.parse.completed", "invoice.validate.completed",
         "document.parse.succeeded", "document.parse.failed", "document.parse.completed",
         "document.validate.completed", "document.classify.succeeded", "document.classify.failed",
         "document.classify.completed", "document.rejected", "annotation.validated".
        :paramtype event: str or ~affinda.models.ResthookEvent
        :keyword version: Version of the resthook subscription. Determines the resthook body being
         fired. Known values are: "v1", "v2", "v3".
        :paramtype version: str or ~affinda.models.Version
        """
        super(ResthookSubscriptionUpdate, self).__init__(**kwargs)
        self.event = kwargs.get("event", None)
        self.version = kwargs.get("version", None)


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

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

    :ivar data: Required. A JSON-encoded string of the ``ResumeData`` object.
    :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. A JSON-encoded string of the ``ResumeData`` object.
        :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):
    """A JSON-encoded string of the ``ResumeData`` object.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar name:
    :vartype name: ~affinda.models.ResumeDataName
    :ivar phone_numbers:
    :vartype phone_numbers: list[str]
    :ivar phone_number_details:
    :vartype phone_number_details: list[~affinda.models.ResumeDataPhoneNumberDetailsItem]
    :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 or ~affinda.models.ResumeDataLanguagesItem]
    :ivar language_codes:
    :vartype language_codes: 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.Education]
    :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 readability.
    :vartype raw_text: str
    :ivar redacted_text: Redacted version of the text in the resume, removing PII.
    :vartype redacted_text: str
    """

    _validation = {
        "language_codes": {"readonly": True},
        "total_years_experience": {"minimum": 0},
        "head_shot": {"readonly": True},
        "profession": {"readonly": True},
        "linkedin": {"readonly": True},
        "sections": {"readonly": True},
        "is_resume_probability": {"readonly": True, "maximum": 100, "minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "name": {"key": "name", "type": "ResumeDataName"},
        "phone_numbers": {"key": "phoneNumbers", "type": "[str]"},
        "phone_number_details": {
            "key": "phoneNumberDetails",
            "type": "[ResumeDataPhoneNumberDetailsItem]",
        },
        "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]"},
        "language_codes": {"key": "languageCodes", "type": "[str]"},
        "summary": {"key": "summary", "type": "str"},
        "total_years_experience": {"key": "totalYearsExperience", "type": "int"},
        "head_shot": {"key": "headShot", "type": "bytearray"},
        "education": {"key": "education", "type": "[Education]"},
        "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"},
        "redacted_text": {"key": "redactedText", "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 name:
        :paramtype name: ~affinda.models.ResumeDataName
        :keyword phone_numbers:
        :paramtype phone_numbers: list[str]
        :keyword phone_number_details:
        :paramtype phone_number_details: list[~affinda.models.ResumeDataPhoneNumberDetailsItem]
        :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 or ~affinda.models.ResumeDataLanguagesItem]
        :keyword summary:
        :paramtype summary: str
        :keyword total_years_experience:
        :paramtype total_years_experience: int
        :keyword education:
        :paramtype education: list[~affinda.models.Education]
        :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 raw_text: All of the raw text of the parsed resume, example is shortened for
         readability.
        :paramtype raw_text: str
        :keyword redacted_text: Redacted version of the text in the resume, removing PII.
        :paramtype redacted_text: str
        """
        super(ResumeData, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.name = kwargs.get("name", None)
        self.phone_numbers = kwargs.get("phone_numbers", None)
        self.phone_number_details = kwargs.get("phone_number_details", 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", "")
        self.languages = kwargs.get("languages", None)
        self.language_codes = None
        self.summary = kwargs.get("summary", "")
        self.total_years_experience = kwargs.get("total_years_experience", None)
        self.head_shot = None
        self.education = kwargs.get("education", None)
        self.profession = None
        self.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 = None
        self.is_resume_probability = None
        self.raw_text = kwargs.get("raw_text", None)
        self.redacted_text = kwargs.get("redacted_text", 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 ResumeDataPhoneNumberDetailsItem(msrest.serialization.Model):
    """ResumeDataPhoneNumberDetailsItem.

    :ivar raw_text:
    :vartype raw_text: str
    :ivar formatted_number:
    :vartype formatted_number: str
    :ivar country_code:
    :vartype country_code: str
    :ivar international_country_code:
    :vartype international_country_code: int
    :ivar national_number:
    :vartype national_number: str
    """

    _validation = {
        "international_country_code": {"minimum": 1},
    }

    _attribute_map = {
        "raw_text": {"key": "rawText", "type": "str"},
        "formatted_number": {"key": "formattedNumber", "type": "str"},
        "country_code": {"key": "countryCode", "type": "str"},
        "international_country_code": {"key": "internationalCountryCode", "type": "int"},
        "national_number": {"key": "nationalNumber", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword raw_text:
        :paramtype raw_text: str
        :keyword formatted_number:
        :paramtype formatted_number: str
        :keyword country_code:
        :paramtype country_code: str
        :keyword international_country_code:
        :paramtype international_country_code: int
        :keyword national_number:
        :paramtype national_number: str
        """
        super(ResumeDataPhoneNumberDetailsItem, self).__init__(**kwargs)
        self.raw_text = kwargs.get("raw_text", None)
        self.formatted_number = kwargs.get("formatted_number", None)
        self.country_code = kwargs.get("country_code", None)
        self.international_country_code = kwargs.get("international_country_code", None)
        self.national_number = kwargs.get("national_number", None)


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

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar name:
    :vartype name: str
    :ivar text:
    :vartype text: str
    :ivar email:
    :vartype email: str
    :ivar number:
    :vartype number: str
    :ivar position:
    :vartype position: str
    """

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "name": {"key": "name", "type": "str"},
        "text": {"key": "text", "type": "str"},
        "email": {"key": "email", "type": "str"},
        "number": {"key": "number", "type": "str"},
        "position": {"key": "position", "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 name:
        :paramtype name: str
        :keyword text:
        :paramtype text: str
        :keyword email:
        :paramtype email: str
        :keyword number:
        :paramtype number: str
        :keyword position:
        :paramtype position: str
        """
        super(ResumeDataRefereesItem, self).__init__(**kwargs)
        self.additional_properties = kwargs.get("additional_properties", None)
        self.name = kwargs.get("name", None)
        self.text = kwargs.get("text", None)
        self.email = kwargs.get("email", None)
        self.number = kwargs.get("number", None)
        self.position = kwargs.get("position", 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},
        "page_index": {"minimum": 0},
    }

    _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.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id:
    :vartype id: int
    :ivar emsi_id: EMSI id of this skill.
    :vartype emsi_id: str
    :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 count:
    :vartype count: int
    :ivar weighting:
    :vartype weighting: float
    :ivar sources:
    :vartype sources: list[~affinda.models.ResumeDataSkillsPropertiesItemsItem]
    """

    _validation = {
        "id": {"minimum": 1},
        "emsi_id": {"readonly": True},
        "number_of_months": {"minimum": 0},
        "type": {"readonly": True},
        "count": {"readonly": True, "minimum": 0},
        "weighting": {"readonly": True},
        "sources": {"readonly": True},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "emsi_id": {"key": "emsiId", "type": "str"},
        "name": {"key": "name", "type": "str"},
        "last_used": {"key": "lastUsed", "type": "str"},
        "number_of_months": {"key": "numberOfMonths", "type": "int"},
        "type": {"key": "type", "type": "str"},
        "count": {"key": "count", "type": "int"},
        "weighting": {"key": "weighting", "type": "float"},
        "sources": {"key": "sources", "type": "[ResumeDataSkillsPropertiesItemsItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword id:
        :paramtype id: int
        :keyword name:
        :paramtype name: str
        :keyword last_used:
        :paramtype last_used: str
        :keyword number_of_months:
        :paramtype number_of_months: int
        """
        super(ResumeDataSkillsItem, self).__init__(**kwargs)
        self.id = kwargs.get("id", None)
        self.emsi_id = None
        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 = None
        self.count = None
        self.weighting = None
        self.sources = None


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

    :ivar section:
    :vartype section: str
    :ivar position: If this skill is extracted from a "workExperience" section, the "position" is
     the index of the work experience where this skill is found, with 0 being the first work
     experience, 1 being the second work experience, and so on.
    :vartype position: int
    :ivar work_experience_id: If this skill is extracted from a "workExperience" section, the
     "workExperienceId" is the id of the work experience where this skill is found.
    :vartype work_experience_id: int
    """

    _validation = {
        "position": {"minimum": 0},
        "work_experience_id": {"minimum": 1},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword section:
        :paramtype section: str
        :keyword position: If this skill is extracted from a "workExperience" section, the "position"
         is the index of the work experience where this skill is found, with 0 being the first work
         experience, 1 being the second work experience, and so on.
        :paramtype position: int
        :keyword work_experience_id: If this skill is extracted from a "workExperience" section, the
         "workExperienceId" is the id of the work experience where this skill is found.
        :paramtype work_experience_id: int
        """
        super(ResumeDataSkillsPropertiesItemsItem, self).__init__(**kwargs)
        self.section = kwargs.get("section", None)
        self.position = kwargs.get("position", None)
        self.work_experience_id = kwargs.get("work_experience_id", None)


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

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id:
    :vartype id: int
    :ivar job_title:
    :vartype job_title: str
    :ivar soc_code:
    :vartype soc_code: str
    :ivar soc_name:
    :vartype soc_name: str
    :ivar organization:
    :vartype organization: str
    :ivar industry:
    :vartype industry: 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
    """

    _validation = {
        "id": {"minimum": 1},
        "soc_code": {"readonly": True},
        "soc_name": {"readonly": True},
        "industry": {"readonly": True},
        "occupation": {"readonly": True},
    }

    _attribute_map = {
        "id": {"key": "id", "type": "int"},
        "job_title": {"key": "jobTitle", "type": "str"},
        "soc_code": {"key": "socCode", "type": "str"},
        "soc_name": {"key": "socName", "type": "str"},
        "organization": {"key": "organization", "type": "str"},
        "industry": {"key": "industry", "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 id:
        :paramtype id: int
        :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
        """
        super(ResumeDataWorkExperienceItem, self).__init__(**kwargs)
        self.id = kwargs.get("id", None)
        self.job_title = kwargs.get("job_title", None)
        self.soc_code = None
        self.soc_name = None
        self.organization = kwargs.get("organization", None)
        self.industry = None
        self.location = kwargs.get("location", None)
        self.job_description = kwargs.get("job_description", None)
        self.dates = kwargs.get("dates", None)
        self.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
    :ivar raw_text:
    :vartype raw_text: str
    """

    _validation = {
        "months_in_position": {"minimum": 0},
    }

    _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"},
        "raw_text": {"key": "rawText", "type": "str"},
    }

    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
        :keyword raw_text:
        :paramtype raw_text: str
        """
        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)
        self.raw_text = kwargs.get("raw_text", 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 emsi_id: EMSI id of the normalised job title.
    :vartype emsi_id: str
    :ivar management_level: Known values are: "None", "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"},
        "emsi_id": {"key": "emsiId", "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 emsi_id: EMSI id of the normalised job title.
        :paramtype emsi_id: str
        :keyword management_level: Known values are: "None", "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.emsi_id = kwargs.get("emsi_id", None)
        self.management_level = kwargs.get("management_level", None)
        self.classification = kwargs.get("classification", None)


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

    :ivar file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML, PNG,
     JPG, TIFF, ODT, XLS, XLSX, ZIP.
    :vartype file: IO
    :ivar url: URL to download the resume.
    :vartype url: str
    :ivar data: A JSON-encoded string of the ``ResumeData`` object.
    :vartype data: ~affinda.models.ResumeData
    :ivar identifier: Deprecated in favor of ``customIdentifier``.
    :vartype identifier: str
    :ivar custom_identifier: Specify a custom identifier for the document if you need one, not
     required to be unique.
    :vartype custom_identifier: str
    :ivar file_name: Optional filename of the file.
    :vartype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is duplicate
     of an existing document, no credits will be consumed. If "false", will parse the document
     normally whether its a duplicate or not. If not provided, will fallback to the workspace
     settings.
    :vartype reject_duplicates: 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
    :ivar region_bias: A JSON representation of the RegionBias object.
    :vartype region_bias: str
    :ivar low_priority: Explicitly mark this document as low priority.
    :vartype low_priority: bool
    """

    _attribute_map = {
        "file": {"key": "file", "type": "IO"},
        "url": {"key": "url", "type": "str"},
        "data": {"key": "data", "type": "ResumeData"},
        "identifier": {"key": "identifier", "type": "str"},
        "custom_identifier": {"key": "customIdentifier", "type": "str"},
        "file_name": {"key": "fileName", "type": "str"},
        "wait": {"key": "wait", "type": "bool"},
        "reject_duplicates": {"key": "rejectDuplicates", "type": "bool"},
        "language": {"key": "language", "type": "str"},
        "expiry_time": {"key": "expiryTime", "type": "iso-8601"},
        "region_bias": {"key": "regionBias", "type": "str"},
        "low_priority": {"key": "lowPriority", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword file: File as binary data blob. Supported formats: PDF, DOC, DOCX, TXT, RTF, HTML,
         PNG, JPG, TIFF, ODT, XLS, XLSX, ZIP.
        :paramtype file: IO
        :keyword url: URL to download the resume.
        :paramtype url: str
        :keyword data: A JSON-encoded string of the ``ResumeData`` object.
        :paramtype data: ~affinda.models.ResumeData
        :keyword identifier: Deprecated in favor of ``customIdentifier``.
        :paramtype identifier: str
        :keyword custom_identifier: Specify a custom identifier for the document if you need one, not
         required to be unique.
        :paramtype custom_identifier: str
        :keyword file_name: Optional filename of the file.
        :paramtype file_name: 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 reject_duplicates: If "true", parsing will fail when the uploaded document is
         duplicate of an existing document, no credits will be consumed. If "false", will parse the
         document normally whether its a duplicate or not. If not provided, will fallback to the
         workspace settings.
        :paramtype reject_duplicates: 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
        :keyword region_bias: A JSON representation of the RegionBias object.
        :paramtype region_bias: str
        :keyword low_priority: Explicitly mark this document as low priority.
        :paramtype low_priority: bool
        """
        super(ResumeRequestBody, self).__init__(**kwargs)
        self.file = kwargs.get("file", None)
        self.url = kwargs.get("url", None)
        self.data = kwargs.get("data", None)
        self.identifier = kwargs.get("identifier", None)
        self.custom_identifier = kwargs.get("custom_identifier", None)
        self.file_name = kwargs.get("file_name", None)
        self.wait = kwargs.get("wait", True)
        self.reject_duplicates = kwargs.get("reject_duplicates", None)
        self.language = kwargs.get("language", None)
        self.expiry_time = kwargs.get("expiry_time", None)
        self.region_bias = kwargs.get("region_bias", None)
        self.low_priority = kwargs.get("low_priority", 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]
    """

    _validation = {
        "count": {"minimum": 0},
    }

    _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 ResumeSearchConfig(msrest.serialization.Model):
    """ResumeSearchConfig.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar allow_pdf_download:
    :vartype allow_pdf_download: bool
    :ivar max_results: Maximum number of results that can be returned. Setting to "null" means no
     limitation.
    :vartype max_results: int
    :ivar display_job_title:
    :vartype display_job_title: bool
    :ivar display_location:
    :vartype display_location: bool
    :ivar display_years_experience:
    :vartype display_years_experience: bool
    :ivar display_occupation_group:
    :vartype display_occupation_group: bool
    :ivar display_education:
    :vartype display_education: bool
    :ivar display_skills:
    :vartype display_skills: bool
    :ivar display_languages:
    :vartype display_languages: bool
    :ivar display_management_level:
    :vartype display_management_level: bool
    :ivar display_keywords:
    :vartype display_keywords: bool
    :ivar weight_job_title:
    :vartype weight_job_title: float
    :ivar weight_location:
    :vartype weight_location: float
    :ivar weight_years_experience:
    :vartype weight_years_experience: float
    :ivar weight_occupation_group:
    :vartype weight_occupation_group: float
    :ivar weight_education:
    :vartype weight_education: float
    :ivar weight_skills:
    :vartype weight_skills: float
    :ivar weight_languages:
    :vartype weight_languages: float
    :ivar weight_management_level:
    :vartype weight_management_level: float
    :ivar weight_keywords:
    :vartype weight_keywords: float
    :ivar indices: List of index names.
    :vartype indices: list[str]
    :ivar show_index_dropdown: Controls whether or not the index dropdown is displayed to the user.
    :vartype show_index_dropdown: bool
    :ivar search_tool_theme: Customize the theme of the embeded search tool.
    :vartype search_tool_theme: dict[str, any]
    :ivar user_id: ID of the logged in user.
    :vartype user_id: int
    :ivar username: Username of the logged in user.
    :vartype username: str
    :ivar actions: A list of actions to show in the dropdown in the embedded search tool.
    :vartype actions: list[~affinda.models.ResumeSearchConfigActionsItem]
    :ivar custom_fields_config:
    :vartype custom_fields_config: list[~affinda.models.CustomFieldConfig]
    :ivar distance_unit: The unit of distance to use for location based searches. Known values are:
     "mi", "km".
    :vartype distance_unit: str or ~affinda.models.ResumeSearchConfigDistanceUnit
    """

    _validation = {
        "max_results": {"minimum": 1},
        "user_id": {"readonly": True, "minimum": 1},
        "username": {"readonly": True},
    }

    _attribute_map = {
        "allow_pdf_download": {"key": "allowPdfDownload", "type": "bool"},
        "max_results": {"key": "maxResults", "type": "int"},
        "display_job_title": {"key": "displayJobTitle", "type": "bool"},
        "display_location": {"key": "displayLocation", "type": "bool"},
        "display_years_experience": {"key": "displayYearsExperience", "type": "bool"},
        "display_occupation_group": {"key": "displayOccupationGroup", "type": "bool"},
        "display_education": {"key": "displayEducation", "type": "bool"},
        "display_skills": {"key": "displaySkills", "type": "bool"},
        "display_languages": {"key": "displayLanguages", "type": "bool"},
        "display_management_level": {"key": "displayManagementLevel", "type": "bool"},
        "display_keywords": {"key": "displayKeywords", "type": "bool"},
        "weight_job_title": {"key": "weightJobTitle", "type": "float"},
        "weight_location": {"key": "weightLocation", "type": "float"},
        "weight_years_experience": {"key": "weightYearsExperience", "type": "float"},
        "weight_occupation_group": {"key": "weightOccupationGroup", "type": "float"},
        "weight_education": {"key": "weightEducation", "type": "float"},
        "weight_skills": {"key": "weightSkills", "type": "float"},
        "weight_languages": {"key": "weightLanguages", "type": "float"},
        "weight_management_level": {"key": "weightManagementLevel", "type": "float"},
        "weight_keywords": {"key": "weightKeywords", "type": "float"},
        "indices": {"key": "indices", "type": "[str]"},
        "show_index_dropdown": {"key": "showIndexDropdown", "type": "bool"},
        "search_tool_theme": {"key": "searchToolTheme", "type": "{object}"},
        "user_id": {"key": "userId", "type": "int"},
        "username": {"key": "username", "type": "str"},
        "actions": {"key": "actions", "type": "[ResumeSearchConfigActionsItem]"},
        "custom_fields_config": {"key": "customFieldsConfig", "type": "[CustomFieldConfig]"},
        "distance_unit": {"key": "distanceUnit", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword allow_pdf_download:
        :paramtype allow_pdf_download: bool
        :keyword max_results: Maximum number of results that can be returned. Setting to "null" means
         no limitation.
        :paramtype max_results: int
        :keyword display_job_title:
        :paramtype display_job_title: bool
        :keyword display_location:
        :paramtype display_location: bool
        :keyword display_years_experience:
        :paramtype display_years_experience: bool
        :keyword display_occupation_group:
        :paramtype display_occupation_group: bool
        :keyword display_education:
        :paramtype display_education: bool
        :keyword display_skills:
        :paramtype display_skills: bool
        :keyword display_languages:
        :paramtype display_languages: bool
        :keyword display_management_level:
        :paramtype display_management_level: bool
        :keyword display_keywords:
        :paramtype display_keywords: bool
        :keyword weight_job_title:
        :paramtype weight_job_title: float
        :keyword weight_location:
        :paramtype weight_location: float
        :keyword weight_years_experience:
        :paramtype weight_years_experience: float
        :keyword weight_occupation_group:
        :paramtype weight_occupation_group: float
        :keyword weight_education:
        :paramtype weight_education: float
        :keyword weight_skills:
        :paramtype weight_skills: float
        :keyword weight_languages:
        :paramtype weight_languages: float
        :keyword weight_management_level:
        :paramtype weight_management_level: float
        :keyword weight_keywords:
        :paramtype weight_keywords: float
        :keyword indices: List of index names.
        :paramtype indices: list[str]
        :keyword show_index_dropdown: Controls whether or not the index dropdown is displayed to the
         user.
        :paramtype show_index_dropdown: bool
        :keyword search_tool_theme: Customize the theme of the embeded search tool.
        :paramtype search_tool_theme: dict[str, any]
        :keyword actions: A list of actions to show in the dropdown in the embedded search tool.
        :paramtype actions: list[~affinda.models.ResumeSearchConfigActionsItem]
        :keyword custom_fields_config:
        :paramtype custom_fields_config: list[~affinda.models.CustomFieldConfig]
        :keyword distance_unit: The unit of distance to use for location based searches. Known values
         are: "mi", "km".
        :paramtype distance_unit: str or ~affinda.models.ResumeSearchConfigDistanceUnit
        """
        super(ResumeSearchConfig, self).__init__(**kwargs)
        self.allow_pdf_download = kwargs.get("allow_pdf_download", None)
        self.max_results = kwargs.get("max_results", None)
        self.display_job_title = kwargs.get("display_job_title", None)
        self.display_location = kwargs.get("display_location", None)
        self.display_years_experience = kwargs.get("display_years_experience", None)
        self.display_occupation_group = kwargs.get("display_occupation_group", None)
        self.display_education = kwargs.get("display_education", None)
        self.display_skills = kwargs.get("display_skills", None)
        self.display_languages = kwargs.get("display_languages", None)
        self.display_management_level = kwargs.get("display_management_level", None)
        self.display_keywords = kwargs.get("display_keywords", None)
        self.weight_job_title = kwargs.get("weight_job_title", None)
        self.weight_location = kwargs.get("weight_location", None)
        self.weight_years_experience = kwargs.get("weight_years_experience", None)
        self.weight_occupation_group = kwargs.get("weight_occupation_group", None)
        self.weight_education = kwargs.get("weight_education", None)
        self.weight_skills = kwargs.get("weight_skills", None)
        self.weight_languages = kwargs.get("weight_languages", None)
        self.weight_management_level = kwargs.get("weight_management_level", None)
        self.weight_keywords = kwargs.get("weight_keywords", None)
        self.indices = kwargs.get("indices", None)
        self.show_index_dropdown = kwargs.get("show_index_dropdown", None)
        self.search_tool_theme = kwargs.get("search_tool_theme", None)
        self.user_id = None
        self.username = None
        self.actions = kwargs.get("actions", None)
        self.custom_fields_config = kwargs.get("custom_fields_config", None)
        self.distance_unit = kwargs.get("distance_unit", None)


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

    :ivar label: Human readable label to display in the UI.
    :vartype label: str
    :ivar event_name: Name of the event to be triggered.
    :vartype event_name: str
    """

    _attribute_map = {
        "label": {"key": "label", "type": "str"},
        "event_name": {"key": "eventName", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword label: Human readable label to display in the UI.
        :paramtype label: str
        :keyword event_name: Name of the event to be triggered.
        :paramtype event_name: str
        """
        super(ResumeSearchConfigActionsItem, self).__init__(**kwargs)
        self.label = kwargs.get("label", None)
        self.event_name = kwargs.get("event_name", None)


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

    :ivar job_title:
    :vartype job_title: ~affinda.models.ResumeSearchDetailJobTitle
    :ivar location:
    :vartype location: ~affinda.models.ResumeSearchDetailLocation
    :ivar education:
    :vartype education: ~affinda.models.ResumeSearchDetailEducation
    :ivar skills:
    :vartype skills: ~affinda.models.ResumeSearchDetailSkills
    :ivar experience:
    :vartype experience: ~affinda.models.ResumeSearchDetailExperience
    :ivar occupation_group:
    :vartype occupation_group: ~affinda.models.ResumeSearchDetailOccupationGroup
    :ivar languages:
    :vartype languages: ~affinda.models.ResumeSearchDetailLanguages
    :ivar management_level:
    :vartype management_level: ~affinda.models.ResumeSearchDetailManagementLevel
    :ivar search_expression:
    :vartype search_expression: ~affinda.models.ResumeSearchDetailSearchExpression
    """

    _attribute_map = {
        "job_title": {"key": "jobTitle", "type": "ResumeSearchDetailJobTitle"},
        "location": {"key": "location", "type": "ResumeSearchDetailLocation"},
        "education": {"key": "education", "type": "ResumeSearchDetailEducation"},
        "skills": {"key": "skills", "type": "ResumeSearchDetailSkills"},
        "experience": {"key": "experience", "type": "ResumeSearchDetailExperience"},
        "occupation_group": {
            "key": "occupationGroup",
            "type": "ResumeSearchDetailOccupationGroup",
        },
        "languages": {"key": "languages", "type": "ResumeSearchDetailLanguages"},
        "management_level": {
            "key": "managementLevel",
            "type": "ResumeSearchDetailManagementLevel",
        },
        "search_expression": {
            "key": "searchExpression",
            "type": "ResumeSearchDetailSearchExpression",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword job_title:
        :paramtype job_title: ~affinda.models.ResumeSearchDetailJobTitle
        :keyword location:
        :paramtype location: ~affinda.models.ResumeSearchDetailLocation
        :keyword education:
        :paramtype education: ~affinda.models.ResumeSearchDetailEducation
        :keyword skills:
        :paramtype skills: ~affinda.models.ResumeSearchDetailSkills
        :keyword experience:
        :paramtype experience: ~affinda.models.ResumeSearchDetailExperience
        :keyword occupation_group:
        :paramtype occupation_group: ~affinda.models.ResumeSearchDetailOccupationGroup
        :keyword languages:
        :paramtype languages: ~affinda.models.ResumeSearchDetailLanguages
        :keyword management_level:
        :paramtype management_level: ~affinda.models.ResumeSearchDetailManagementLevel
        :keyword search_expression:
        :paramtype search_expression: ~affinda.models.ResumeSearchDetailSearchExpression
        """
        super(ResumeSearchDetail, self).__init__(**kwargs)
        self.job_title = kwargs.get("job_title", None)
        self.location = kwargs.get("location", None)
        self.education = kwargs.get("education", None)
        self.skills = kwargs.get("skills", None)
        self.experience = kwargs.get("experience", None)
        self.occupation_group = kwargs.get("occupation_group", None)
        self.languages = kwargs.get("languages", None)
        self.management_level = kwargs.get("management_level", None)
        self.search_expression = kwargs.get("search_expression", None)


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

    :ivar missing:
    :vartype missing: ~affinda.models.ResumeSearchDetailEducationMissing
    :ivar value:
    :vartype value: list[~affinda.models.ResumeSearchDetailEducationValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "ResumeSearchDetailEducationMissing"},
        "value": {"key": "value", "type": "[ResumeSearchDetailEducationValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: ~affinda.models.ResumeSearchDetailEducationMissing
        :keyword value:
        :paramtype value: list[~affinda.models.ResumeSearchDetailEducationValueItem]
        """
        super(ResumeSearchDetailEducation, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar degrees:
    :vartype degrees: list[str]
    :ivar highest_degree_types:
    :vartype highest_degree_types: list[str]
    :ivar institutions:
    :vartype institutions: list[str]
    :ivar current_student:
    :vartype current_student: bool
    :ivar recent_graduate:
    :vartype recent_graduate: bool
    """

    _attribute_map = {
        "degrees": {"key": "degrees", "type": "[str]"},
        "highest_degree_types": {"key": "highestDegreeTypes", "type": "[str]"},
        "institutions": {"key": "institutions", "type": "[str]"},
        "current_student": {"key": "currentStudent", "type": "bool"},
        "recent_graduate": {"key": "recentGraduate", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword degrees:
        :paramtype degrees: list[str]
        :keyword highest_degree_types:
        :paramtype highest_degree_types: list[str]
        :keyword institutions:
        :paramtype institutions: list[str]
        :keyword current_student:
        :paramtype current_student: bool
        :keyword recent_graduate:
        :paramtype recent_graduate: bool
        """
        super(ResumeSearchDetailEducationMissing, self).__init__(**kwargs)
        self.degrees = kwargs.get("degrees", None)
        self.highest_degree_types = kwargs.get("highest_degree_types", None)
        self.institutions = kwargs.get("institutions", None)
        self.current_student = kwargs.get("current_student", None)
        self.recent_graduate = kwargs.get("recent_graduate", None)


class ResumeSearchDetailEducationValueItem(
    Education,
    ComponentsSxu0N3SchemasResumesearchdetailPropertiesEducationPropertiesValueItemsAllof1,
):
    """ResumeSearchDetailEducationValueItem.

    :ivar match:
    :vartype match: bool
    :ivar id:
    :vartype id: int
    :ivar organization:
    :vartype organization: str
    :ivar accreditation:
    :vartype accreditation: ~affinda.models.Accreditation
    :ivar grade:
    :vartype grade: ~affinda.models.EducationGrade
    :ivar location:
    :vartype location: ~affinda.models.Location
    :ivar dates:
    :vartype dates: ~affinda.models.EducationDates
    """

    _validation = {
        "id": {"minimum": 1},
    }

    _attribute_map = {
        "match": {"key": "match", "type": "bool"},
        "id": {"key": "id", "type": "int"},
        "organization": {"key": "organization", "type": "str"},
        "accreditation": {"key": "accreditation", "type": "Accreditation"},
        "grade": {"key": "grade", "type": "EducationGrade"},
        "location": {"key": "location", "type": "Location"},
        "dates": {"key": "dates", "type": "EducationDates"},
    }

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        :keyword id:
        :paramtype id: int
        :keyword organization:
        :paramtype organization: str
        :keyword accreditation:
        :paramtype accreditation: ~affinda.models.Accreditation
        :keyword grade:
        :paramtype grade: ~affinda.models.EducationGrade
        :keyword location:
        :paramtype location: ~affinda.models.Location
        :keyword dates:
        :paramtype dates: ~affinda.models.EducationDates
        """
        super(ResumeSearchDetailEducationValueItem, self).__init__(**kwargs)
        self.match = kwargs.get("match", None)
        self.id = kwargs.get("id", None)
        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 ResumeSearchDetailExperience(msrest.serialization.Model):
    """ResumeSearchDetailExperience.

    :ivar years:
    :vartype years: int
    :ivar match:
    :vartype match: bool
    """

    _validation = {
        "years": {"minimum": 0},
    }

    _attribute_map = {
        "years": {"key": "years", "type": "int"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword years:
        :paramtype years: int
        :keyword match:
        :paramtype match: bool
        """
        super(ResumeSearchDetailExperience, self).__init__(**kwargs)
        self.years = kwargs.get("years", None)
        self.match = kwargs.get("match", None)


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

    :ivar missing:
    :vartype missing: list[str]
    :ivar value:
    :vartype value: list[~affinda.models.ResumeSearchDetailJobTitleValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[str]"},
        "value": {"key": "value", "type": "[ResumeSearchDetailJobTitleValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[str]
        :keyword value:
        :paramtype value: list[~affinda.models.ResumeSearchDetailJobTitleValueItem]
        """
        super(ResumeSearchDetailJobTitle, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar name:
    :vartype name: str
    :ivar start_date:
    :vartype start_date: str
    :ivar end_date:
    :vartype end_date: str
    :ivar company_name:
    :vartype company_name: str
    :ivar match:
    :vartype match: bool
    """

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "start_date": {"key": "startDate", "type": "str"},
        "end_date": {"key": "endDate", "type": "str"},
        "company_name": {"key": "companyName", "type": "str"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword name:
        :paramtype name: str
        :keyword start_date:
        :paramtype start_date: str
        :keyword end_date:
        :paramtype end_date: str
        :keyword company_name:
        :paramtype company_name: str
        :keyword match:
        :paramtype match: bool
        """
        super(ResumeSearchDetailJobTitleValueItem, self).__init__(**kwargs)
        self.name = kwargs.get("name", None)
        self.start_date = kwargs.get("start_date", None)
        self.end_date = kwargs.get("end_date", None)
        self.company_name = kwargs.get("company_name", None)
        self.match = kwargs.get("match", None)


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

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar value:
    :vartype value: list[~affinda.models.ResumeSearchDetailLanguagesValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersSkill]"},
        "value": {"key": "value", "type": "[ResumeSearchDetailLanguagesValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword value:
        :paramtype value: list[~affinda.models.ResumeSearchDetailLanguagesValueItem]
        """
        super(ResumeSearchDetailLanguages, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :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.ResumeSkillSourcesItem]
    """

    _validation = {
        "number_of_months": {"minimum": 0},
    }

    _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": "[ResumeSkillSourcesItem]"},
    }

    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.ResumeSkillSourcesItem]
        """
        super(ResumeSkill, 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 ResumeSearchDetailLanguagesValueItem(
    ResumeSkill,
    Components159Ji55SchemasResumesearchdetailPropertiesLanguagesPropertiesValueItemsAllof1,
):
    """ResumeSearchDetailLanguagesValueItem.

    :ivar match:
    :vartype match: bool
    :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.ResumeSkillSourcesItem]
    """

    _validation = {
        "number_of_months": {"minimum": 0},
    }

    _attribute_map = {
        "match": {"key": "match", "type": "bool"},
        "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": "[ResumeSkillSourcesItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        :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.ResumeSkillSourcesItem]
        """
        super(ResumeSearchDetailLanguagesValueItem, self).__init__(**kwargs)
        self.match = kwargs.get("match", None)
        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 ResumeSearchDetailLocation(msrest.serialization.Model):
    """ResumeSearchDetailLocation.

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersLocation]
    :ivar value:
    :vartype value: ~affinda.models.ResumeSearchDetailLocationValue
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersLocation]"},
        "value": {"key": "value", "type": "ResumeSearchDetailLocationValue"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersLocation]
        :keyword value:
        :paramtype value: ~affinda.models.ResumeSearchDetailLocationValue
        """
        super(ResumeSearchDetailLocation, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


class ResumeSearchDetailLocationValue(
    Location, ComponentsN9ShogSchemasResumesearchdetailPropertiesLocationPropertiesValueAllof1
):
    """ResumeSearchDetailLocationValue.

    Variables are only populated by the server, and will be ignored when sending a request.

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

    :ivar match:
    :vartype match: bool
    :ivar formatted:
    :vartype formatted: str
    :ivar postal_code:
    :vartype postal_code: str
    :ivar state:
    :vartype state: str
    :ivar state_code:
    :vartype state_code: 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
    :ivar latitude:
    :vartype latitude: float
    :ivar longitude:
    :vartype longitude: float
    :ivar po_box:
    :vartype po_box: str
    """

    _validation = {
        "formatted": {"readonly": True},
        "postal_code": {"readonly": True},
        "state": {"readonly": True},
        "state_code": {"readonly": True},
        "country": {"readonly": True},
        "country_code": {"readonly": True},
        "raw_input": {"required": True},
        "street_number": {"readonly": True},
        "street": {"readonly": True},
        "apartment_number": {"readonly": True},
        "city": {"readonly": True},
        "latitude": {"readonly": True},
        "longitude": {"readonly": True},
        "po_box": {"readonly": True},
    }

    _attribute_map = {
        "match": {"key": "match", "type": "bool"},
        "formatted": {"key": "formatted", "type": "str"},
        "postal_code": {"key": "postalCode", "type": "str"},
        "state": {"key": "state", "type": "str"},
        "state_code": {"key": "stateCode", "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"},
        "latitude": {"key": "latitude", "type": "float"},
        "longitude": {"key": "longitude", "type": "float"},
        "po_box": {"key": "poBox", "type": "str"},
    }

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        :keyword raw_input: Required.
        :paramtype raw_input: str
        """
        super(ResumeSearchDetailLocationValue, self).__init__(**kwargs)
        self.match = kwargs.get("match", None)
        self.formatted = None
        self.postal_code = None
        self.state = None
        self.state_code = None
        self.country = None
        self.country_code = None
        self.raw_input = kwargs["raw_input"]
        self.street_number = None
        self.street = None
        self.apartment_number = None
        self.city = None
        self.latitude = None
        self.longitude = None
        self.po_box = None


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

    :ivar level: Known values are: "None", "Low", "Mid", "Upper".
    :vartype level: str or ~affinda.models.ManagementLevel
    :ivar match:
    :vartype match: bool
    """

    _attribute_map = {
        "level": {"key": "level", "type": "str"},
        "match": {"key": "match", "type": "bool"},
    }

    def __init__(self, **kwargs):
        """
        :keyword level: Known values are: "None", "Low", "Mid", "Upper".
        :paramtype level: str or ~affinda.models.ManagementLevel
        :keyword match:
        :paramtype match: bool
        """
        super(ResumeSearchDetailManagementLevel, self).__init__(**kwargs)
        self.level = kwargs.get("level", None)
        self.match = kwargs.get("match", None)


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

    :ivar missing:
    :vartype missing: list[int]
    :ivar value:
    :vartype value: list[~affinda.models.OccupationGroupSearchResult]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[int]"},
        "value": {"key": "value", "type": "[OccupationGroupSearchResult]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[int]
        :keyword value:
        :paramtype value: list[~affinda.models.OccupationGroupSearchResult]
        """
        super(ResumeSearchDetailOccupationGroup, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar missing:
    :vartype missing: list[str]
    :ivar value:
    :vartype value: list[str]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[str]"},
        "value": {"key": "value", "type": "[str]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[str]
        :keyword value:
        :paramtype value: list[str]
        """
        super(ResumeSearchDetailSearchExpression, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


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

    :ivar missing:
    :vartype missing: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar value:
    :vartype value: list[~affinda.models.ResumeSearchDetailSkillsValueItem]
    """

    _attribute_map = {
        "missing": {"key": "missing", "type": "[ResumeSearchParametersSkill]"},
        "value": {"key": "value", "type": "[ResumeSearchDetailSkillsValueItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword missing:
        :paramtype missing: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword value:
        :paramtype value: list[~affinda.models.ResumeSearchDetailSkillsValueItem]
        """
        super(ResumeSearchDetailSkills, self).__init__(**kwargs)
        self.missing = kwargs.get("missing", None)
        self.value = kwargs.get("value", None)


class ResumeSearchDetailSkillsValueItem(
    ResumeSkill,
    ComponentsH65QjbSchemasResumesearchdetailPropertiesSkillsPropertiesValueItemsAllof1,
):
    """ResumeSearchDetailSkillsValueItem.

    :ivar match:
    :vartype match: bool
    :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.ResumeSkillSourcesItem]
    """

    _validation = {
        "number_of_months": {"minimum": 0},
    }

    _attribute_map = {
        "match": {"key": "match", "type": "bool"},
        "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": "[ResumeSkillSourcesItem]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword match:
        :paramtype match: bool
        :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.ResumeSkillSourcesItem]
        """
        super(ResumeSearchDetailSkillsValueItem, self).__init__(**kwargs)
        self.match = kwargs.get("match", None)
        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 ResumeSearchEmbed(msrest.serialization.Model):
    """ResumeSearchEmbed.

    :ivar url: The signed URL for the embedable search tool.
    :vartype url: str
    """

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

    def __init__(self, **kwargs):
        """
        :keyword url: The signed URL for the embedable search tool.
        :paramtype url: str
        """
        super(ResumeSearchEmbed, self).__init__(**kwargs)
        self.url = kwargs.get("url", None)


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

    :ivar score: The matching score between the provided resume and job description.
    :vartype score: float
    :ivar details:
    :vartype details: ~affinda.models.ResumeSearchMatchDetails
    """

    _validation = {
        "score": {"maximum": 1, "minimum": 0},
    }

    _attribute_map = {
        "score": {"key": "score", "type": "float"},
        "details": {"key": "details", "type": "ResumeSearchMatchDetails"},
    }

    def __init__(self, **kwargs):
        """
        :keyword score: The matching score between the provided resume and job description.
        :paramtype score: float
        :keyword details:
        :paramtype details: ~affinda.models.ResumeSearchMatchDetails
        """
        super(ResumeSearchMatch, self).__init__(**kwargs)
        self.score = kwargs.get("score", None)
        self.details = kwargs.get("details", None)


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

    :ivar job_title:
    :vartype job_title: ~affinda.models.JobTitleSearchScoreComponent
    :ivar management_level:
    :vartype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
    :ivar experience:
    :vartype experience: ~affinda.models.ExperienceSearchScoreComponent
    :ivar skills:
    :vartype skills: ~affinda.models.SkillsSearchScoreComponent
    :ivar languages:
    :vartype languages: ~affinda.models.LanguagesSearchScoreComponent
    :ivar location:
    :vartype location: ~affinda.models.LocationSearchScoreComponent
    :ivar education:
    :vartype education: ~affinda.models.EducationSearchScoreComponent
    :ivar occupation_group:
    :vartype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
    :ivar search_expression:
    :vartype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
    """

    _attribute_map = {
        "job_title": {"key": "jobTitle", "type": "JobTitleSearchScoreComponent"},
        "management_level": {
            "key": "managementLevel",
            "type": "ManagementLevelSearchScoreComponent",
        },
        "experience": {"key": "experience", "type": "ExperienceSearchScoreComponent"},
        "skills": {"key": "skills", "type": "SkillsSearchScoreComponent"},
        "languages": {"key": "languages", "type": "LanguagesSearchScoreComponent"},
        "location": {"key": "location", "type": "LocationSearchScoreComponent"},
        "education": {"key": "education", "type": "EducationSearchScoreComponent"},
        "occupation_group": {
            "key": "occupationGroup",
            "type": "OccupationGroupSearchScoreComponent",
        },
        "search_expression": {
            "key": "searchExpression",
            "type": "SearchExpressionSearchScoreComponent",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword job_title:
        :paramtype job_title: ~affinda.models.JobTitleSearchScoreComponent
        :keyword management_level:
        :paramtype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
        :keyword experience:
        :paramtype experience: ~affinda.models.ExperienceSearchScoreComponent
        :keyword skills:
        :paramtype skills: ~affinda.models.SkillsSearchScoreComponent
        :keyword languages:
        :paramtype languages: ~affinda.models.LanguagesSearchScoreComponent
        :keyword location:
        :paramtype location: ~affinda.models.LocationSearchScoreComponent
        :keyword education:
        :paramtype education: ~affinda.models.EducationSearchScoreComponent
        :keyword occupation_group:
        :paramtype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
        :keyword search_expression:
        :paramtype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
        """
        super(ResumeSearchMatchDetails, self).__init__(**kwargs)
        self.job_title = kwargs.get("job_title", None)
        self.management_level = kwargs.get("management_level", None)
        self.experience = kwargs.get("experience", None)
        self.skills = kwargs.get("skills", None)
        self.languages = kwargs.get("languages", None)
        self.location = kwargs.get("location", None)
        self.education = kwargs.get("education", None)
        self.occupation_group = kwargs.get("occupation_group", None)
        self.search_expression = kwargs.get("search_expression", 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: A random string that uniquely identify the resource.
    :vartype job_description: str
    :ivar resume: A random string that uniquely identify the resource.
    :vartype resume: str
    :ivar job_titles:
    :vartype job_titles: list[str]
    :ivar job_titles_current_only: Search only through the canditate's current job.
    :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: Minimum years of total work experience.
    :vartype years_experience_min: int
    :ivar years_experience_max: Maximum years of total work experience.
    :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: Search by location name or by coordinates.
    :vartype locations: list[~affinda.models.ResumeSearchParametersLocation]
    :ivar locations_weight:
    :vartype locations_weight: float
    :ivar locations_required:
    :vartype locations_required: bool
    :ivar skills:
    :vartype skills: list[~affinda.models.ResumeSearchParametersSkill]
    :ivar skills_weight:
    :vartype skills_weight: float
    :ivar languages:
    :vartype languages: list[~affinda.models.ResumeSearchParametersSkill]
    :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: Search for student canditates.
    :vartype is_current_student: bool
    :ivar is_current_student_required:
    :vartype is_current_student_required: bool
    :ivar is_recent_graduate: Search for canditates that graduated less than a year ago.
    :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: Search through resumes' raw text.
    :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: Known values are: "None", "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
    :ivar custom_data:
    :vartype custom_data: list[~affinda.models.ResumeSearchParametersCustomData]
    """

    _validation = {
        "indices": {"required": True},
        "job_titles_weight": {"maximum": 1, "minimum": 0},
        "years_experience_min": {"minimum": 0},
        "years_experience_max": {"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"},
        "resume": {"key": "resume", "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": "[ResumeSearchParametersLocation]"},
        "locations_weight": {"key": "locationsWeight", "type": "float"},
        "locations_required": {"key": "locationsRequired", "type": "bool"},
        "skills": {"key": "skills", "type": "[ResumeSearchParametersSkill]"},
        "skills_weight": {"key": "skillsWeight", "type": "float"},
        "languages": {"key": "languages", "type": "[ResumeSearchParametersSkill]"},
        "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"},
        "custom_data": {"key": "customData", "type": "[ResumeSearchParametersCustomData]"},
    }

    def __init__(self, **kwargs):
        """
        :keyword indices: Required.
        :paramtype indices: list[str]
        :keyword job_description: A random string that uniquely identify the resource.
        :paramtype job_description: str
        :keyword resume: A random string that uniquely identify the resource.
        :paramtype resume: str
        :keyword job_titles:
        :paramtype job_titles: list[str]
        :keyword job_titles_current_only: Search only through the canditate's current job.
        :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: Minimum years of total work experience.
        :paramtype years_experience_min: int
        :keyword years_experience_max: Maximum years of total work experience.
        :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: Search by location name or by coordinates.
        :paramtype locations: list[~affinda.models.ResumeSearchParametersLocation]
        :keyword locations_weight:
        :paramtype locations_weight: float
        :keyword locations_required:
        :paramtype locations_required: bool
        :keyword skills:
        :paramtype skills: list[~affinda.models.ResumeSearchParametersSkill]
        :keyword skills_weight:
        :paramtype skills_weight: float
        :keyword languages:
        :paramtype languages: list[~affinda.models.ResumeSearchParametersSkill]
        :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: Search for student canditates.
        :paramtype is_current_student: bool
        :keyword is_current_student_required:
        :paramtype is_current_student_required: bool
        :keyword is_recent_graduate: Search for canditates that graduated less than a year ago.
        :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: Search through resumes' raw text.
        :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: Known values are: "None", "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
        :keyword custom_data:
        :paramtype custom_data: list[~affinda.models.ResumeSearchParametersCustomData]
        """
        super(ResumeSearchParameters, self).__init__(**kwargs)
        self.indices = kwargs["indices"]
        self.job_description = kwargs.get("job_description", None)
        self.resume = kwargs.get("resume", 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)
        self.custom_data = kwargs.get("custom_data", None)


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

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

    :ivar filter_type: Required. Data points of "text" type support only "equals" filterType,
     others support both "equals" and "range". Known values are: "equals", "range".
    :vartype filter_type: str or ~affinda.models.SearchParametersCustomDataFilterType
    :ivar data_point: Required. The data point's slug.
    :vartype data_point: str
    :ivar query: Required. "equals" searches require the "value" key inside the query, and "range"
     searches require at least one of "gte" (greater than or equal) and "lte" (less than or equal).
    :vartype query: any
    :ivar required:
    :vartype required: bool
    :ivar weight:
    :vartype weight: float
    """

    _validation = {
        "filter_type": {"required": True},
        "data_point": {"required": True},
        "query": {"required": True},
        "weight": {"maximum": 1, "minimum": 0},
    }

    _attribute_map = {
        "filter_type": {"key": "filterType", "type": "str"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "query": {"key": "query", "type": "object"},
        "required": {"key": "required", "type": "bool"},
        "weight": {"key": "weight", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword filter_type: Required. Data points of "text" type support only "equals" filterType,
         others support both "equals" and "range". Known values are: "equals", "range".
        :paramtype filter_type: str or ~affinda.models.SearchParametersCustomDataFilterType
        :keyword data_point: Required. The data point's slug.
        :paramtype data_point: str
        :keyword query: Required. "equals" searches require the "value" key inside the query, and
         "range" searches require at least one of "gte" (greater than or equal) and "lte" (less than or
         equal).
        :paramtype query: any
        :keyword required:
        :paramtype required: bool
        :keyword weight:
        :paramtype weight: float
        """
        super(SearchParametersCustomData, self).__init__(**kwargs)
        self.filter_type = kwargs["filter_type"]
        self.data_point = kwargs["data_point"]
        self.query = kwargs["query"]
        self.required = kwargs.get("required", None)
        self.weight = kwargs.get("weight", None)


class ResumeSearchParametersCustomData(SearchParametersCustomData):
    """ResumeSearchParametersCustomData.

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

    :ivar filter_type: Required. Data points of "text" type support only "equals" filterType,
     others support both "equals" and "range". Known values are: "equals", "range".
    :vartype filter_type: str or ~affinda.models.SearchParametersCustomDataFilterType
    :ivar data_point: Required. The data point's slug.
    :vartype data_point: str
    :ivar query: Required. "equals" searches require the "value" key inside the query, and "range"
     searches require at least one of "gte" (greater than or equal) and "lte" (less than or equal).
    :vartype query: any
    :ivar required:
    :vartype required: bool
    :ivar weight:
    :vartype weight: float
    """

    _validation = {
        "filter_type": {"required": True},
        "data_point": {"required": True},
        "query": {"required": True},
        "weight": {"maximum": 1, "minimum": 0},
    }

    _attribute_map = {
        "filter_type": {"key": "filterType", "type": "str"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "query": {"key": "query", "type": "object"},
        "required": {"key": "required", "type": "bool"},
        "weight": {"key": "weight", "type": "float"},
    }

    def __init__(self, **kwargs):
        """
        :keyword filter_type: Required. Data points of "text" type support only "equals" filterType,
         others support both "equals" and "range". Known values are: "equals", "range".
        :paramtype filter_type: str or ~affinda.models.SearchParametersCustomDataFilterType
        :keyword data_point: Required. The data point's slug.
        :paramtype data_point: str
        :keyword query: Required. "equals" searches require the "value" key inside the query, and
         "range" searches require at least one of "gte" (greater than or equal) and "lte" (less than or
         equal).
        :paramtype query: any
        :keyword required:
        :paramtype required: bool
        :keyword weight:
        :paramtype weight: float
        """
        super(ResumeSearchParametersCustomData, self).__init__(**kwargs)


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

    :ivar name:
    :vartype name: str
    :ivar coordinates:
    :vartype coordinates: ~affinda.models.ResumeSearchParametersLocationCoordinates
    :ivar distance:
    :vartype distance: int
    :ivar unit: Known values are: "km", "mi". Default value: "km".
    :vartype unit: str or ~affinda.models.SearchLocationUnit
    """

    _validation = {
        "distance": {"minimum": 1},
    }

    _attribute_map = {
        "name": {"key": "name", "type": "str"},
        "coordinates": {"key": "coordinates", "type": "ResumeSearchParametersLocationCoordinates"},
        "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.ResumeSearchParametersLocationCoordinates
        :keyword distance:
        :paramtype distance: int
        :keyword unit: Known values are: "km", "mi". Default value: "km".
        :paramtype unit: str or ~affinda.models.SearchLocationUnit
        """
        super(ResumeSearchParametersLocation, self).__init__(**kwargs)
        self.name = kwargs.get("name", "")
        self.coordinates = kwargs.get("coordinates", None)
        self.distance = kwargs.get("distance", 100)
        self.unit = kwargs.get("unit", "km")


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

    :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(ResumeSearchParametersLocationCoordinates, self).__init__(**kwargs)
        self.latitude = kwargs.get("latitude", None)
        self.longitude = kwargs.get("longitude", None)


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

    :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(ResumeSearchParametersSkill, 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. A random string that uniquely identify the resource.
    :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.JobTitleSearchScoreComponent
    :ivar management_level: Required.
    :vartype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
    :ivar experience: Required.
    :vartype experience: ~affinda.models.ExperienceSearchScoreComponent
    :ivar skills: Required.
    :vartype skills: ~affinda.models.SkillsSearchScoreComponent
    :ivar languages: Required.
    :vartype languages: ~affinda.models.LanguagesSearchScoreComponent
    :ivar location: Required.
    :vartype location: ~affinda.models.LocationSearchScoreComponent
    :ivar education: Required.
    :vartype education: ~affinda.models.EducationSearchScoreComponent
    :ivar occupation_group: Required.
    :vartype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
    :ivar search_expression: Required.
    :vartype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
    :ivar custom_data: Required. Dictionary of
     <components·nqbw24·schemas·customdatasearchscorecomponent·additionalproperties>.
    :vartype custom_data: dict[str,
     ~affinda.models.ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties]
    """

    _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},
        "search_expression": {"required": True},
        "custom_data": {"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": "JobTitleSearchScoreComponent"},
        "management_level": {
            "key": "managementLevel",
            "type": "ManagementLevelSearchScoreComponent",
        },
        "experience": {"key": "experience", "type": "ExperienceSearchScoreComponent"},
        "skills": {"key": "skills", "type": "SkillsSearchScoreComponent"},
        "languages": {"key": "languages", "type": "LanguagesSearchScoreComponent"},
        "location": {"key": "location", "type": "LocationSearchScoreComponent"},
        "education": {"key": "education", "type": "EducationSearchScoreComponent"},
        "occupation_group": {
            "key": "occupationGroup",
            "type": "OccupationGroupSearchScoreComponent",
        },
        "search_expression": {
            "key": "searchExpression",
            "type": "SearchExpressionSearchScoreComponent",
        },
        "custom_data": {
            "key": "customData",
            "type": "{ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties}",
        },
    }

    def __init__(self, **kwargs):
        """
        :keyword identifier: Required. A random string that uniquely identify the resource.
        :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.JobTitleSearchScoreComponent
        :keyword management_level: Required.
        :paramtype management_level: ~affinda.models.ManagementLevelSearchScoreComponent
        :keyword experience: Required.
        :paramtype experience: ~affinda.models.ExperienceSearchScoreComponent
        :keyword skills: Required.
        :paramtype skills: ~affinda.models.SkillsSearchScoreComponent
        :keyword languages: Required.
        :paramtype languages: ~affinda.models.LanguagesSearchScoreComponent
        :keyword location: Required.
        :paramtype location: ~affinda.models.LocationSearchScoreComponent
        :keyword education: Required.
        :paramtype education: ~affinda.models.EducationSearchScoreComponent
        :keyword occupation_group: Required.
        :paramtype occupation_group: ~affinda.models.OccupationGroupSearchScoreComponent
        :keyword search_expression: Required.
        :paramtype search_expression: ~affinda.models.SearchExpressionSearchScoreComponent
        :keyword custom_data: Required. Dictionary of
         <components·nqbw24·schemas·customdatasearchscorecomponent·additionalproperties>.
        :paramtype custom_data: dict[str,
         ~affinda.models.ComponentsNqbw24SchemasCustomdatasearchscorecomponentAdditionalproperties]
        """
        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"]
        self.search_expression = kwargs["search_expression"]
        self.custom_data = kwargs["custom_data"]


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

    :ivar section: Known values are: "Achievements", "AdditionalInformation", "Education",
     "Extracurriculars", "Organisations", "Other", "PersonalDetails", "Projects", "Publications",
     "Referees", "Skills", "Summary", "Training", "WorkExperience", "NotPopulated", "Header",
     "Footer", "Skills/Interests/Languages", "Training/Certifications",
     "Extracurriculars/Leadership".
    :vartype section: str or ~affinda.models.ResumeSkillSourcesItemSection
    :ivar position:
    :vartype position: int
    """

    _validation = {
        "position": {"minimum": 0},
    }

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

    def __init__(self, **kwargs):
        """
        :keyword section: Known values are: "Achievements", "AdditionalInformation", "Education",
         "Extracurriculars", "Organisations", "Other", "PersonalDetails", "Projects", "Publications",
         "Referees", "Skills", "Summary", "Training", "WorkExperience", "NotPopulated", "Header",
         "Footer", "Skills/Interests/Languages", "Training/Certifications",
         "Extracurriculars/Leadership".
        :paramtype section: str or ~affinda.models.ResumeSkillSourcesItemSection
        :keyword position:
        :paramtype position: int
        """
        super(ResumeSkillSourcesItem, self).__init__(**kwargs)
        self.section = kwargs.get("section", None)
        self.position = kwargs.get("position", None)


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

    :ivar code:
    :vartype code: str
    :ivar date:
    :vartype date: str
    :ivar description:
    :vartype description: str
    :ivar unit:
    :vartype unit: str
    :ivar unit_price:
    :vartype unit_price: float
    :ivar quantity:
    :vartype quantity: float
    :ivar discount:
    :vartype discount: str
    :ivar base_total:
    :vartype base_total: float
    :ivar tax_rate:
    :vartype tax_rate: str
    :ivar tax_total:
    :vartype tax_total: float
    :ivar total:
    :vartype total: float
    :ivar other:
    :vartype other: str
    :ivar custom_fields: Dictionary of :code:`<any>`.
    :vartype custom_fields: dict[str, any]
    """

    _attribute_map = {
        "code": {"key": "code", "type": "str"},
        "date": {"key": "date", "type": "str"},
        "description": {"key": "description", "type": "str"},
        "unit": {"key": "unit", "type": "str"},
        "unit_price": {"key": "unitPrice", "type": "float"},
        "quantity": {"key": "quantity", "type": "float"},
        "discount": {"key": "discount", "type": "str"},
        "base_total": {"key": "baseTotal", "type": "float"},
        "tax_rate": {"key": "taxRate", "type": "str"},
        "tax_total": {"key": "taxTotal", "type": "float"},
        "total": {"key": "total", "type": "float"},
        "other": {"key": "other", "type": "str"},
        "custom_fields": {"key": "customFields", "type": "{object}"},
    }

    def __init__(self, **kwargs):
        """
        :keyword code:
        :paramtype code: str
        :keyword date:
        :paramtype date: str
        :keyword description:
        :paramtype description: str
        :keyword unit:
        :paramtype unit: str
        :keyword unit_price:
        :paramtype unit_price: float
        :keyword quantity:
        :paramtype quantity: float
        :keyword discount:
        :paramtype discount: str
        :keyword base_total:
        :paramtype base_total: float
        :keyword tax_rate:
        :paramtype tax_rate: str
        :keyword tax_total:
        :paramtype tax_total: float
        :keyword total:
        :paramtype total: float
        :keyword other:
        :paramtype other: str
        :keyword custom_fields: Dictionary of :code:`<any>`.
        :paramtype custom_fields: dict[str, any]
        """
        super(RowAnnotation, self).__init__(**kwargs)
        self.code = kwargs.get("code", None)
        self.date = kwargs.get("date", None)
        self.description = kwargs.get("description", None)
        self.unit = kwargs.get("unit", None)
        self.unit_price = kwargs.get("unit_price", None)
        self.quantity = kwargs.get("quantity", None)
        self.discount = kwargs.get("discount", None)
        self.base_total = kwargs.get("base_total", None)
        self.tax_rate = kwargs.get("tax_rate", None)
        self.tax_total = kwargs.get("tax_total", None)
        self.total = kwargs.get("total", None)
        self.other = kwargs.get("other", None)
        self.custom_fields = kwargs.get("custom_fields", None)


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

    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(SearchExpressionSearchScoreComponent, 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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(SkillAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class SkillAnnotationV2Update(AnnotationV2Base):
    """SkillAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
        "parsed": {"readonly": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        """
        super(SkillAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = None


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

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

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

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

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

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


class TextAnnotationV2Update(AnnotationV2Base):
    """TextAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed:
    :vartype parsed: str
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "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 id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        :keyword parsed:
        :paramtype parsed: str
        """
        super(TextAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class YearsExperienceAnnotation(Annotation):
    """YearsExperienceAnnotation.

    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 id: Required.
    :vartype id: int
    :ivar rectangle: Required.
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles: Required.
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index: Required.
    :vartype page_index: int
    :ivar raw: Required.
    :vartype raw: str
    :ivar confidence: Required. The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: Required. The model's confidence that the text has been
     classified correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: Required. If the document was submitted as an image, this is
     the confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified: Required.
    :vartype is_verified: bool
    :ivar is_client_verified: Required.
    :vartype is_client_verified: bool
    :ivar is_auto_verified: Required.
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type: Required.
    :vartype content_type: str
    :ivar parsed: Years of experience range.
    :vartype parsed: ~affinda.models.YearsExperienceAnnotationParsed
    """

    _validation = {
        "id": {"required": True, "minimum": 1},
        "rectangle": {"required": True},
        "rectangles": {"required": True},
        "page_index": {"required": True, "minimum": 0},
        "raw": {"required": True},
        "confidence": {"required": True},
        "classification_confidence": {"required": True},
        "text_extraction_confidence": {"required": True},
        "is_verified": {"required": True},
        "is_client_verified": {"required": True},
        "is_auto_verified": {"required": True},
        "content_type": {"required": True},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "type": "str"},
        "parsed": {"key": "parsed", "type": "YearsExperienceAnnotationParsed"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword id: Required.
        :paramtype id: int
        :keyword rectangle: Required.
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword rectangles: Required.
        :paramtype rectangles: list[~affinda.models.Rectangle]
        :keyword page_index: Required.
        :paramtype page_index: int
        :keyword raw: Required.
        :paramtype raw: str
        :keyword confidence: Required. The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: Required. The model's confidence that the text has been
         classified correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: Required. If the document was submitted as an image, this
         is the confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified: Required.
        :paramtype is_verified: bool
        :keyword is_client_verified: Required.
        :paramtype is_client_verified: bool
        :keyword is_auto_verified: Required.
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type: Required.
        :paramtype content_type: str
        :keyword parsed: Years of experience range.
        :paramtype parsed: ~affinda.models.YearsExperienceAnnotationParsed
        """
        super(YearsExperienceAnnotation, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class YearsExperienceAnnotationParsed(msrest.serialization.Model):
    """Years of experience range.

    :ivar minimum: Minimum years of experience.
    :vartype minimum: float
    :ivar maximum: Maximum years of experience.
    :vartype maximum: float
    """

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

    def __init__(self, **kwargs):
        """
        :keyword minimum: Minimum years of experience.
        :paramtype minimum: float
        :keyword maximum: Maximum years of experience.
        :paramtype maximum: float
        """
        super(YearsExperienceAnnotationParsed, self).__init__(**kwargs)
        self.minimum = kwargs.get("minimum", None)
        self.maximum = kwargs.get("maximum", None)


class YearsExperienceAnnotationV2Update(AnnotationV2Base):
    """YearsExperienceAnnotationV2Update.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :vartype additional_properties: dict[str, any]
    :ivar id:
    :vartype id: int
    :ivar rectangle:
    :vartype rectangle: ~affinda.models.Rectangle
    :ivar rectangles:
    :vartype rectangles: list[~affinda.models.Rectangle]
    :ivar page_index:
    :vartype page_index: int
    :ivar raw:
    :vartype raw: str
    :ivar confidence: The overall confidence that the model's prediction is correct.
    :vartype confidence: float
    :ivar classification_confidence: The model's confidence that the text has been classified
     correctly.
    :vartype classification_confidence: float
    :ivar text_extraction_confidence: If the document was submitted as an image, this is the
     confidence that the text in the image has been correctly read by the model.
    :vartype text_extraction_confidence: float
    :ivar is_verified:
    :vartype is_verified: bool
    :ivar is_client_verified:
    :vartype is_client_verified: bool
    :ivar is_auto_verified:
    :vartype is_auto_verified: bool
    :ivar data_point:
    :vartype data_point: str
    :ivar content_type:
    :vartype content_type: str
    :ivar parsed: Years of experience range.
    :vartype parsed: ~affinda.models.YearsExperienceAnnotationV2UpdateParsed
    """

    _validation = {
        "id": {"minimum": 1},
        "rectangles": {"readonly": True},
        "page_index": {"minimum": 0},
    }

    _attribute_map = {
        "additional_properties": {"key": "", "type": "{object}"},
        "id": {"key": "id", "type": "int"},
        "rectangle": {"key": "rectangle", "type": "Rectangle"},
        "rectangles": {"key": "rectangles", "type": "[Rectangle]"},
        "page_index": {"key": "pageIndex", "type": "int"},
        "raw": {"key": "raw", "type": "str"},
        "confidence": {"key": "confidence", "type": "float"},
        "classification_confidence": {"key": "classificationConfidence", "type": "float"},
        "text_extraction_confidence": {"key": "textExtractionConfidence", "type": "float"},
        "is_verified": {"key": "isVerified", "type": "bool"},
        "is_client_verified": {"key": "isClientVerified", "type": "bool"},
        "is_auto_verified": {"key": "isAutoVerified", "type": "bool"},
        "data_point": {"key": "dataPoint", "type": "str"},
        "content_type": {"key": "contentType", "type": "str"},
        "parsed": {"key": "parsed", "type": "YearsExperienceAnnotationV2UpdateParsed"},
    }

    def __init__(self, **kwargs):
        """
        :keyword additional_properties: Unmatched properties from the message are deserialized to this
         collection.
        :paramtype additional_properties: dict[str, any]
        :keyword id:
        :paramtype id: int
        :keyword rectangle:
        :paramtype rectangle: ~affinda.models.Rectangle
        :keyword page_index:
        :paramtype page_index: int
        :keyword raw:
        :paramtype raw: str
        :keyword confidence: The overall confidence that the model's prediction is correct.
        :paramtype confidence: float
        :keyword classification_confidence: The model's confidence that the text has been classified
         correctly.
        :paramtype classification_confidence: float
        :keyword text_extraction_confidence: If the document was submitted as an image, this is the
         confidence that the text in the image has been correctly read by the model.
        :paramtype text_extraction_confidence: float
        :keyword is_verified:
        :paramtype is_verified: bool
        :keyword is_client_verified:
        :paramtype is_client_verified: bool
        :keyword is_auto_verified:
        :paramtype is_auto_verified: bool
        :keyword data_point:
        :paramtype data_point: str
        :keyword content_type:
        :paramtype content_type: str
        :keyword parsed: Years of experience range.
        :paramtype parsed: ~affinda.models.YearsExperienceAnnotationV2UpdateParsed
        """
        super(YearsExperienceAnnotationV2Update, self).__init__(**kwargs)
        self.parsed = kwargs.get("parsed", None)


class YearsExperienceAnnotationV2UpdateParsed(msrest.serialization.Model):
    """Years of experience range.

    :ivar minimum: Minimum years of experience.
    :vartype minimum: float
    :ivar maximum: Maximum years of experience.
    :vartype maximum: float
    """

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

    def __init__(self, **kwargs):
        """
        :keyword minimum: Minimum years of experience.
        :paramtype minimum: float
        :keyword maximum: Maximum years of experience.
        :paramtype maximum: float
        """
        super(YearsExperienceAnnotationV2UpdateParsed, self).__init__(**kwargs)
        self.minimum = kwargs.get("minimum", None)
        self.maximum = kwargs.get("maximum", None)
