[
    {
        "name": "party_id",
        "type": "STRING",
        "mode": "REQUIRED",
        "description": "MANDATORY: Unique ID for your customers. Use a pseudo-ID or an internal customer ID instead of an externally facing customer ID."
    },
    {
        "name": "validity_start_time",
        "type": "TIMESTAMP",
        "mode": "REQUIRED",
        "description": "MANDATORY: Timestamp of when the information in this row reflected the state of the entity and was known to the bank."
    },
    {
        "name": "is_entity_deleted",
        "type": "BOOL",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: If set to TRUE, indicates the party as deleted from your system of reference."
    },
    {
        "name": "source_system",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Name of the system that this row was fetched from to help manage data lineage. This field has no impact on AML AI functionality."
    },
    {
        "name": "type",
        "type": "STRING",
        "mode": "REQUIRED",
        "description": "MANDATORY: Type of this party, to differentiate between a natural person or a legal entity. One of: [COMPANY:CONSUMER]."
    },
    {
        "name": "name",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "EXPERIMENTAL: Name of this party."
    },
    {
        "name": "addresses",
        "type": "STRUCT",
        "mode": "REPEATED",
        "description": "EXPERIMENTAL: Addresses of this party, if any.",
        "fields": [
            {
                "name": "address_line",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: First line of address in case not captured by street and building number."
            },
            {
                "name": "street",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Street of the address."
            },
            {
                "name": "building_number",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Building number of the address."
            },
            {
                "name": "post_office_box",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: PO Box identifier in case the address is a PO Box."
            },
            {
                "name": "post_code",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Postcode. Include postcode for each Party where this is known to the bank."
            },
            {
                "name": "town",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Town of the address."
            },
            {
                "name": "subregion",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "MANDATORY: Region within the country. For AML do not use NULL for this field."
            },
            {
                "name": "region_code",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "MANDATORY: Country or region in two-letter Unicode CLDR code format. Do not use NULL for this field."
            }
        ]
    },
    {
        "name": "birth_date",
        "type": "DATE",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Date of birth for the Party for natural persons, for example, where Party.type = CONSUMER. Where Party.type = COMPANY, use NULL. Typically also used for fairness evaluation."
    },
    {
        "name": "establishment_date",
        "type": "DATE",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Party's date of establishment with Party.type = COMPANY. Where Party.type = CONSUMER, use NULL."
    },
    {
        "name": "occupation",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Most recent occupation of the Party, if known. Only relevant with Party.type = CONSUMER. Where Party.type = COMPANY, use NULL. If not known, use the empty string. Note that this field is not intended to capture employment level. For example, for a carpenter who is currently unemployed, this field should read \"Carpenter\"."
    },
    {
        "name": "gender",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Gender string for individuals. Typically used for fairness evaluation."
    },
    {
        "name": "nationalities",
        "type": "STRUCT",
        "mode": "REPEATED",
        "description": "RECOMMENDED: One or more nationalities for natural persons, with an empty list in exceptional cases when your do not have information on the tax residency of the party. Empty for companies. Typically also used for fairness evaluation.",
        "fields": [
            {
                "name": "region_code",
                "type": "STRING",
                "mode": "REQUIRED",
                "description": "MANDATORY: Country or region in two-letter Unicode CLDR code format."
            }
        ]
    },
    {
        "name": "residencies",
        "type": "STRUCT",
        "mode": "REPEATED",
        "description": "RECOMMENDED: One or more of the Party's tax residencies (for natural persons), with an empty list in exceptional cases. Empty list for companies.",
        "fields": [
            {
                "name": "region_code",
                "type": "STRING",
                "mode": "REQUIRED",
                "description": "MANDATORY: Country or region in two-letter Unicode CLDR code format."
            }
        ]
    },
    {
        "name": "exit_date",
        "type": "DATE",
        "mode": "NULLABLE",
        "description": "MANDATORY: The date when the party stopped being a customer. Use NULL if the Party has not stopped being a customer."
    },
    {
        "name": "join_date",
        "type": "DATE",
        "mode": "NULLABLE",
        "description": "MANDATORY: Date when the Party first became your customer. Use NULL if the Party has been entered into your systems but has not yet opened an account."
    },
    {
        "name": "assets_value_range",
        "type": "STRUCT",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Approximate value of assets held by the Party. Where possible, this estimate should include assets held by other financial institutions. Include at least the start or end amount.",
        "fields": [
            {
                "name": "start_amount",
                "type": "STRUCT",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: The lower bound of the money range (inclusive) or NULL if there is no bound. If provided, it should be positive.",
                "fields": [
                    {
                        "name": "currency_code",
                        "type": "STRING",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: The three-letter currency code defined in ISO 4217."
                    },
                    {
                        "name": "units",
                        "type": "INT64",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: The whole units of the amount. For example, if currency_code is USD, then 1 unit is one US dollar."
                    },
                    {
                        "name": "nanos",
                        "type": "INT64",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: Number of nano (10^-9) units of the amount. The value must be between 0 and 999,999,999, inclusive. Nanos must be positive or zero."
                    }
                ]
            },
            {
                "name": "end_amount",
                "type": "STRUCT",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: The upper bound of the money range (exclusive) or NULL if there is no bound.  If provided, it should be positive. The range represents a single value when start_amount is equal to end_amount.",
                "fields": [
                    {
                        "name": "currency_code",
                        "type": "STRING",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: The three-letter currency code defined in ISO 4217."
                    },
                    {
                        "name": "units",
                        "type": "INT64",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: The whole units of the amount. For example, if currency_code is USD, then 1 unit is one US dollar."
                    },
                    {
                        "name": "nanos",
                        "type": "INT64",
                        "mode": "REQUIRED",
                        "description": "MANDATORY: Number of nano (10^-9) units of the amount. The value must be between 0 and 999,999,999, inclusive. Nanos must be positive or zero."
                    }
                ]
            }
        ]
    },
    {
        "name": "civil_status_code",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Civil status of the Party, based on ISO 20022 Civil Status Codes. If not known, use UNKNOWN. One of: [SINGLE:MARRIED:LEGALLY_DIVORCED:DIVORCED:WIDOW:STABLE_UNION:SEPARATED:UNKNOWN]."
    },
    {
        "name": "phone_numbers",
        "type": "STRUCT",
        "mode": "REPEATED",
        "description": "EXPERIMENTAL: Zero or more phone numbers of this Party.",
        "fields": [
            {
                "name": "type",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Type of this phone number. Supported Values: PERSONAL, CORPORATE One of: [PERSONAL:CORPORATE]."
            },
            {
                "name": "phone",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Phone number. Either this field or obfuscated_phone should be filled in."
            },
            {
                "name": "obfuscated_phone",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "MANDATORY: Phone number, obfuscated. Do not use NULL for this field."
            },
            {
                "name": "region_code",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "EXPERIMENTAL: Region code in two-letter Unicode CLDR code format, if known."
            }
        ]
    },
    {
        "name": "email_addresses",
        "type": "STRUCT",
        "mode": "REPEATED",
        "description": "EXPERIMENTAL: Zero or more email addresses of this Party.",
        "fields": [
            {
                "name": "type",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Type of this email address. Supported values: PERSONAL, CORPORATE One of: [PERSONAL:CORPORATE]."
            },
            {
                "name": "email",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Email address. Either this field or obfuscated_email should be filled in."
            },
            {
                "name": "obfuscated_email",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "RECOMMENDED: Email address, obfuscated."
            },
            {
                "name": "region_code",
                "type": "STRING",
                "mode": "NULLABLE",
                "description": "EXPERIMENTAL: Region code in two-letter Unicode CLDR code format, if known."
            }
        ]
    },
    {
        "name": "education_level_code",
        "type": "STRING",
        "mode": "NULLABLE",
        "description": "RECOMMENDED: Most recent educational level of the Party, defined in International Standard Classification of Education (ISCED-11). If not known, use UNKNOWN. Based on standard ISCED-Attainment (ISCED-A) coding. One of: [LESS_THAN_PRIMARY_EDUCATION:PRIMARY_EDUCATION:LOWER_SECONDARY_EDUCATION:UPPER_SECONDARY_EDUCATION:POST_SECONDARY_NON_TERTIARY_EDUCATION:SHORT_CYCLE_TERTIARY_EDUCATION:BACHELORS_OR_EQUIVALENT:MASTERS_OR_EQUIVALENT:DOCTORAL_OR_EQUIVALENT:NOT_ELSEWHERE_CLASSIFIED:UNKNOWN]."
    }
]