<?php
/**
 * WARNING: Do not edit by hand, this file was generated by Crank:
 *
 * https://github.com/gocardless/crank
 */

namespace GoCardlessPro\Resources;

/**
 * A thin wrapper around a customer, providing access to its
 * attributes
 *
 * @property-read mixed $address_line1
 * @property-read mixed $address_line2
 * @property-read mixed $address_line3
 * @property-read mixed $city
 * @property-read mixed $company_name
 * @property-read mixed $country_code
 * @property-read mixed $created_at
 * @property-read mixed $danish_identity_number
 * @property-read mixed $email
 * @property-read mixed $family_name
 * @property-read mixed $given_name
 * @property-read mixed $id
 * @property-read mixed $language
 * @property-read mixed $metadata
 * @property-read mixed $phone_number
 * @property-read mixed $postal_code
 * @property-read mixed $region
 * @property-read mixed $swedish_identity_number
 */
class Customer extends BaseResource
{
    protected $model_name = "Customer";

    /**
     * The first line of the customer's address.
     */
    protected $address_line1;

    /**
     * The second line of the customer's address.
     */
    protected $address_line2;

    /**
     * The third line of the customer's address.
     */
    protected $address_line3;

    /**
     * The city of the customer's address.
     */
    protected $city;

    /**
     * Customer's company name. Required unless a `given_name` and `family_name`
     * are provided. For Canadian customers, the use of a `company_name` value
     * will mean that any mandate created from this customer will be considered
     * to be a "Business PAD" (otherwise, any mandate will be considered to be a
     * "Personal PAD").
     */
    protected $company_name;

    /**
     * [ISO 3166-1 alpha-2
     * code.](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)
     */
    protected $country_code;

    /**
     * Fixed [timestamp](#api-usage-dates-and-times), recording when this
     * resource was created.
     */
    protected $created_at;

    /**
     * For Danish customers only. The civic/company number (CPR or CVR) of the
     * customer. Must be supplied if the customer's bank account is denominated
     * in Danish krone (DKK).
     */
    protected $danish_identity_number;

    /**
     * Customer's email address. Required in most cases, as this allows
     * GoCardless to send notifications to this customer.
     */
    protected $email;

    /**
     * Customer's surname. Required unless a `company_name` is provided.
     */
    protected $family_name;

    /**
     * Customer's first name. Required unless a `company_name` is provided.
     */
    protected $given_name;

    /**
     * Unique identifier, beginning with "CU".
     */
    protected $id;

    /**
     * [ISO 639-1](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code.
     * Used as the language for notification emails sent by GoCardless if your
     * organisation does not send its own (see [compliance
     * requirements](#appendix-compliance-requirements)). Currently only "en",
     * "fr", "de", "pt", "es", "it", "nl", "da", "nb", "sl", "sv" are supported.
     * If this is not provided, the language will be chosen based on the
     * `country_code` (if supplied) or default to "en".
     */
    protected $language;

    /**
     * Key-value store of custom data. Up to 3 keys are permitted, with key
     * names up to 50 characters and values up to 500 characters.
     */
    protected $metadata;

    /**
     * [ITU E.123](https://en.wikipedia.org/wiki/E.123) formatted phone number,
     * including country code.
     */
    protected $phone_number;

    /**
     * The customer's postal code.
     */
    protected $postal_code;

    /**
     * The customer's address region, county or department. For US customers a 2
     * letter [ISO3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US) state
     * code is required (e.g. `CA` for California).
     */
    protected $region;

    /**
     * For Swedish customers only. The civic/company number (personnummer,
     * samordningsnummer, or organisationsnummer) of the customer. Must be
     * supplied if the customer's bank account is denominated in Swedish krona
     * (SEK). This field cannot be changed once it has been set.
     */
    protected $swedish_identity_number;

}
