<?php
/**
 * UserInformation
 *
 * PHP version 7.4
 *
 * @category Class
 * @package  DocuSign\eSign
 * @author   Swagger Codegen team <apihelp@docusign.com>
 * @license  The Docusign PHP Client SDK is licensed under the MIT License.
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * Docusign eSignature REST API
 *
 * The Docusign eSignature REST API provides you with a powerful, convenient, and simple Web services API for interacting with Docusign.
 *
 * OpenAPI spec version: v2.1
 * Contact: devcenter@docusign.com
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 * Swagger Codegen version: 2.4.21
 */

/**
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */

namespace DocuSign\eSign\Model;

use \ArrayAccess;
use DocuSign\eSign\ObjectSerializer;

/**
 * UserInformation Class Doc Comment
 *
 * @category    Class
 * @description User information.
 * @package     DocuSign\eSign
 * @author      Swagger Codegen team <apihelp@docusign.com>
 * @license     The Docusign PHP Client SDK is licensed under the MIT License.
 * @link        https://github.com/swagger-api/swagger-codegen
 */
class UserInformation implements ModelInterface, ArrayAccess
{
    const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $swaggerModelName = 'userInformation';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerTypes = [
        'activation_access_code' => '?string',
        'company' => '?string',
        'connect_configurations' => '\DocuSign\eSign\Model\ConnectUserObject[]',
        'country_code' => '?string',
        'created_date_time' => '?string',
        'custom_settings' => '\DocuSign\eSign\Model\NameValue[]',
        'default_account_id' => '?string',
        'email' => '?string',
        'enable_connect_for_user' => '?string',
        'error_details' => '\DocuSign\eSign\Model\ErrorDetails',
        'first_name' => '?string',
        'forgotten_password_info' => '\DocuSign\eSign\Model\ForgottenPasswordInformation',
        'group_list' => '\DocuSign\eSign\Model\Group[]',
        'has_remote_notary' => '?bool',
        'home_address' => '\DocuSign\eSign\Model\AddressInformation',
        'initials_image_uri' => '?string',
        'is_admin' => '?string',
        'is_alternate_admin' => '?string',
        'is_managed_by_scim' => '?string',
        'is_membership_managed_by_scim' => '?string',
        'is_nar_enabled' => '?string',
        'job_title' => '?string',
        'last_login' => '?string',
        'last_name' => '?string',
        'license_status' => '?string',
        'license_type' => '?string',
        'login_status' => '?string',
        'middle_name' => '?string',
        'password' => '?string',
        'password_expiration' => '?string',
        'permission_profile_id' => '?string',
        'permission_profile_name' => '?string',
        'profile_image_uri' => '?string',
        'send_activation_email' => '?string',
        'send_activation_on_invalid_login' => '?string',
        'signature_image_uri' => '?string',
        'subscribe' => '?string',
        'suffix_name' => '?string',
        'title' => '?string',
        'uri' => '?string',
        'user_added_to_account_date_time' => '?string',
        'user_id' => '?string',
        'user_name' => '?string',
        'user_profile_last_modified_date' => '?string',
        'user_settings' => '\DocuSign\eSign\Model\UserSettingsInformation',
        'user_status' => '?string',
        'user_type' => '?string',
        'work_address' => '\DocuSign\eSign\Model\AddressInformation'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerFormats = [
        'activation_access_code' => null,
        'company' => null,
        'connect_configurations' => null,
        'country_code' => null,
        'created_date_time' => null,
        'custom_settings' => null,
        'default_account_id' => null,
        'email' => null,
        'enable_connect_for_user' => null,
        'error_details' => null,
        'first_name' => null,
        'forgotten_password_info' => null,
        'group_list' => null,
        'has_remote_notary' => null,
        'home_address' => null,
        'initials_image_uri' => null,
        'is_admin' => null,
        'is_alternate_admin' => null,
        'is_managed_by_scim' => null,
        'is_membership_managed_by_scim' => null,
        'is_nar_enabled' => null,
        'job_title' => null,
        'last_login' => null,
        'last_name' => null,
        'license_status' => null,
        'license_type' => null,
        'login_status' => null,
        'middle_name' => null,
        'password' => null,
        'password_expiration' => null,
        'permission_profile_id' => null,
        'permission_profile_name' => null,
        'profile_image_uri' => null,
        'send_activation_email' => null,
        'send_activation_on_invalid_login' => null,
        'signature_image_uri' => null,
        'subscribe' => null,
        'suffix_name' => null,
        'title' => null,
        'uri' => null,
        'user_added_to_account_date_time' => null,
        'user_id' => null,
        'user_name' => null,
        'user_profile_last_modified_date' => null,
        'user_settings' => null,
        'user_status' => null,
        'user_type' => null,
        'work_address' => null
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerTypes()
    {
        return self::$swaggerTypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerFormats()
    {
        return self::$swaggerFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'activation_access_code' => 'activationAccessCode',
        'company' => 'company',
        'connect_configurations' => 'connectConfigurations',
        'country_code' => 'countryCode',
        'created_date_time' => 'createdDateTime',
        'custom_settings' => 'customSettings',
        'default_account_id' => 'defaultAccountId',
        'email' => 'email',
        'enable_connect_for_user' => 'enableConnectForUser',
        'error_details' => 'errorDetails',
        'first_name' => 'firstName',
        'forgotten_password_info' => 'forgottenPasswordInfo',
        'group_list' => 'groupList',
        'has_remote_notary' => 'hasRemoteNotary',
        'home_address' => 'homeAddress',
        'initials_image_uri' => 'initialsImageUri',
        'is_admin' => 'isAdmin',
        'is_alternate_admin' => 'isAlternateAdmin',
        'is_managed_by_scim' => 'isManagedByScim',
        'is_membership_managed_by_scim' => 'isMembershipManagedByScim',
        'is_nar_enabled' => 'isNAREnabled',
        'job_title' => 'jobTitle',
        'last_login' => 'lastLogin',
        'last_name' => 'lastName',
        'license_status' => 'licenseStatus',
        'license_type' => 'licenseType',
        'login_status' => 'loginStatus',
        'middle_name' => 'middleName',
        'password' => 'password',
        'password_expiration' => 'passwordExpiration',
        'permission_profile_id' => 'permissionProfileId',
        'permission_profile_name' => 'permissionProfileName',
        'profile_image_uri' => 'profileImageUri',
        'send_activation_email' => 'sendActivationEmail',
        'send_activation_on_invalid_login' => 'sendActivationOnInvalidLogin',
        'signature_image_uri' => 'signatureImageUri',
        'subscribe' => 'subscribe',
        'suffix_name' => 'suffixName',
        'title' => 'title',
        'uri' => 'uri',
        'user_added_to_account_date_time' => 'userAddedToAccountDateTime',
        'user_id' => 'userId',
        'user_name' => 'userName',
        'user_profile_last_modified_date' => 'userProfileLastModifiedDate',
        'user_settings' => 'userSettings',
        'user_status' => 'userStatus',
        'user_type' => 'userType',
        'work_address' => 'workAddress'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'activation_access_code' => 'setActivationAccessCode',
        'company' => 'setCompany',
        'connect_configurations' => 'setConnectConfigurations',
        'country_code' => 'setCountryCode',
        'created_date_time' => 'setCreatedDateTime',
        'custom_settings' => 'setCustomSettings',
        'default_account_id' => 'setDefaultAccountId',
        'email' => 'setEmail',
        'enable_connect_for_user' => 'setEnableConnectForUser',
        'error_details' => 'setErrorDetails',
        'first_name' => 'setFirstName',
        'forgotten_password_info' => 'setForgottenPasswordInfo',
        'group_list' => 'setGroupList',
        'has_remote_notary' => 'setHasRemoteNotary',
        'home_address' => 'setHomeAddress',
        'initials_image_uri' => 'setInitialsImageUri',
        'is_admin' => 'setIsAdmin',
        'is_alternate_admin' => 'setIsAlternateAdmin',
        'is_managed_by_scim' => 'setIsManagedByScim',
        'is_membership_managed_by_scim' => 'setIsMembershipManagedByScim',
        'is_nar_enabled' => 'setIsNarEnabled',
        'job_title' => 'setJobTitle',
        'last_login' => 'setLastLogin',
        'last_name' => 'setLastName',
        'license_status' => 'setLicenseStatus',
        'license_type' => 'setLicenseType',
        'login_status' => 'setLoginStatus',
        'middle_name' => 'setMiddleName',
        'password' => 'setPassword',
        'password_expiration' => 'setPasswordExpiration',
        'permission_profile_id' => 'setPermissionProfileId',
        'permission_profile_name' => 'setPermissionProfileName',
        'profile_image_uri' => 'setProfileImageUri',
        'send_activation_email' => 'setSendActivationEmail',
        'send_activation_on_invalid_login' => 'setSendActivationOnInvalidLogin',
        'signature_image_uri' => 'setSignatureImageUri',
        'subscribe' => 'setSubscribe',
        'suffix_name' => 'setSuffixName',
        'title' => 'setTitle',
        'uri' => 'setUri',
        'user_added_to_account_date_time' => 'setUserAddedToAccountDateTime',
        'user_id' => 'setUserId',
        'user_name' => 'setUserName',
        'user_profile_last_modified_date' => 'setUserProfileLastModifiedDate',
        'user_settings' => 'setUserSettings',
        'user_status' => 'setUserStatus',
        'user_type' => 'setUserType',
        'work_address' => 'setWorkAddress'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'activation_access_code' => 'getActivationAccessCode',
        'company' => 'getCompany',
        'connect_configurations' => 'getConnectConfigurations',
        'country_code' => 'getCountryCode',
        'created_date_time' => 'getCreatedDateTime',
        'custom_settings' => 'getCustomSettings',
        'default_account_id' => 'getDefaultAccountId',
        'email' => 'getEmail',
        'enable_connect_for_user' => 'getEnableConnectForUser',
        'error_details' => 'getErrorDetails',
        'first_name' => 'getFirstName',
        'forgotten_password_info' => 'getForgottenPasswordInfo',
        'group_list' => 'getGroupList',
        'has_remote_notary' => 'getHasRemoteNotary',
        'home_address' => 'getHomeAddress',
        'initials_image_uri' => 'getInitialsImageUri',
        'is_admin' => 'getIsAdmin',
        'is_alternate_admin' => 'getIsAlternateAdmin',
        'is_managed_by_scim' => 'getIsManagedByScim',
        'is_membership_managed_by_scim' => 'getIsMembershipManagedByScim',
        'is_nar_enabled' => 'getIsNarEnabled',
        'job_title' => 'getJobTitle',
        'last_login' => 'getLastLogin',
        'last_name' => 'getLastName',
        'license_status' => 'getLicenseStatus',
        'license_type' => 'getLicenseType',
        'login_status' => 'getLoginStatus',
        'middle_name' => 'getMiddleName',
        'password' => 'getPassword',
        'password_expiration' => 'getPasswordExpiration',
        'permission_profile_id' => 'getPermissionProfileId',
        'permission_profile_name' => 'getPermissionProfileName',
        'profile_image_uri' => 'getProfileImageUri',
        'send_activation_email' => 'getSendActivationEmail',
        'send_activation_on_invalid_login' => 'getSendActivationOnInvalidLogin',
        'signature_image_uri' => 'getSignatureImageUri',
        'subscribe' => 'getSubscribe',
        'suffix_name' => 'getSuffixName',
        'title' => 'getTitle',
        'uri' => 'getUri',
        'user_added_to_account_date_time' => 'getUserAddedToAccountDateTime',
        'user_id' => 'getUserId',
        'user_name' => 'getUserName',
        'user_profile_last_modified_date' => 'getUserProfileLastModifiedDate',
        'user_settings' => 'getUserSettings',
        'user_status' => 'getUserStatus',
        'user_type' => 'getUserType',
        'work_address' => 'getWorkAddress'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$swaggerModelName;
    }

    

    

    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['activation_access_code'] = isset($data['activation_access_code']) ? $data['activation_access_code'] : null;
        $this->container['company'] = isset($data['company']) ? $data['company'] : null;
        $this->container['connect_configurations'] = isset($data['connect_configurations']) ? $data['connect_configurations'] : null;
        $this->container['country_code'] = isset($data['country_code']) ? $data['country_code'] : null;
        $this->container['created_date_time'] = isset($data['created_date_time']) ? $data['created_date_time'] : null;
        $this->container['custom_settings'] = isset($data['custom_settings']) ? $data['custom_settings'] : null;
        $this->container['default_account_id'] = isset($data['default_account_id']) ? $data['default_account_id'] : null;
        $this->container['email'] = isset($data['email']) ? $data['email'] : null;
        $this->container['enable_connect_for_user'] = isset($data['enable_connect_for_user']) ? $data['enable_connect_for_user'] : null;
        $this->container['error_details'] = isset($data['error_details']) ? $data['error_details'] : null;
        $this->container['first_name'] = isset($data['first_name']) ? $data['first_name'] : null;
        $this->container['forgotten_password_info'] = isset($data['forgotten_password_info']) ? $data['forgotten_password_info'] : null;
        $this->container['group_list'] = isset($data['group_list']) ? $data['group_list'] : null;
        $this->container['has_remote_notary'] = isset($data['has_remote_notary']) ? $data['has_remote_notary'] : null;
        $this->container['home_address'] = isset($data['home_address']) ? $data['home_address'] : null;
        $this->container['initials_image_uri'] = isset($data['initials_image_uri']) ? $data['initials_image_uri'] : null;
        $this->container['is_admin'] = isset($data['is_admin']) ? $data['is_admin'] : null;
        $this->container['is_alternate_admin'] = isset($data['is_alternate_admin']) ? $data['is_alternate_admin'] : null;
        $this->container['is_managed_by_scim'] = isset($data['is_managed_by_scim']) ? $data['is_managed_by_scim'] : null;
        $this->container['is_membership_managed_by_scim'] = isset($data['is_membership_managed_by_scim']) ? $data['is_membership_managed_by_scim'] : null;
        $this->container['is_nar_enabled'] = isset($data['is_nar_enabled']) ? $data['is_nar_enabled'] : null;
        $this->container['job_title'] = isset($data['job_title']) ? $data['job_title'] : null;
        $this->container['last_login'] = isset($data['last_login']) ? $data['last_login'] : null;
        $this->container['last_name'] = isset($data['last_name']) ? $data['last_name'] : null;
        $this->container['license_status'] = isset($data['license_status']) ? $data['license_status'] : null;
        $this->container['license_type'] = isset($data['license_type']) ? $data['license_type'] : null;
        $this->container['login_status'] = isset($data['login_status']) ? $data['login_status'] : null;
        $this->container['middle_name'] = isset($data['middle_name']) ? $data['middle_name'] : null;
        $this->container['password'] = isset($data['password']) ? $data['password'] : null;
        $this->container['password_expiration'] = isset($data['password_expiration']) ? $data['password_expiration'] : null;
        $this->container['permission_profile_id'] = isset($data['permission_profile_id']) ? $data['permission_profile_id'] : null;
        $this->container['permission_profile_name'] = isset($data['permission_profile_name']) ? $data['permission_profile_name'] : null;
        $this->container['profile_image_uri'] = isset($data['profile_image_uri']) ? $data['profile_image_uri'] : null;
        $this->container['send_activation_email'] = isset($data['send_activation_email']) ? $data['send_activation_email'] : null;
        $this->container['send_activation_on_invalid_login'] = isset($data['send_activation_on_invalid_login']) ? $data['send_activation_on_invalid_login'] : null;
        $this->container['signature_image_uri'] = isset($data['signature_image_uri']) ? $data['signature_image_uri'] : null;
        $this->container['subscribe'] = isset($data['subscribe']) ? $data['subscribe'] : null;
        $this->container['suffix_name'] = isset($data['suffix_name']) ? $data['suffix_name'] : null;
        $this->container['title'] = isset($data['title']) ? $data['title'] : null;
        $this->container['uri'] = isset($data['uri']) ? $data['uri'] : null;
        $this->container['user_added_to_account_date_time'] = isset($data['user_added_to_account_date_time']) ? $data['user_added_to_account_date_time'] : null;
        $this->container['user_id'] = isset($data['user_id']) ? $data['user_id'] : null;
        $this->container['user_name'] = isset($data['user_name']) ? $data['user_name'] : null;
        $this->container['user_profile_last_modified_date'] = isset($data['user_profile_last_modified_date']) ? $data['user_profile_last_modified_date'] : null;
        $this->container['user_settings'] = isset($data['user_settings']) ? $data['user_settings'] : null;
        $this->container['user_status'] = isset($data['user_status']) ? $data['user_status'] : null;
        $this->container['user_type'] = isset($data['user_type']) ? $data['user_type'] : null;
        $this->container['work_address'] = isset($data['work_address']) ? $data['work_address'] : null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets activation_access_code
     *
     * @return ?string
     */
    public function getActivationAccessCode()
    {
        return $this->container['activation_access_code'];
    }

    /**
     * Sets activation_access_code
     *
     * @param ?string $activation_access_code The activation code the new user must enter when activating their account.
     *
     * @return $this
     */
    public function setActivationAccessCode($activation_access_code)
    {
        $this->container['activation_access_code'] = $activation_access_code;

        return $this;
    }

    /**
     * Gets company
     *
     * @return ?string
     */
    public function getCompany()
    {
        return $this->container['company'];
    }

    /**
     * Sets company
     *
     * @param ?string $company 
     *
     * @return $this
     */
    public function setCompany($company)
    {
        $this->container['company'] = $company;

        return $this;
    }

    /**
     * Gets connect_configurations
     *
     * @return \DocuSign\eSign\Model\ConnectUserObject[]
     */
    public function getConnectConfigurations()
    {
        return $this->container['connect_configurations'];
    }

    /**
     * Sets connect_configurations
     *
     * @param \DocuSign\eSign\Model\ConnectUserObject[] $connect_configurations 
     *
     * @return $this
     */
    public function setConnectConfigurations($connect_configurations)
    {
        $this->container['connect_configurations'] = $connect_configurations;

        return $this;
    }

    /**
     * Gets country_code
     *
     * @return ?string
     */
    public function getCountryCode()
    {
        return $this->container['country_code'];
    }

    /**
     * Sets country_code
     *
     * @param ?string $country_code 
     *
     * @return $this
     */
    public function setCountryCode($country_code)
    {
        $this->container['country_code'] = $country_code;

        return $this;
    }

    /**
     * Gets created_date_time
     *
     * @return ?string
     */
    public function getCreatedDateTime()
    {
        return $this->container['created_date_time'];
    }

    /**
     * Sets created_date_time
     *
     * @param ?string $created_date_time Indicates the date and time the item was created.
     *
     * @return $this
     */
    public function setCreatedDateTime($created_date_time)
    {
        $this->container['created_date_time'] = $created_date_time;

        return $this;
    }

    /**
     * Gets custom_settings
     *
     * @return \DocuSign\eSign\Model\NameValue[]
     */
    public function getCustomSettings()
    {
        return $this->container['custom_settings'];
    }

    /**
     * Sets custom_settings
     *
     * @param \DocuSign\eSign\Model\NameValue[] $custom_settings The name/value pair information for the user custom setting.
     *
     * @return $this
     */
    public function setCustomSettings($custom_settings)
    {
        $this->container['custom_settings'] = $custom_settings;

        return $this;
    }

    /**
     * Gets default_account_id
     *
     * @return ?string
     */
    public function getDefaultAccountId()
    {
        return $this->container['default_account_id'];
    }

    /**
     * Sets default_account_id
     *
     * @param ?string $default_account_id 
     *
     * @return $this
     */
    public function setDefaultAccountId($default_account_id)
    {
        $this->container['default_account_id'] = $default_account_id;

        return $this;
    }

    /**
     * Gets email
     *
     * @return ?string
     */
    public function getEmail()
    {
        return $this->container['email'];
    }

    /**
     * Sets email
     *
     * @param ?string $email 
     *
     * @return $this
     */
    public function setEmail($email)
    {
        $this->container['email'] = $email;

        return $this;
    }

    /**
     * Gets enable_connect_for_user
     *
     * @return ?string
     */
    public function getEnableConnectForUser()
    {
        return $this->container['enable_connect_for_user'];
    }

    /**
     * Sets enable_connect_for_user
     *
     * @param ?string $enable_connect_for_user Specifies whether the user is enabled for updates from DocuSign Connect. Valid values: true or false.
     *
     * @return $this
     */
    public function setEnableConnectForUser($enable_connect_for_user)
    {
        $this->container['enable_connect_for_user'] = $enable_connect_for_user;

        return $this;
    }

    /**
     * Gets error_details
     *
     * @return \DocuSign\eSign\Model\ErrorDetails
     */
    public function getErrorDetails()
    {
        return $this->container['error_details'];
    }

    /**
     * Sets error_details
     *
     * @param \DocuSign\eSign\Model\ErrorDetails $error_details Array or errors.
     *
     * @return $this
     */
    public function setErrorDetails($error_details)
    {
        $this->container['error_details'] = $error_details;

        return $this;
    }

    /**
     * Gets first_name
     *
     * @return ?string
     */
    public function getFirstName()
    {
        return $this->container['first_name'];
    }

    /**
     * Sets first_name
     *
     * @param ?string $first_name The user's first name.  Maximum Length: 50 characters.
     *
     * @return $this
     */
    public function setFirstName($first_name)
    {
        $this->container['first_name'] = $first_name;

        return $this;
    }

    /**
     * Gets forgotten_password_info
     *
     * @return \DocuSign\eSign\Model\ForgottenPasswordInformation
     */
    public function getForgottenPasswordInfo()
    {
        return $this->container['forgotten_password_info'];
    }

    /**
     * Sets forgotten_password_info
     *
     * @param \DocuSign\eSign\Model\ForgottenPasswordInformation $forgotten_password_info A complex element containing up to four Question/Answer pairs for forgotten password information.
     *
     * @return $this
     */
    public function setForgottenPasswordInfo($forgotten_password_info)
    {
        $this->container['forgotten_password_info'] = $forgotten_password_info;

        return $this;
    }

    /**
     * Gets group_list
     *
     * @return \DocuSign\eSign\Model\Group[]
     */
    public function getGroupList()
    {
        return $this->container['group_list'];
    }

    /**
     * Sets group_list
     *
     * @param \DocuSign\eSign\Model\Group[] $group_list A list of the group information for groups to add the user to. Group information can be found by calling [ML:GET group information]. The only required parameter is groupId.   The parameters are:  * groupId - The DocuSign group ID for the group. * groupName - The name of the group * permissionProfileId - The ID of the permission profile associated with the group. * groupType - The group type.
     *
     * @return $this
     */
    public function setGroupList($group_list)
    {
        $this->container['group_list'] = $group_list;

        return $this;
    }

    /**
     * Gets has_remote_notary
     *
     * @return ?bool
     */
    public function getHasRemoteNotary()
    {
        return $this->container['has_remote_notary'];
    }

    /**
     * Sets has_remote_notary
     *
     * @param ?bool $has_remote_notary 
     *
     * @return $this
     */
    public function setHasRemoteNotary($has_remote_notary)
    {
        $this->container['has_remote_notary'] = $has_remote_notary;

        return $this;
    }

    /**
     * Gets home_address
     *
     * @return \DocuSign\eSign\Model\AddressInformation
     */
    public function getHomeAddress()
    {
        return $this->container['home_address'];
    }

    /**
     * Sets home_address
     *
     * @param \DocuSign\eSign\Model\AddressInformation $home_address Specifies the email for the signing host. It is a Required element for In Person Signers recipient Type.  Maximum Length: 100 characters.
     *
     * @return $this
     */
    public function setHomeAddress($home_address)
    {
        $this->container['home_address'] = $home_address;

        return $this;
    }

    /**
     * Gets initials_image_uri
     *
     * @return ?string
     */
    public function getInitialsImageUri()
    {
        return $this->container['initials_image_uri'];
    }

    /**
     * Sets initials_image_uri
     *
     * @param ?string $initials_image_uri Contains the URI for an endpoint that you can use to retrieve the initials image.
     *
     * @return $this
     */
    public function setInitialsImageUri($initials_image_uri)
    {
        $this->container['initials_image_uri'] = $initials_image_uri;

        return $this;
    }

    /**
     * Gets is_admin
     *
     * @return ?string
     */
    public function getIsAdmin()
    {
        return $this->container['is_admin'];
    }

    /**
     * Sets is_admin
     *
     * @param ?string $is_admin Determines if the feature set is actively set as part of the plan.
     *
     * @return $this
     */
    public function setIsAdmin($is_admin)
    {
        $this->container['is_admin'] = $is_admin;

        return $this;
    }

    /**
     * Gets is_alternate_admin
     *
     * @return ?string
     */
    public function getIsAlternateAdmin()
    {
        return $this->container['is_alternate_admin'];
    }

    /**
     * Sets is_alternate_admin
     *
     * @param ?string $is_alternate_admin 
     *
     * @return $this
     */
    public function setIsAlternateAdmin($is_alternate_admin)
    {
        $this->container['is_alternate_admin'] = $is_alternate_admin;

        return $this;
    }

    /**
     * Gets is_managed_by_scim
     *
     * @return ?string
     */
    public function getIsManagedByScim()
    {
        return $this->container['is_managed_by_scim'];
    }

    /**
     * Sets is_managed_by_scim
     *
     * @param ?string $is_managed_by_scim 
     *
     * @return $this
     */
    public function setIsManagedByScim($is_managed_by_scim)
    {
        $this->container['is_managed_by_scim'] = $is_managed_by_scim;

        return $this;
    }

    /**
     * Gets is_membership_managed_by_scim
     *
     * @return ?string
     */
    public function getIsMembershipManagedByScim()
    {
        return $this->container['is_membership_managed_by_scim'];
    }

    /**
     * Sets is_membership_managed_by_scim
     *
     * @param ?string $is_membership_managed_by_scim 
     *
     * @return $this
     */
    public function setIsMembershipManagedByScim($is_membership_managed_by_scim)
    {
        $this->container['is_membership_managed_by_scim'] = $is_membership_managed_by_scim;

        return $this;
    }

    /**
     * Gets is_nar_enabled
     *
     * @return ?string
     */
    public function getIsNarEnabled()
    {
        return $this->container['is_nar_enabled'];
    }

    /**
     * Sets is_nar_enabled
     *
     * @param ?string $is_nar_enabled 
     *
     * @return $this
     */
    public function setIsNarEnabled($is_nar_enabled)
    {
        $this->container['is_nar_enabled'] = $is_nar_enabled;

        return $this;
    }

    /**
     * Gets job_title
     *
     * @return ?string
     */
    public function getJobTitle()
    {
        return $this->container['job_title'];
    }

    /**
     * Sets job_title
     *
     * @param ?string $job_title 
     *
     * @return $this
     */
    public function setJobTitle($job_title)
    {
        $this->container['job_title'] = $job_title;

        return $this;
    }

    /**
     * Gets last_login
     *
     * @return ?string
     */
    public function getLastLogin()
    {
        return $this->container['last_login'];
    }

    /**
     * Sets last_login
     *
     * @param ?string $last_login Shows the date-time when the user last logged on to the system.
     *
     * @return $this
     */
    public function setLastLogin($last_login)
    {
        $this->container['last_login'] = $last_login;

        return $this;
    }

    /**
     * Gets last_name
     *
     * @return ?string
     */
    public function getLastName()
    {
        return $this->container['last_name'];
    }

    /**
     * Sets last_name
     *
     * @param ?string $last_name The user's last name.  Maximum Length: 50 characters.
     *
     * @return $this
     */
    public function setLastName($last_name)
    {
        $this->container['last_name'] = $last_name;

        return $this;
    }

    /**
     * Gets license_status
     *
     * @return ?string
     */
    public function getLicenseStatus()
    {
        return $this->container['license_status'];
    }

    /**
     * Sets license_status
     *
     * @param ?string $license_status 
     *
     * @return $this
     */
    public function setLicenseStatus($license_status)
    {
        $this->container['license_status'] = $license_status;

        return $this;
    }

    /**
     * Gets license_type
     *
     * @return ?string
     */
    public function getLicenseType()
    {
        return $this->container['license_type'];
    }

    /**
     * Sets license_type
     *
     * @param ?string $license_type 
     *
     * @return $this
     */
    public function setLicenseType($license_type)
    {
        $this->container['license_type'] = $license_type;

        return $this;
    }

    /**
     * Gets login_status
     *
     * @return ?string
     */
    public function getLoginStatus()
    {
        return $this->container['login_status'];
    }

    /**
     * Sets login_status
     *
     * @param ?string $login_status Shows the current status of the user's password. Possible values are:   * password_reset * password_active * password_expired * password_locked * password_reset_failed
     *
     * @return $this
     */
    public function setLoginStatus($login_status)
    {
        $this->container['login_status'] = $login_status;

        return $this;
    }

    /**
     * Gets middle_name
     *
     * @return ?string
     */
    public function getMiddleName()
    {
        return $this->container['middle_name'];
    }

    /**
     * Sets middle_name
     *
     * @param ?string $middle_name The user's middle name.  Maximum Length: 50 characters.
     *
     * @return $this
     */
    public function setMiddleName($middle_name)
    {
        $this->container['middle_name'] = $middle_name;

        return $this;
    }

    /**
     * Gets password
     *
     * @return ?string
     */
    public function getPassword()
    {
        return $this->container['password'];
    }

    /**
     * Sets password
     *
     * @param ?string $password 
     *
     * @return $this
     */
    public function setPassword($password)
    {
        $this->container['password'] = $password;

        return $this;
    }

    /**
     * Gets password_expiration
     *
     * @return ?string
     */
    public function getPasswordExpiration()
    {
        return $this->container['password_expiration'];
    }

    /**
     * Sets password_expiration
     *
     * @param ?string $password_expiration 
     *
     * @return $this
     */
    public function setPasswordExpiration($password_expiration)
    {
        $this->container['password_expiration'] = $password_expiration;

        return $this;
    }

    /**
     * Gets permission_profile_id
     *
     * @return ?string
     */
    public function getPermissionProfileId()
    {
        return $this->container['permission_profile_id'];
    }

    /**
     * Sets permission_profile_id
     *
     * @param ?string $permission_profile_id 
     *
     * @return $this
     */
    public function setPermissionProfileId($permission_profile_id)
    {
        $this->container['permission_profile_id'] = $permission_profile_id;

        return $this;
    }

    /**
     * Gets permission_profile_name
     *
     * @return ?string
     */
    public function getPermissionProfileName()
    {
        return $this->container['permission_profile_name'];
    }

    /**
     * Sets permission_profile_name
     *
     * @param ?string $permission_profile_name 
     *
     * @return $this
     */
    public function setPermissionProfileName($permission_profile_name)
    {
        $this->container['permission_profile_name'] = $permission_profile_name;

        return $this;
    }

    /**
     * Gets profile_image_uri
     *
     * @return ?string
     */
    public function getProfileImageUri()
    {
        return $this->container['profile_image_uri'];
    }

    /**
     * Sets profile_image_uri
     *
     * @param ?string $profile_image_uri 
     *
     * @return $this
     */
    public function setProfileImageUri($profile_image_uri)
    {
        $this->container['profile_image_uri'] = $profile_image_uri;

        return $this;
    }

    /**
     * Gets send_activation_email
     *
     * @return ?string
     */
    public function getSendActivationEmail()
    {
        return $this->container['send_activation_email'];
    }

    /**
     * Sets send_activation_email
     *
     * @param ?string $send_activation_email 
     *
     * @return $this
     */
    public function setSendActivationEmail($send_activation_email)
    {
        $this->container['send_activation_email'] = $send_activation_email;

        return $this;
    }

    /**
     * Gets send_activation_on_invalid_login
     *
     * @return ?string
     */
    public function getSendActivationOnInvalidLogin()
    {
        return $this->container['send_activation_on_invalid_login'];
    }

    /**
     * Sets send_activation_on_invalid_login
     *
     * @param ?string $send_activation_on_invalid_login When set to **true**, specifies that an additional activation email is sent to the user if they fail a log on before activating their account.
     *
     * @return $this
     */
    public function setSendActivationOnInvalidLogin($send_activation_on_invalid_login)
    {
        $this->container['send_activation_on_invalid_login'] = $send_activation_on_invalid_login;

        return $this;
    }

    /**
     * Gets signature_image_uri
     *
     * @return ?string
     */
    public function getSignatureImageUri()
    {
        return $this->container['signature_image_uri'];
    }

    /**
     * Sets signature_image_uri
     *
     * @param ?string $signature_image_uri Contains the URI for an endpoint that you can use to retrieve the signature image.
     *
     * @return $this
     */
    public function setSignatureImageUri($signature_image_uri)
    {
        $this->container['signature_image_uri'] = $signature_image_uri;

        return $this;
    }

    /**
     * Gets subscribe
     *
     * @return ?string
     */
    public function getSubscribe()
    {
        return $this->container['subscribe'];
    }

    /**
     * Sets subscribe
     *
     * @param ?string $subscribe 
     *
     * @return $this
     */
    public function setSubscribe($subscribe)
    {
        $this->container['subscribe'] = $subscribe;

        return $this;
    }

    /**
     * Gets suffix_name
     *
     * @return ?string
     */
    public function getSuffixName()
    {
        return $this->container['suffix_name'];
    }

    /**
     * Sets suffix_name
     *
     * @param ?string $suffix_name The suffix for the user's name.   Maximum Length: 50 characters.
     *
     * @return $this
     */
    public function setSuffixName($suffix_name)
    {
        $this->container['suffix_name'] = $suffix_name;

        return $this;
    }

    /**
     * Gets title
     *
     * @return ?string
     */
    public function getTitle()
    {
        return $this->container['title'];
    }

    /**
     * Sets title
     *
     * @param ?string $title The title of the user.
     *
     * @return $this
     */
    public function setTitle($title)
    {
        $this->container['title'] = $title;

        return $this;
    }

    /**
     * Gets uri
     *
     * @return ?string
     */
    public function getUri()
    {
        return $this->container['uri'];
    }

    /**
     * Sets uri
     *
     * @param ?string $uri 
     *
     * @return $this
     */
    public function setUri($uri)
    {
        $this->container['uri'] = $uri;

        return $this;
    }

    /**
     * Gets user_added_to_account_date_time
     *
     * @return ?string
     */
    public function getUserAddedToAccountDateTime()
    {
        return $this->container['user_added_to_account_date_time'];
    }

    /**
     * Sets user_added_to_account_date_time
     *
     * @param ?string $user_added_to_account_date_time 
     *
     * @return $this
     */
    public function setUserAddedToAccountDateTime($user_added_to_account_date_time)
    {
        $this->container['user_added_to_account_date_time'] = $user_added_to_account_date_time;

        return $this;
    }

    /**
     * Gets user_id
     *
     * @return ?string
     */
    public function getUserId()
    {
        return $this->container['user_id'];
    }

    /**
     * Sets user_id
     *
     * @param ?string $user_id 
     *
     * @return $this
     */
    public function setUserId($user_id)
    {
        $this->container['user_id'] = $user_id;

        return $this;
    }

    /**
     * Gets user_name
     *
     * @return ?string
     */
    public function getUserName()
    {
        return $this->container['user_name'];
    }

    /**
     * Sets user_name
     *
     * @param ?string $user_name 
     *
     * @return $this
     */
    public function setUserName($user_name)
    {
        $this->container['user_name'] = $user_name;

        return $this;
    }

    /**
     * Gets user_profile_last_modified_date
     *
     * @return ?string
     */
    public function getUserProfileLastModifiedDate()
    {
        return $this->container['user_profile_last_modified_date'];
    }

    /**
     * Sets user_profile_last_modified_date
     *
     * @param ?string $user_profile_last_modified_date 
     *
     * @return $this
     */
    public function setUserProfileLastModifiedDate($user_profile_last_modified_date)
    {
        $this->container['user_profile_last_modified_date'] = $user_profile_last_modified_date;

        return $this;
    }

    /**
     * Gets user_settings
     *
     * @return \DocuSign\eSign\Model\UserSettingsInformation
     */
    public function getUserSettings()
    {
        return $this->container['user_settings'];
    }

    /**
     * Sets user_settings
     *
     * @param \DocuSign\eSign\Model\UserSettingsInformation $user_settings The name/value pair information for user settings. These determine the actions that a user can take in the account. The `[ML:userSettings]` are listed and described below.
     *
     * @return $this
     */
    public function setUserSettings($user_settings)
    {
        $this->container['user_settings'] = $user_settings;

        return $this;
    }

    /**
     * Gets user_status
     *
     * @return ?string
     */
    public function getUserStatus()
    {
        return $this->container['user_status'];
    }

    /**
     * Sets user_status
     *
     * @param ?string $user_status 
     *
     * @return $this
     */
    public function setUserStatus($user_status)
    {
        $this->container['user_status'] = $user_status;

        return $this;
    }

    /**
     * Gets user_type
     *
     * @return ?string
     */
    public function getUserType()
    {
        return $this->container['user_type'];
    }

    /**
     * Sets user_type
     *
     * @param ?string $user_type 
     *
     * @return $this
     */
    public function setUserType($user_type)
    {
        $this->container['user_type'] = $user_type;

        return $this;
    }

    /**
     * Gets work_address
     *
     * @return \DocuSign\eSign\Model\AddressInformation
     */
    public function getWorkAddress()
    {
        return $this->container['work_address'];
    }

    /**
     * Sets work_address
     *
     * @param \DocuSign\eSign\Model\AddressInformation $work_address 
     *
     * @return $this
     */
    public function setWorkAddress($work_address)
    {
        $this->container['work_address'] = $work_address;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    #[\ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed
     */
    #[\ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    /**
     * Sets value based on offset.
     *
     * @param integer $offset Offset
     * @param mixed   $value  Value to be set
     *
     * @return void
     */
    #[\ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    #[\ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
            return json_encode(
                ObjectSerializer::sanitizeForSerialization($this),
                JSON_PRETTY_PRINT
            );
        }

        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}

