# coding: utf-8

"""
    Acre Platform User API

    # CORS CORS is implemented by all Acre API endpoints and only certain hostnames are allowed for each deployment of the API. If your use case requires calling the Acre User API from a browser, please contact Acre to arrange the appropriate configuration. # API Authentication The primary method of authentication for users of the Acre API is with the use of JSON Web Tokens (JWTs), which are suplemented by an application specific API Key. The API key must be provided through the `X-API-KEY` HTTP header and will be provided by your Acre Customer Success Manager. The JWT must be provided through a cookie with key of `authorization`. The JWT must be generated and signed as per the following section. # Generating JWTs JWT must either be generated by a third-party such as Azure ADB2C that has been configured for the appropriate service and/or user account, or alternatively can be generated locally and signed by an private key for which the public key has been made available to Acre via a JWKS URL. In addition to being signed by your private key, the JWT will also need to contain at a minimum:  * An issuer `iss`, which must be a valid URI previously agreed with Acre.  * A subject `sub`, which must be a unique identifier for the user and/or service account previously agreed with Acre.  * An expiry time `exp` which must not be more than four hours in the future.  * A not before time `nbf` which must be in the past, but not greater than six hours in the past.  The JWT should be signed using RS256.

    The version of the OpenAPI document: 1.0
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class DocumentDocumentType(str, Enum):
    """
    Types of documents.   - INVALID_DOCUMENT_TYPE: Invalid document type.  - TEMPLATE: Template document type.  - PAYSLIP: Account statement document type. *DEPRECATED*: This is replaced by BANK_STATEMENT and will be removed in a later PR. ACRE-1022. ACCOUNT_STATEMENT = 2; Payslip document type.  - INVESTMENT_STATEMENT: Investment statement document type.  - P60: P60 document type.  - SA302: SA302 document type.  - COMPANY_ACCOUNTS: Company accounts document type.  - BIRTH_CERTIFICATE: Birth certificate document type.  - PASSPORT: Passport document type.  - UTILITY_BILL: Utility bill document type.  - LETTER_OF_GIFT: Letter of gift document type.  - TEMPLATE_COMPLIANCE_EMAIL: Drivers license. DRIVERS_LICENSE = 12; // Disabled. See DRIVERS_LICENSE_{FRONT,BACK} below. Template compliance E-mail.  - OFFER_LETTER: Offer letter.  - LIVE_PHOTO: Live photo.  - NATIONAL_IDENTITY_CARD: National identity card. Deprecated. See NATIONAL_IDENTITY_CARD_{FRONT,BACK} below.  - DRIVERS_LICENSE_FRONT: Drivers license (front).  - DRIVERS_LICENSE_BACK: Drivers license (back).  - AGREEMENT_IN_PRINCIPLE: Agreement in principle.  - POLICY_LETTER: Policy letter.  - INSURANCE_ILLUSTRATION: Insurance illustration.  - INSURANCE_KEY_FACTS: Insurance key facts.  - THIRD_PARTY_PRIVACY_NOTICE: Thirdparty privacy notice.  - INTERNAL: Internal.  - OTHER: Other  - MORTGAGE_STATEMENT: Mortgage statement.  - MORTGAGE_APPLICATION: Mortgage application.  - PENSION_STATEMENT: Pension statement.  - BANK_STATEMENT: Bank statement.  - APPLICATION_LETTER: Application letter.  - INSURANCE_APPLICATION: Insurance application.  - DEBT_CONSOLIDATION_COMPARISON_FORM: Debt consolidation comparison form.  - DEBT_CONSOLIDATION_SUPPLEMENT: Debt consolidation supplement.  - IMPORTED_IDD: Imported IDD document. Requires acre/case_import permission to be able to upload.  - IMPORTED_ESIS: Imported ESIS document. Requires acre/case_import permission to be able to upload.  - IMPORTED_SUITABILITY_REPORT: Imported suitability report. Requires acre/case_import permission to be able to upload.  - PROPERTY_TITLE: Property title from Land Registry.  - PROPERTY_TITLE_PLAN: Title plan from Land Registry.  - AFFORDABILITY_SCREENSHOT: Affordability calculator screenshot.  - CREDIT_REPORT: Credit Report.  - ANNUAL_MORTGAGE_STATEMENT: Acre Annual Mortgage Statement.  - EXTERNAL_EVIDENCE_OF_RESEARCH: External Evidence Of Research.  - DIRECT_DEBIT_MANDATE: Direct debit mandate.  - LEGAL_CHARGE: Legal charge.  - INCOME_DECLARATION: Income declaration.  - CREDIT_SEARCH: Credit search.  - VALUATION: Valuation.  - MORTGAGE_QUESTIONNAIRE: Mortgage questionnaire.  - CONSENT: Consent.  - DEED_OF_POSTPONEMENT: Deed of postponement.  - REDEMPTION_FIGURE: Redemption figure.  - BTL_PORTFOLIO: BTL portfolio.  - LENDING_INTO_RETIREMENT_DECLARATION: Lending into retirement declaration.  - OCCUPIERS_CONSENT_FORM: Occupiers consent form.  - INDEPENDENT_LEGAL_ADVICE_FORM: Independent legal advice form.  - PURPOSE_OF_LOAN_DECLARATION: Purpose of loan declaration.  - INTEREST_ONLY_DECLARATION: Interest only declaration.  - LIMITED_COMPANY_ACCOUNTS: Limited company accounts.  - MANAGEMENT_ACCOUNTS: Management accounts.  - EMPLOYMENT_CONTRACT: Employment contract.  - AFFORDABILITY_CALCULATOR: Affordability calculator.  - LOAN_SETTLEMENT_FIGURE: Loan settlement figure.  - CREDIT_CARD_STATEMENT: Credit card statement.  - LETTER_OF_EXPLANATION: Letter of explanation.  - PROPERTY_LEASE: Property lease.  - GROUND_RENT_SERVICE_CHARGE_CONFIRMATION: Ground rent / Service charge confirmation.  - STATEMENT_OF_NEEDS: Statement of needs.  - LAST_WILL_AND_TESTAMENT: Last will and testament.  - DECLARATION_OF_TRUST: Declaration of trust.  - SURVEY_REPORT: Survey report.  - POWER_OF_ATTORNEY: Power of attorney.  - EPC_REPORT: Energy Performance Certificate (EPC).  - VISA: Visa / Indefinite leave to remain.  - TAX_YEAR_OVERVIEW: Tax year overview.  - PROOF_OF_DEPOSIT: Proof of deposit.  - LENDER_ESIS: ESIS generated by Lender.  - MEMORANDUM_OF_SALE: Memorandum of sale.  - CALL_RECORDING: Call recording.  - NATIONAL_IDENTITY_CARD_FRONT: National identity card (front).  - NATIONAL_IDENTITY_CARD_BACK: National identity card (back).  - COST_OF_MOVE: Cost of move.  - BUDGET_STRESS_TEST: Budget stress test.  - WELLBEING_ASSESSMENT: Wellbeing assessment.  - INSURANCE_DECLARATION: Insurance declaration.  - BENEFIT_REPORT: Benefit report.  - RISK_INFORMATION_PACK: Risk information pack.  - EQUITY_RELEASE_FACT_FIND: Equity release fact find.  - WITNESS_DECLARATION: Witness declaration.  - FEE_ELECTION: Fee election.  - INSURANCE_COMPARISON_REPORT: Insurance product comparison report.  - CUSTOMER_COMMUNICATION: Customer Communication.  - THIRD_PARTY_COMMUNICATION: Third Party Communication.
    """

    """
    allowed enum values
    """
    INVALID_DOCUMENT_TYPE = 'INVALID_DOCUMENT_TYPE'
    TEMPLATE = 'TEMPLATE'
    PAYSLIP = 'PAYSLIP'
    INVESTMENT_STATEMENT = 'INVESTMENT_STATEMENT'
    P60 = 'P60'
    SA302 = 'SA302'
    COMPANY_ACCOUNTS = 'COMPANY_ACCOUNTS'
    BIRTH_CERTIFICATE = 'BIRTH_CERTIFICATE'
    PASSPORT = 'PASSPORT'
    UTILITY_BILL = 'UTILITY_BILL'
    LETTER_OF_GIFT = 'LETTER_OF_GIFT'
    TEMPLATE_COMPLIANCE_EMAIL = 'TEMPLATE_COMPLIANCE_EMAIL'
    OFFER_LETTER = 'OFFER_LETTER'
    LIVE_PHOTO = 'LIVE_PHOTO'
    NATIONAL_IDENTITY_CARD = 'NATIONAL_IDENTITY_CARD'
    DRIVERS_LICENSE_FRONT = 'DRIVERS_LICENSE_FRONT'
    DRIVERS_LICENSE_BACK = 'DRIVERS_LICENSE_BACK'
    AGREEMENT_IN_PRINCIPLE = 'AGREEMENT_IN_PRINCIPLE'
    POLICY_LETTER = 'POLICY_LETTER'
    INSURANCE_ILLUSTRATION = 'INSURANCE_ILLUSTRATION'
    INSURANCE_KEY_FACTS = 'INSURANCE_KEY_FACTS'
    THIRD_PARTY_PRIVACY_NOTICE = 'THIRD_PARTY_PRIVACY_NOTICE'
    INTERNAL = 'INTERNAL'
    OTHER = 'OTHER'
    MORTGAGE_STATEMENT = 'MORTGAGE_STATEMENT'
    MORTGAGE_APPLICATION = 'MORTGAGE_APPLICATION'
    PENSION_STATEMENT = 'PENSION_STATEMENT'
    BANK_STATEMENT = 'BANK_STATEMENT'
    APPLICATION_LETTER = 'APPLICATION_LETTER'
    INSURANCE_APPLICATION = 'INSURANCE_APPLICATION'
    DEBT_CONSOLIDATION_COMPARISON_FORM = 'DEBT_CONSOLIDATION_COMPARISON_FORM'
    DEBT_CONSOLIDATION_SUPPLEMENT = 'DEBT_CONSOLIDATION_SUPPLEMENT'
    IMPORTED_IDD = 'IMPORTED_IDD'
    IMPORTED_ESIS = 'IMPORTED_ESIS'
    IMPORTED_SUITABILITY_REPORT = 'IMPORTED_SUITABILITY_REPORT'
    PROPERTY_TITLE = 'PROPERTY_TITLE'
    PROPERTY_TITLE_PLAN = 'PROPERTY_TITLE_PLAN'
    AFFORDABILITY_SCREENSHOT = 'AFFORDABILITY_SCREENSHOT'
    CREDIT_REPORT = 'CREDIT_REPORT'
    ANNUAL_MORTGAGE_STATEMENT = 'ANNUAL_MORTGAGE_STATEMENT'
    EXTERNAL_EVIDENCE_OF_RESEARCH = 'EXTERNAL_EVIDENCE_OF_RESEARCH'
    DIRECT_DEBIT_MANDATE = 'DIRECT_DEBIT_MANDATE'
    LEGAL_CHARGE = 'LEGAL_CHARGE'
    INCOME_DECLARATION = 'INCOME_DECLARATION'
    CREDIT_SEARCH = 'CREDIT_SEARCH'
    VALUATION = 'VALUATION'
    MORTGAGE_QUESTIONNAIRE = 'MORTGAGE_QUESTIONNAIRE'
    CONSENT = 'CONSENT'
    DEED_OF_POSTPONEMENT = 'DEED_OF_POSTPONEMENT'
    REDEMPTION_FIGURE = 'REDEMPTION_FIGURE'
    BTL_PORTFOLIO = 'BTL_PORTFOLIO'
    LENDING_INTO_RETIREMENT_DECLARATION = 'LENDING_INTO_RETIREMENT_DECLARATION'
    OCCUPIERS_CONSENT_FORM = 'OCCUPIERS_CONSENT_FORM'
    INDEPENDENT_LEGAL_ADVICE_FORM = 'INDEPENDENT_LEGAL_ADVICE_FORM'
    PURPOSE_OF_LOAN_DECLARATION = 'PURPOSE_OF_LOAN_DECLARATION'
    INTEREST_ONLY_DECLARATION = 'INTEREST_ONLY_DECLARATION'
    LIMITED_COMPANY_ACCOUNTS = 'LIMITED_COMPANY_ACCOUNTS'
    MANAGEMENT_ACCOUNTS = 'MANAGEMENT_ACCOUNTS'
    EMPLOYMENT_CONTRACT = 'EMPLOYMENT_CONTRACT'
    AFFORDABILITY_CALCULATOR = 'AFFORDABILITY_CALCULATOR'
    LOAN_SETTLEMENT_FIGURE = 'LOAN_SETTLEMENT_FIGURE'
    CREDIT_CARD_STATEMENT = 'CREDIT_CARD_STATEMENT'
    LETTER_OF_EXPLANATION = 'LETTER_OF_EXPLANATION'
    PROPERTY_LEASE = 'PROPERTY_LEASE'
    GROUND_RENT_SERVICE_CHARGE_CONFIRMATION = 'GROUND_RENT_SERVICE_CHARGE_CONFIRMATION'
    STATEMENT_OF_NEEDS = 'STATEMENT_OF_NEEDS'
    LAST_WILL_AND_TESTAMENT = 'LAST_WILL_AND_TESTAMENT'
    DECLARATION_OF_TRUST = 'DECLARATION_OF_TRUST'
    SURVEY_REPORT = 'SURVEY_REPORT'
    POWER_OF_ATTORNEY = 'POWER_OF_ATTORNEY'
    EPC_REPORT = 'EPC_REPORT'
    VISA = 'VISA'
    TAX_YEAR_OVERVIEW = 'TAX_YEAR_OVERVIEW'
    PROOF_OF_DEPOSIT = 'PROOF_OF_DEPOSIT'
    LENDER_ESIS = 'LENDER_ESIS'
    MEMORANDUM_OF_SALE = 'MEMORANDUM_OF_SALE'
    CALL_RECORDING = 'CALL_RECORDING'
    NATIONAL_IDENTITY_CARD_FRONT = 'NATIONAL_IDENTITY_CARD_FRONT'
    NATIONAL_IDENTITY_CARD_BACK = 'NATIONAL_IDENTITY_CARD_BACK'
    COST_OF_MOVE = 'COST_OF_MOVE'
    BUDGET_STRESS_TEST = 'BUDGET_STRESS_TEST'
    WELLBEING_ASSESSMENT = 'WELLBEING_ASSESSMENT'
    INSURANCE_DECLARATION = 'INSURANCE_DECLARATION'
    BENEFIT_REPORT = 'BENEFIT_REPORT'
    RISK_INFORMATION_PACK = 'RISK_INFORMATION_PACK'
    EQUITY_RELEASE_FACT_FIND = 'EQUITY_RELEASE_FACT_FIND'
    WITNESS_DECLARATION = 'WITNESS_DECLARATION'
    FEE_ELECTION = 'FEE_ELECTION'
    INSURANCE_COMPARISON_REPORT = 'INSURANCE_COMPARISON_REPORT'
    CUSTOMER_COMMUNICATION = 'CUSTOMER_COMMUNICATION'
    THIRD_PARTY_COMMUNICATION = 'THIRD_PARTY_COMMUNICATION'

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of DocumentDocumentType from a JSON string"""
        return cls(json.loads(json_str))


