Platform API

<back to all web services

GetContacts

Get contacts connected to the current contact or licensee (if managing licensee contacts) by criteria

Requires Authentication
The following routes are available for this service:
All Verbs/api/contacts
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


enum SortOrder : string
{
    case Ascending = 'Ascending';
    case Descending = 'Descending';
}

class PagedModel implements JsonSerializable
{
    public function __construct(
        /** @description Page Number to retrieve */
        // @ApiMember(DataType="int", Description="Page Number to retrieve", Name="PageNumber")
        /** @var int */
        public int $PageNumber=0,

        /** @description Number of records to retrieve */
        // @ApiMember(DataType="int", Description="Number of records to retrieve", Name="PageSize")
        /** @var int */
        public int $PageSize=0,

        /** @description Index of field to sort results by */
        // @ApiMember(DataType="int", Description="Index of field to sort results by", Name="SortIndex")
        /** @var int */
        public int $SortIndex=0,

        /** @description Sort Order - Ascending or Descending */
        // @ApiMember(DataType="int", Description="Sort Order - Ascending or Descending", Name="SortOrder")
        /** @var SortOrder|null */
        public ?SortOrder $SortOrder=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['PageNumber'])) $this->PageNumber = $o['PageNumber'];
        if (isset($o['PageSize'])) $this->PageSize = $o['PageSize'];
        if (isset($o['SortIndex'])) $this->SortIndex = $o['SortIndex'];
        if (isset($o['SortOrder'])) $this->SortOrder = JsonConverters::from('SortOrder', $o['SortOrder']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->PageNumber)) $o['PageNumber'] = $this->PageNumber;
        if (isset($this->PageSize)) $o['PageSize'] = $this->PageSize;
        if (isset($this->SortIndex)) $o['SortIndex'] = $this->SortIndex;
        if (isset($this->SortOrder)) $o['SortOrder'] = JsonConverters::to('SortOrder', $this->SortOrder);
        return empty($o) ? new class(){} : $o;
    }
}

class UserProfileSummaryModel implements JsonSerializable
{
    public function __construct(
        /** @description User Profile Id */
        // @ApiMember(DataType="Guid", Description="User Profile Id", Name="UserProfileId")
        /** @var string */
        public string $UserProfileId='',

        /** @description User linked to the profile */
        // @ApiMember(DataType="Guid", Description="User linked to the profile", Name="UserId")
        /** @var string */
        public string $UserId='',

        /** @description Contact linked to the profile */
        // @ApiMember(DataType="Guid", Description="Contact linked to the profile", Name="ContactId")
        /** @var string */
        public string $ContactId='',

        /** @description User linked to the profile */
        // @ApiMember(DataType="string", Description="User linked to the profile", Name="UserName")
        /** @var string|null */
        public ?string $UserName=null,

        /** @description User Profile Name */
        // @ApiMember(DataType="string", Description="User Profile Name", Name="ProfileName")
        /** @var string|null */
        public ?string $ProfileName=null,

        /** @description Full name of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Full name of the contact linked to the profile", Name="ContactFullName")
        /** @var string|null */
        public ?string $ContactFullName=null,

        /** @description Email Address of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Email Address of the contact linked to the profile", Name="EmailAddress")
        /** @var string|null */
        public ?string $EmailAddress=null,

        /** @description Email signature of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Email signature of the contact linked to the profile", Name="EmailSignature")
        /** @var string|null */
        public ?string $EmailSignature=null,

        /** @description Mobile number of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Mobile number of the contact linked to the profile", Name="MobileNumber")
        /** @var string|null */
        public ?string $MobileNumber=null,

        /** @description Phone number of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Phone number of the contact linked to the profile", Name="PhoneNumber")
        /** @var string|null */
        public ?string $PhoneNumber=null,

        /** @description Type of contact (person, organisation etc.) linked to the profile */
        // @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeId")
        /** @var string */
        public string $ContactTypeId='',

        /** @description Type of contact (person, organisation etc.) linked to the profile */
        // @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeName")
        /** @var string|null */
        public ?string $ContactTypeName=null,

        /** @description First name of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="First name of the contact linked to the profile", Name="FirstName")
        /** @var string|null */
        public ?string $FirstName=null,

        /** @description Surname of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Surname of the contact linked to the profile", Name="Surname")
        /** @var string|null */
        public ?string $Surname=null,

        /** @description Title of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Title of contact linked to the profile", Name="Title")
        /** @var string|null */
        public ?string $Title=null,

        /** @description Legal name of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Legal name of contact linked to the profile", Name="LegalName")
        /** @var string|null */
        public ?string $LegalName=null,

        /** @description Trading name of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Trading name of contact linked to the profile", Name="TradingName")
        /** @var string|null */
        public ?string $TradingName=null,

        /** @description Australian Business Number */
        // @ApiMember(DataType="string", Description="Australian Business Number", Name="Abn", ParameterType="query")
        /** @var string|null */
        public ?string $Abn=null,

        /** @description Australian Company Number */
        // @ApiMember(DataType="string", Description="Australian Company Number", Name="Acn", ParameterType="query")
        /** @var string|null */
        public ?string $Acn=null,

        /** @description Australian Registered Body Number */
        // @ApiMember(DataType="string", Description="Australian Registered Body Number", Name="Arbn", ParameterType="query")
        /** @var string|null */
        public ?string $Arbn=null,

        /** @description Indicates if the Contact is registered for GST. */
        // @ApiMember(DataType="bool", Description="Indicates if the Contact is registered for GST.", Name="GstRegistered", ParameterType="query")
        /** @var bool|null */
        public ?bool $GstRegistered=null,

        /** @description True if english is a secondary language for the contact. */
        // @ApiMember(DataType="bool", Description="True if english is a secondary language for the contact.", Name="ESL", ParameterType="query")
        /** @var bool|null */
        public ?bool $ESL=null,

        /** @description Language that is the primary language for the contact. */
        // @ApiMember(DataType="string", Description="Language that is the primary language for the contact.", Name="Language", ParameterType="query")
        /** @var string|null */
        public ?string $Language=null,

        /** @description True if an interpreter is required. */
        // @ApiMember(DataType="bool", Description="True if an interpreter is required.", Name="InterpreterRequired", ParameterType="query")
        /** @var bool|null */
        public ?bool $InterpreterRequired=null,

        /** @description Licensee specific notes about the contact. */
        // @ApiMember(DataType="string", Description="Licensee specific notes about the contact.", Name="LicenseeNotes", ParameterType="query")
        /** @var string|null */
        public ?string $LicenseeNotes=null,

        /** @description Profile photo of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Profile photo of contact linked to the profile", Name="ProfilePhotoUrl")
        /** @var string|null */
        public ?string $ProfilePhotoUrl=null,

        /** @description Thumbnail photo of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Thumbnail photo of contact linked to the profile", Name="ProfilePhotoThumbnailUrl")
        /** @var string|null */
        public ?string $ProfilePhotoThumbnailUrl=null,

        /** @description Profile photo id of contact linked to the profile */
        // @ApiMember(DataType="Guid", Description="Profile photo id of contact linked to the profile", Name="ProfileImageId")
        /** @var string */
        public string $ProfileImageId='',

        /** @description Profile description */
        // @ApiMember(DataType="string", Description="Profile description", Name="Description")
        /** @var string|null */
        public ?string $Description=null,

        /** @description Employment Industry */
        // @ApiMember(DataType="string", Description="Employment Industry", Name="EmploymentIndustry")
        /** @var string|null */
        public ?string $EmploymentIndustry=null,

        /** @description Employment Role */
        // @ApiMember(DataType="string", Description="Employment Role", Name="EmploymentRole")
        /** @var string|null */
        public ?string $EmploymentRole=null,

        /** @description Areas of Work */
        // @ApiMember(DataType="string", Description="Areas of Work", Name="EmploymentGeographicArea")
        /** @var string|null */
        public ?string $EmploymentGeographicArea=null,

        /** @description The contacts timezone. */
        // @ApiMember(DataType="Guid", Description="The contacts timezone.", Name="Timezone", ParameterType="query")
        /** @var string */
        public string $Timezone='',

        /** @description Timezone Name */
        // @ApiMember(DataType="string", Description="Timezone Name", Name="TimezoneName", ParameterType="query")
        /** @var string|null */
        public ?string $TimezoneName=null,

        /** @description The primary address of the contact */
        // @ApiMember(DataType="string", Description="The primary address of the contact", Name="PrimaryAddress", ParameterType="query")
        /** @var string|null */
        public ?string $PrimaryAddress=null,

        /** @description Is this an active contact? Or an inactive contact (deleted account)? */
        // @ApiMember(DataType="bool", Description="Is this an active contact? Or an inactive contact (deleted account)?", Name="IsActiveContact")
        /** @var bool|null */
        public ?bool $IsActiveContact=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['UserProfileId'])) $this->UserProfileId = $o['UserProfileId'];
        if (isset($o['UserId'])) $this->UserId = $o['UserId'];
        if (isset($o['ContactId'])) $this->ContactId = $o['ContactId'];
        if (isset($o['UserName'])) $this->UserName = $o['UserName'];
        if (isset($o['ProfileName'])) $this->ProfileName = $o['ProfileName'];
        if (isset($o['ContactFullName'])) $this->ContactFullName = $o['ContactFullName'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['EmailSignature'])) $this->EmailSignature = $o['EmailSignature'];
        if (isset($o['MobileNumber'])) $this->MobileNumber = $o['MobileNumber'];
        if (isset($o['PhoneNumber'])) $this->PhoneNumber = $o['PhoneNumber'];
        if (isset($o['ContactTypeId'])) $this->ContactTypeId = $o['ContactTypeId'];
        if (isset($o['ContactTypeName'])) $this->ContactTypeName = $o['ContactTypeName'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['Surname'])) $this->Surname = $o['Surname'];
        if (isset($o['Title'])) $this->Title = $o['Title'];
        if (isset($o['LegalName'])) $this->LegalName = $o['LegalName'];
        if (isset($o['TradingName'])) $this->TradingName = $o['TradingName'];
        if (isset($o['Abn'])) $this->Abn = $o['Abn'];
        if (isset($o['Acn'])) $this->Acn = $o['Acn'];
        if (isset($o['Arbn'])) $this->Arbn = $o['Arbn'];
        if (isset($o['GstRegistered'])) $this->GstRegistered = $o['GstRegistered'];
        if (isset($o['ESL'])) $this->ESL = $o['ESL'];
        if (isset($o['Language'])) $this->Language = $o['Language'];
        if (isset($o['InterpreterRequired'])) $this->InterpreterRequired = $o['InterpreterRequired'];
        if (isset($o['LicenseeNotes'])) $this->LicenseeNotes = $o['LicenseeNotes'];
        if (isset($o['ProfilePhotoUrl'])) $this->ProfilePhotoUrl = $o['ProfilePhotoUrl'];
        if (isset($o['ProfilePhotoThumbnailUrl'])) $this->ProfilePhotoThumbnailUrl = $o['ProfilePhotoThumbnailUrl'];
        if (isset($o['ProfileImageId'])) $this->ProfileImageId = $o['ProfileImageId'];
        if (isset($o['Description'])) $this->Description = $o['Description'];
        if (isset($o['EmploymentIndustry'])) $this->EmploymentIndustry = $o['EmploymentIndustry'];
        if (isset($o['EmploymentRole'])) $this->EmploymentRole = $o['EmploymentRole'];
        if (isset($o['EmploymentGeographicArea'])) $this->EmploymentGeographicArea = $o['EmploymentGeographicArea'];
        if (isset($o['Timezone'])) $this->Timezone = $o['Timezone'];
        if (isset($o['TimezoneName'])) $this->TimezoneName = $o['TimezoneName'];
        if (isset($o['PrimaryAddress'])) $this->PrimaryAddress = $o['PrimaryAddress'];
        if (isset($o['IsActiveContact'])) $this->IsActiveContact = $o['IsActiveContact'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->UserProfileId)) $o['UserProfileId'] = $this->UserProfileId;
        if (isset($this->UserId)) $o['UserId'] = $this->UserId;
        if (isset($this->ContactId)) $o['ContactId'] = $this->ContactId;
        if (isset($this->UserName)) $o['UserName'] = $this->UserName;
        if (isset($this->ProfileName)) $o['ProfileName'] = $this->ProfileName;
        if (isset($this->ContactFullName)) $o['ContactFullName'] = $this->ContactFullName;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->EmailSignature)) $o['EmailSignature'] = $this->EmailSignature;
        if (isset($this->MobileNumber)) $o['MobileNumber'] = $this->MobileNumber;
        if (isset($this->PhoneNumber)) $o['PhoneNumber'] = $this->PhoneNumber;
        if (isset($this->ContactTypeId)) $o['ContactTypeId'] = $this->ContactTypeId;
        if (isset($this->ContactTypeName)) $o['ContactTypeName'] = $this->ContactTypeName;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->Surname)) $o['Surname'] = $this->Surname;
        if (isset($this->Title)) $o['Title'] = $this->Title;
        if (isset($this->LegalName)) $o['LegalName'] = $this->LegalName;
        if (isset($this->TradingName)) $o['TradingName'] = $this->TradingName;
        if (isset($this->Abn)) $o['Abn'] = $this->Abn;
        if (isset($this->Acn)) $o['Acn'] = $this->Acn;
        if (isset($this->Arbn)) $o['Arbn'] = $this->Arbn;
        if (isset($this->GstRegistered)) $o['GstRegistered'] = $this->GstRegistered;
        if (isset($this->ESL)) $o['ESL'] = $this->ESL;
        if (isset($this->Language)) $o['Language'] = $this->Language;
        if (isset($this->InterpreterRequired)) $o['InterpreterRequired'] = $this->InterpreterRequired;
        if (isset($this->LicenseeNotes)) $o['LicenseeNotes'] = $this->LicenseeNotes;
        if (isset($this->ProfilePhotoUrl)) $o['ProfilePhotoUrl'] = $this->ProfilePhotoUrl;
        if (isset($this->ProfilePhotoThumbnailUrl)) $o['ProfilePhotoThumbnailUrl'] = $this->ProfilePhotoThumbnailUrl;
        if (isset($this->ProfileImageId)) $o['ProfileImageId'] = $this->ProfileImageId;
        if (isset($this->Description)) $o['Description'] = $this->Description;
        if (isset($this->EmploymentIndustry)) $o['EmploymentIndustry'] = $this->EmploymentIndustry;
        if (isset($this->EmploymentRole)) $o['EmploymentRole'] = $this->EmploymentRole;
        if (isset($this->EmploymentGeographicArea)) $o['EmploymentGeographicArea'] = $this->EmploymentGeographicArea;
        if (isset($this->Timezone)) $o['Timezone'] = $this->Timezone;
        if (isset($this->TimezoneName)) $o['TimezoneName'] = $this->TimezoneName;
        if (isset($this->PrimaryAddress)) $o['PrimaryAddress'] = $this->PrimaryAddress;
        if (isset($this->IsActiveContact)) $o['IsActiveContact'] = $this->IsActiveContact;
        return empty($o) ? new class(){} : $o;
    }
}

class LocationCoordinatesModel implements JsonSerializable
{
    public function __construct(
        /** @description The latitude of an address - geographic coordinates specifying the north-south position of a point on the Earth's surface. */
        // @ApiMember(Description="The latitude of an address - geographic coordinates specifying the north-south position of a point on the Earth's surface.", ParameterType="query")
        /** @var float */
        public float $Latitude=0.0,

        /** @description The longitude of an address - geographic coordinates specifying the east-west position of a point on the Earth's surface. */
        // @ApiMember(Description="The longitude of an address - geographic coordinates specifying the east-west position of a point on the Earth's surface.", ParameterType="query")
        /** @var float */
        public float $Longitude=0.0,

        /** @description The altitude of an address - the altitude above sea level." */
        // @ApiMember(Description="The altitude of an address - the altitude above sea level.\"", ParameterType="query")
        /** @var float|null */
        public ?float $Altitude=null,

        /** @description Accuracy of the latitude and longitude. */
        // @ApiMember(Description="Accuracy of the latitude and longitude.", ParameterType="query")
        /** @var float|null */
        public ?float $Accuracy=null,

        /** @description Accurancy of the Altitude. */
        // @ApiMember(Description="Accurancy of the Altitude.", ParameterType="query")
        /** @var float|null */
        public ?float $AltitudeAccuracy=null,

        /** @description Direction you are heading. */
        // @ApiMember(Description="Direction you are heading.", ParameterType="query")
        /** @var float|null */
        public ?float $Heading=null,

        /** @description Speed you are going. */
        // @ApiMember(Description="Speed you are going.", ParameterType="query")
        /** @var float|null */
        public ?float $Speed=null,

        /** @description Speed your altitude is ascending/descending at. */
        // @ApiMember(Description="Speed your altitude is ascending/descending at.", ParameterType="query")
        /** @var float|null */
        public ?float $VerticalSpeed=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Latitude'])) $this->Latitude = $o['Latitude'];
        if (isset($o['Longitude'])) $this->Longitude = $o['Longitude'];
        if (isset($o['Altitude'])) $this->Altitude = $o['Altitude'];
        if (isset($o['Accuracy'])) $this->Accuracy = $o['Accuracy'];
        if (isset($o['AltitudeAccuracy'])) $this->AltitudeAccuracy = $o['AltitudeAccuracy'];
        if (isset($o['Heading'])) $this->Heading = $o['Heading'];
        if (isset($o['Speed'])) $this->Speed = $o['Speed'];
        if (isset($o['VerticalSpeed'])) $this->VerticalSpeed = $o['VerticalSpeed'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Latitude)) $o['Latitude'] = $this->Latitude;
        if (isset($this->Longitude)) $o['Longitude'] = $this->Longitude;
        if (isset($this->Altitude)) $o['Altitude'] = $this->Altitude;
        if (isset($this->Accuracy)) $o['Accuracy'] = $this->Accuracy;
        if (isset($this->AltitudeAccuracy)) $o['AltitudeAccuracy'] = $this->AltitudeAccuracy;
        if (isset($this->Heading)) $o['Heading'] = $this->Heading;
        if (isset($this->Speed)) $o['Speed'] = $this->Speed;
        if (isset($this->VerticalSpeed)) $o['VerticalSpeed'] = $this->VerticalSpeed;
        return empty($o) ? new class(){} : $o;
    }
}

class AddressModel implements JsonSerializable
{
    public function __construct(
        /** @description The distance between this project and another specified set of gps coordinates. */
        // @ApiMember(DataType="double", Description="The distance between this project and another specified set of gps coordinates.", Name="DistanceAway", ParameterType="body")
        /** @var float */
        public float $DistanceAway=0.0,

        /** @description The latitude of an address - geographic coordinates specifying the north-south position of a point on the Earth's surface. */
        // @ApiMember(DataType="Double?", Description="The latitude of an address - geographic coordinates specifying the north-south position of a point on the Earth's surface.", Name="Latitude", ParameterType="body")
        /** @var float */
        public float $Latitude=0.0,

        /** @description The longitude of an address - geographic coordinates specifying the east-west position of a point on the Earth's surface. */
        // @ApiMember(DataType="Double?", Description="The longitude of an address - geographic coordinates specifying the east-west position of a point on the Earth's surface.", Name="Longitude", ParameterType="body")
        /** @var float */
        public float $Longitude=0.0,

        /** @description Address Format Id Guid - this will be determined by the service. */
        // @ApiMember(DataType="Guid", Description="Address Format Id Guid - this will be determined by the service.", Name="AddressFormatId", ParameterType="body")
        /** @var string */
        public string $AddressFormatId='',

        /** @description Suburb Id Guid - this will attempt to be determined by the SuburbName, StateShortName and Postcode entered. */
        // @ApiMember(DataType="Guid", Description="Suburb Id Guid - this will attempt to be determined by the SuburbName, StateShortName and Postcode entered.", Name="SuburbId", ParameterType="body")
        /** @var string */
        public string $SuburbId='',

        /** @description The suburb name. */
        // @ApiMember(DataType="string", Description="The suburb name.", Name="SuburbName", ParameterType="body")
        /** @var string|null */
        public ?string $SuburbName=null,

        /** @description The shortened State Name e.g Vic for Victoria. */
        // @ApiMember(DataType="string", Description="The shortened State Name e.g Vic for Victoria.", Name="StateShortName", ParameterType="body")
        /** @var string|null */
        public ?string $StateShortName=null,

        /** @description The suburb postcode. */
        // @ApiMember(DataType="string", Description="The suburb postcode.", Name="PostCode", ParameterType="body")
        /** @var string|null */
        public ?string $PostCode=null,

        /** @description Country Id Guid - this will be determined by the CountrName or ISOCountryCode entered. */
        // @ApiMember(DataType="Guid", Description="Country Id Guid - this will be determined by the CountrName or ISOCountryCode entered.", Name="CountryId", ParameterType="body")
        /** @var string */
        public string $CountryId='',

        /** @description the name of the country the address is within. */
        // @ApiMember(DataType="string", Description="the name of the country the address is within.", Name="CountryName", ParameterType="body")
        /** @var string|null */
        public ?string $CountryName=null,

        /** @description ISO Country Code. */
        // @ApiMember(Description="ISO Country Code.", ParameterType="query")
        /** @var string|null */
        public ?string $ISOCountryCode=null,

        /** @description The address Lot number. */
        // @ApiMember(DataType="string", Description="The address Lot number.", Name="LotNumber", ParameterType="body")
        /** @var string|null */
        public ?string $LotNumber=null,

        /** @description The address Sub Unit number. */
        // @ApiMember(DataType="string", Description="The address Sub Unit number.", Name="SubUnit", ParameterType="body")
        /** @var string|null */
        public ?string $SubUnit=null,

        /** @description The address building number. */
        // @ApiMember(DataType="string", Description="The address building number.", Name="BuildingNumber", ParameterType="body")
        /** @var string|null */
        public ?string $BuildingNumber=null,

        /** @description The address street number. */
        // @ApiMember(DataType="string", Description="The address street number.", Name="StreetNumber", ParameterType="body")
        /** @var string|null */
        public ?string $StreetNumber=null,

        /** @description The address street name including street type. */
        // @ApiMember(DataType="string", Description="The address street name including street type.", Name="StreetName", ParameterType="body")
        /** @var string|null */
        public ?string $StreetName=null,

        /** @description A formatted address Line 1. */
        // @ApiMember(DataType="string", Description="A formatted address Line 1.", Name="AddressLineOne", ParameterType="body")
        /** @var string|null */
        public ?string $AddressLineOne=null,

        /** @description A formatted address Line 2. */
        // @ApiMember(DataType="string", Description="A formatted address Line 2.", Name="AddressLineTwo", ParameterType="body")
        /** @var string|null */
        public ?string $AddressLineTwo=null,

        /** @description The full address string. */
        // @ApiMember(DataType="string", Description="The full address string.", Name="AddressFull", ParameterType="body")
        /** @var string|null */
        public ?string $AddressFull=null,

        /** @description True if the address is a physical location. */
        // @ApiMember(DataType="bool?", Description="True if the address is a physical location.", Name="IsPhysical", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsPhysical=null,

        /** @description Notes about the address. */
        // @ApiMember(DataType="string", Description="Notes about the address.", Name="Notes")
        /** @var string|null */
        public ?string $Notes=null,

        /** @description If true, the address is eligible for having its coordinates calculated/updated. */
        // @ApiMember(DataType="bool?", Description="If true, the address is eligible for having its coordinates calculated/updated.", Name="AutoMapCoordinates", ParameterType="body")
        /** @var bool|null */
        public ?bool $AutoMapCoordinates=null,

        /** @description Location Coordinates for the address. */
        // @ApiMember(DataType="LocationCoordinates", Description="Location Coordinates for the address.", Name="LocationCoordinates", ParameterType="body")
        /** @var LocationCoordinatesModel|null */
        public ?LocationCoordinatesModel $LocationCoordinates=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DistanceAway'])) $this->DistanceAway = $o['DistanceAway'];
        if (isset($o['Latitude'])) $this->Latitude = $o['Latitude'];
        if (isset($o['Longitude'])) $this->Longitude = $o['Longitude'];
        if (isset($o['AddressFormatId'])) $this->AddressFormatId = $o['AddressFormatId'];
        if (isset($o['SuburbId'])) $this->SuburbId = $o['SuburbId'];
        if (isset($o['SuburbName'])) $this->SuburbName = $o['SuburbName'];
        if (isset($o['StateShortName'])) $this->StateShortName = $o['StateShortName'];
        if (isset($o['PostCode'])) $this->PostCode = $o['PostCode'];
        if (isset($o['CountryId'])) $this->CountryId = $o['CountryId'];
        if (isset($o['CountryName'])) $this->CountryName = $o['CountryName'];
        if (isset($o['ISOCountryCode'])) $this->ISOCountryCode = $o['ISOCountryCode'];
        if (isset($o['LotNumber'])) $this->LotNumber = $o['LotNumber'];
        if (isset($o['SubUnit'])) $this->SubUnit = $o['SubUnit'];
        if (isset($o['BuildingNumber'])) $this->BuildingNumber = $o['BuildingNumber'];
        if (isset($o['StreetNumber'])) $this->StreetNumber = $o['StreetNumber'];
        if (isset($o['StreetName'])) $this->StreetName = $o['StreetName'];
        if (isset($o['AddressLineOne'])) $this->AddressLineOne = $o['AddressLineOne'];
        if (isset($o['AddressLineTwo'])) $this->AddressLineTwo = $o['AddressLineTwo'];
        if (isset($o['AddressFull'])) $this->AddressFull = $o['AddressFull'];
        if (isset($o['IsPhysical'])) $this->IsPhysical = $o['IsPhysical'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['AutoMapCoordinates'])) $this->AutoMapCoordinates = $o['AutoMapCoordinates'];
        if (isset($o['LocationCoordinates'])) $this->LocationCoordinates = JsonConverters::from('LocationCoordinatesModel', $o['LocationCoordinates']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DistanceAway)) $o['DistanceAway'] = $this->DistanceAway;
        if (isset($this->Latitude)) $o['Latitude'] = $this->Latitude;
        if (isset($this->Longitude)) $o['Longitude'] = $this->Longitude;
        if (isset($this->AddressFormatId)) $o['AddressFormatId'] = $this->AddressFormatId;
        if (isset($this->SuburbId)) $o['SuburbId'] = $this->SuburbId;
        if (isset($this->SuburbName)) $o['SuburbName'] = $this->SuburbName;
        if (isset($this->StateShortName)) $o['StateShortName'] = $this->StateShortName;
        if (isset($this->PostCode)) $o['PostCode'] = $this->PostCode;
        if (isset($this->CountryId)) $o['CountryId'] = $this->CountryId;
        if (isset($this->CountryName)) $o['CountryName'] = $this->CountryName;
        if (isset($this->ISOCountryCode)) $o['ISOCountryCode'] = $this->ISOCountryCode;
        if (isset($this->LotNumber)) $o['LotNumber'] = $this->LotNumber;
        if (isset($this->SubUnit)) $o['SubUnit'] = $this->SubUnit;
        if (isset($this->BuildingNumber)) $o['BuildingNumber'] = $this->BuildingNumber;
        if (isset($this->StreetNumber)) $o['StreetNumber'] = $this->StreetNumber;
        if (isset($this->StreetName)) $o['StreetName'] = $this->StreetName;
        if (isset($this->AddressLineOne)) $o['AddressLineOne'] = $this->AddressLineOne;
        if (isset($this->AddressLineTwo)) $o['AddressLineTwo'] = $this->AddressLineTwo;
        if (isset($this->AddressFull)) $o['AddressFull'] = $this->AddressFull;
        if (isset($this->IsPhysical)) $o['IsPhysical'] = $this->IsPhysical;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->AutoMapCoordinates)) $o['AutoMapCoordinates'] = $this->AutoMapCoordinates;
        if (isset($this->LocationCoordinates)) $o['LocationCoordinates'] = JsonConverters::to('LocationCoordinatesModel', $this->LocationCoordinates);
        return empty($o) ? new class(){} : $o;
    }
}

class GeoEstateStageModel implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $GeoEstateStageId='',
        /** @var string */
        public string $GeoEstateId='',
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var string|null */
        public ?string $RecordStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['GeoEstateStageId'])) $this->GeoEstateStageId = $o['GeoEstateStageId'];
        if (isset($o['GeoEstateId'])) $this->GeoEstateId = $o['GeoEstateId'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['RecordStatus'])) $this->RecordStatus = $o['RecordStatus'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->GeoEstateStageId)) $o['GeoEstateStageId'] = $this->GeoEstateStageId;
        if (isset($this->GeoEstateId)) $o['GeoEstateId'] = $this->GeoEstateId;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->RecordStatus)) $o['RecordStatus'] = $this->RecordStatus;
        return empty($o) ? new class(){} : $o;
    }
}

class GeoEstateModel implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $GeoEstateId='',
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var string */
        public string $DeveloperContactId='',
        /** @var string|null */
        public ?string $DeveloperName=null,
        /** @var string|null */
        public ?string $DeveloperProfilePhotoUrl=null,
        /** @var string|null */
        public ?string $DeveloperProfilePhotoThumbnail=null,
        /** @var string|null */
        public ?string $RecordStatus=null,
        /** @var array<GeoEstateStageModel>|null */
        public ?array $Stages=null,
        /** @var string */
        public string $CurrentEstateStageId='',
        /** @var string|null */
        public ?string $CurrentEstateStageName=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['GeoEstateId'])) $this->GeoEstateId = $o['GeoEstateId'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['DeveloperContactId'])) $this->DeveloperContactId = $o['DeveloperContactId'];
        if (isset($o['DeveloperName'])) $this->DeveloperName = $o['DeveloperName'];
        if (isset($o['DeveloperProfilePhotoUrl'])) $this->DeveloperProfilePhotoUrl = $o['DeveloperProfilePhotoUrl'];
        if (isset($o['DeveloperProfilePhotoThumbnail'])) $this->DeveloperProfilePhotoThumbnail = $o['DeveloperProfilePhotoThumbnail'];
        if (isset($o['RecordStatus'])) $this->RecordStatus = $o['RecordStatus'];
        if (isset($o['Stages'])) $this->Stages = JsonConverters::fromArray('GeoEstateStageModel', $o['Stages']);
        if (isset($o['CurrentEstateStageId'])) $this->CurrentEstateStageId = $o['CurrentEstateStageId'];
        if (isset($o['CurrentEstateStageName'])) $this->CurrentEstateStageName = $o['CurrentEstateStageName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->GeoEstateId)) $o['GeoEstateId'] = $this->GeoEstateId;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->DeveloperContactId)) $o['DeveloperContactId'] = $this->DeveloperContactId;
        if (isset($this->DeveloperName)) $o['DeveloperName'] = $this->DeveloperName;
        if (isset($this->DeveloperProfilePhotoUrl)) $o['DeveloperProfilePhotoUrl'] = $this->DeveloperProfilePhotoUrl;
        if (isset($this->DeveloperProfilePhotoThumbnail)) $o['DeveloperProfilePhotoThumbnail'] = $this->DeveloperProfilePhotoThumbnail;
        if (isset($this->RecordStatus)) $o['RecordStatus'] = $this->RecordStatus;
        if (isset($this->Stages)) $o['Stages'] = JsonConverters::toArray('GeoEstateStageModel', $this->Stages);
        if (isset($this->CurrentEstateStageId)) $o['CurrentEstateStageId'] = $this->CurrentEstateStageId;
        if (isset($this->CurrentEstateStageName)) $o['CurrentEstateStageName'] = $this->CurrentEstateStageName;
        return empty($o) ? new class(){} : $o;
    }
}

class GeoLocationModel implements JsonSerializable
{
    public function __construct(
        /** @description The location id */
        // @ApiMember(DataType="Guid", Description="The location id", Name="GeoLocationId", ParameterType="query")
        /** @var string */
        public string $GeoLocationId='',

        /** @description The state id */
        // @ApiMember(DataType="Guid", Description="The state id", Name="StateId", ParameterType="query")
        /** @var string|null */
        public ?string $StateId=null,

        /** @description The state name */
        // @ApiMember(DataType="string", Description="The state name", Name="StateName", ParameterType="query")
        /** @var string|null */
        public ?string $StateName=null,

        /** @description The suburb id */
        // @ApiMember(DataType="Guid", Description="The suburb id", Name="SuburbId", ParameterType="query")
        /** @var string|null */
        public ?string $SuburbId=null,

        /** @description The suburb name */
        // @ApiMember(DataType="string", Description="The suburb name", Name="SuburbName", ParameterType="query")
        /** @var string|null */
        public ?string $SuburbName=null,

        /** @description The country id */
        // @ApiMember(DataType="Guid", Description="The country id", Name="CountryId", ParameterType="query")
        /** @var string|null */
        public ?string $CountryId=null,

        /** @description The country name */
        // @ApiMember(DataType="string", Description="The country name", Name="CountryName", ParameterType="query")
        /** @var string|null */
        public ?string $CountryName=null,

        /** @description The lot number */
        // @ApiMember(DataType="string", Description="The lot number", Name="LotNumber", ParameterType="query")
        /** @var string|null */
        public ?string $LotNumber=null,

        /** @description The unit number */
        // @ApiMember(DataType="string", Description="The unit number", Name="SubUnit", ParameterType="query")
        /** @var string|null */
        public ?string $SubUnit=null,

        /** @description The building number */
        // @ApiMember(DataType="string", Description="The building number", Name="BuildingNumber", ParameterType="query")
        /** @var string|null */
        public ?string $BuildingNumber=null,

        /** @description PO Box Number */
        // @ApiMember(DataType="string", Description="PO Box Number", Name="PostalDeliveryNumber", ParameterType="query")
        /** @var string|null */
        public ?string $PostalDeliveryNumber=null,

        /** @description The Street Number */
        // @ApiMember(DataType="string", Description="The Street Number", Name="StreetNumber", ParameterType="query")
        /** @var string|null */
        public ?string $StreetNumber=null,

        /** @description The Street name */
        // @ApiMember(DataType="string", Description="The Street name", Name="StreetName", ParameterType="query")
        /** @var string|null */
        public ?string $StreetName=null,

        /** @description Address Line ONe */
        // @ApiMember(DataType="string", Description="Address Line ONe", Name="AddressLineOne", ParameterType="query")
        /** @var string|null */
        public ?string $AddressLineOne=null,

        /** @description Address Line Two */
        // @ApiMember(DataType="string", Description="Address Line Two", Name="AddressLineTwo", ParameterType="query")
        /** @var string|null */
        public ?string $AddressLineTwo=null,

        /** @description Post code */
        // @ApiMember(DataType="string", Description="Post code", Name="PostCode", ParameterType="query")
        /** @var string|null */
        public ?string $PostCode=null,

        /** @description Is location physical */
        // @ApiMember(DataType="bool", Description="Is location physical", Name="IsPhysical", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPhysical=null,

        /** @description Notes about the location */
        // @ApiMember(DataType="string", Description="Notes about the location", Name="Notes", ParameterType="query")
        /** @var string|null */
        public ?string $Notes=null,

        /** @description The address in full */
        // @ApiMember(DataType="string", Description="The address in full", Name="AddressFull", ParameterType="query")
        /** @var string|null */
        public ?string $AddressFull=null,

        /** @description Address format id. */
        // @ApiMember(DataType="Guid", Description="Address format id.", Name="AddressFormatId", ParameterType="query")
        /** @var string */
        public string $AddressFormatId='',

        /** @description Latitude */
        // @ApiMember(DataType="double", Description="Latitude", Name="Latitude", ParameterType="query")
        /** @var float */
        public float $Latitude=0.0,

        /** @description Longitude */
        // @ApiMember(DataType="double", Description="Longitude", Name="Longitude", ParameterType="query")
        /** @var float */
        public float $Longitude=0.0,

        /** @description Timezone Id */
        // @ApiMember(DataType="Guid?", Description="Timezone Id", Name="Timezone", ParameterType="query")
        /** @var string|null */
        public ?string $Timezone=null,

        /** @var GeoEstateModel|null */
        public ?GeoEstateModel $Estate=null,
        /** @var string */
        public string $GeoEstateId='',
        /** @var string */
        public string $GeoEstateStageId='',
        /** @var string|null */
        public ?string $GeoEstateStageName=null,
        /** @var bool|null */
        public ?bool $IgnoreValidation=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['GeoLocationId'])) $this->GeoLocationId = $o['GeoLocationId'];
        if (isset($o['StateId'])) $this->StateId = $o['StateId'];
        if (isset($o['StateName'])) $this->StateName = $o['StateName'];
        if (isset($o['SuburbId'])) $this->SuburbId = $o['SuburbId'];
        if (isset($o['SuburbName'])) $this->SuburbName = $o['SuburbName'];
        if (isset($o['CountryId'])) $this->CountryId = $o['CountryId'];
        if (isset($o['CountryName'])) $this->CountryName = $o['CountryName'];
        if (isset($o['LotNumber'])) $this->LotNumber = $o['LotNumber'];
        if (isset($o['SubUnit'])) $this->SubUnit = $o['SubUnit'];
        if (isset($o['BuildingNumber'])) $this->BuildingNumber = $o['BuildingNumber'];
        if (isset($o['PostalDeliveryNumber'])) $this->PostalDeliveryNumber = $o['PostalDeliveryNumber'];
        if (isset($o['StreetNumber'])) $this->StreetNumber = $o['StreetNumber'];
        if (isset($o['StreetName'])) $this->StreetName = $o['StreetName'];
        if (isset($o['AddressLineOne'])) $this->AddressLineOne = $o['AddressLineOne'];
        if (isset($o['AddressLineTwo'])) $this->AddressLineTwo = $o['AddressLineTwo'];
        if (isset($o['PostCode'])) $this->PostCode = $o['PostCode'];
        if (isset($o['IsPhysical'])) $this->IsPhysical = $o['IsPhysical'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['AddressFull'])) $this->AddressFull = $o['AddressFull'];
        if (isset($o['AddressFormatId'])) $this->AddressFormatId = $o['AddressFormatId'];
        if (isset($o['Latitude'])) $this->Latitude = $o['Latitude'];
        if (isset($o['Longitude'])) $this->Longitude = $o['Longitude'];
        if (isset($o['Timezone'])) $this->Timezone = $o['Timezone'];
        if (isset($o['Estate'])) $this->Estate = JsonConverters::from('GeoEstateModel', $o['Estate']);
        if (isset($o['GeoEstateId'])) $this->GeoEstateId = $o['GeoEstateId'];
        if (isset($o['GeoEstateStageId'])) $this->GeoEstateStageId = $o['GeoEstateStageId'];
        if (isset($o['GeoEstateStageName'])) $this->GeoEstateStageName = $o['GeoEstateStageName'];
        if (isset($o['IgnoreValidation'])) $this->IgnoreValidation = $o['IgnoreValidation'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->GeoLocationId)) $o['GeoLocationId'] = $this->GeoLocationId;
        if (isset($this->StateId)) $o['StateId'] = $this->StateId;
        if (isset($this->StateName)) $o['StateName'] = $this->StateName;
        if (isset($this->SuburbId)) $o['SuburbId'] = $this->SuburbId;
        if (isset($this->SuburbName)) $o['SuburbName'] = $this->SuburbName;
        if (isset($this->CountryId)) $o['CountryId'] = $this->CountryId;
        if (isset($this->CountryName)) $o['CountryName'] = $this->CountryName;
        if (isset($this->LotNumber)) $o['LotNumber'] = $this->LotNumber;
        if (isset($this->SubUnit)) $o['SubUnit'] = $this->SubUnit;
        if (isset($this->BuildingNumber)) $o['BuildingNumber'] = $this->BuildingNumber;
        if (isset($this->PostalDeliveryNumber)) $o['PostalDeliveryNumber'] = $this->PostalDeliveryNumber;
        if (isset($this->StreetNumber)) $o['StreetNumber'] = $this->StreetNumber;
        if (isset($this->StreetName)) $o['StreetName'] = $this->StreetName;
        if (isset($this->AddressLineOne)) $o['AddressLineOne'] = $this->AddressLineOne;
        if (isset($this->AddressLineTwo)) $o['AddressLineTwo'] = $this->AddressLineTwo;
        if (isset($this->PostCode)) $o['PostCode'] = $this->PostCode;
        if (isset($this->IsPhysical)) $o['IsPhysical'] = $this->IsPhysical;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->AddressFull)) $o['AddressFull'] = $this->AddressFull;
        if (isset($this->AddressFormatId)) $o['AddressFormatId'] = $this->AddressFormatId;
        if (isset($this->Latitude)) $o['Latitude'] = $this->Latitude;
        if (isset($this->Longitude)) $o['Longitude'] = $this->Longitude;
        if (isset($this->Timezone)) $o['Timezone'] = $this->Timezone;
        if (isset($this->Estate)) $o['Estate'] = JsonConverters::to('GeoEstateModel', $this->Estate);
        if (isset($this->GeoEstateId)) $o['GeoEstateId'] = $this->GeoEstateId;
        if (isset($this->GeoEstateStageId)) $o['GeoEstateStageId'] = $this->GeoEstateStageId;
        if (isset($this->GeoEstateStageName)) $o['GeoEstateStageName'] = $this->GeoEstateStageName;
        if (isset($this->IgnoreValidation)) $o['IgnoreValidation'] = $this->IgnoreValidation;
        return empty($o) ? new class(){} : $o;
    }
}

class ContactAddressModel implements JsonSerializable
{
    public function __construct(
        /** @description Location Details. */
        // @ApiMember(DataType="GeoLocationModel", Description="Location Details.", Name="Location", ParameterType="query")
        /** @var GeoLocationModel|null */
        public ?GeoLocationModel $Location=null,

        /** @description Is address postal. */
        // @ApiMember(DataType="bool", Description="Is address postal.", Name="IsPostal", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPostal=null,

        /** @description Is address primary. */
        // @ApiMember(DataType="bool", Description="Is address primary.", Name="IsPrimaryLocation", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPrimaryLocation=null,

        /** @description Is address registered. */
        // @ApiMember(DataType="bool", Description="Is address registered.", Name="IsRegisteredLocation", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsRegisteredLocation=null,

        /** @description Contact Address Id. */
        // @ApiMember(DataType="Guid", Description="Contact Address Id.", Name="ContactAddressId", ParameterType="query")
        /** @var string */
        public string $ContactAddressId='',

        /** @description Contact Address Suburb Name. */
        // @ApiMember(DataType="string", Description="Contact Address Suburb Name.", Name="SuburbName", ParameterType="query")
        /** @var string|null */
        public ?string $SuburbName=null,

        /** @description Contact Address Street Name. */
        // @ApiMember(DataType="string", Description="Contact Address Street Name.", Name="StateName", ParameterType="query")
        /** @var string|null */
        public ?string $StateName=null,

        /** @description Contact Country Name. */
        // @ApiMember(DataType="string", Description="Contact Country Name.", Name="CountryName", ParameterType="query")
        /** @var string|null */
        public ?string $CountryName=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Location'])) $this->Location = JsonConverters::from('GeoLocationModel', $o['Location']);
        if (isset($o['IsPostal'])) $this->IsPostal = $o['IsPostal'];
        if (isset($o['IsPrimaryLocation'])) $this->IsPrimaryLocation = $o['IsPrimaryLocation'];
        if (isset($o['IsRegisteredLocation'])) $this->IsRegisteredLocation = $o['IsRegisteredLocation'];
        if (isset($o['ContactAddressId'])) $this->ContactAddressId = $o['ContactAddressId'];
        if (isset($o['SuburbName'])) $this->SuburbName = $o['SuburbName'];
        if (isset($o['StateName'])) $this->StateName = $o['StateName'];
        if (isset($o['CountryName'])) $this->CountryName = $o['CountryName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Location)) $o['Location'] = JsonConverters::to('GeoLocationModel', $this->Location);
        if (isset($this->IsPostal)) $o['IsPostal'] = $this->IsPostal;
        if (isset($this->IsPrimaryLocation)) $o['IsPrimaryLocation'] = $this->IsPrimaryLocation;
        if (isset($this->IsRegisteredLocation)) $o['IsRegisteredLocation'] = $this->IsRegisteredLocation;
        if (isset($this->ContactAddressId)) $o['ContactAddressId'] = $this->ContactAddressId;
        if (isset($this->SuburbName)) $o['SuburbName'] = $this->SuburbName;
        if (isset($this->StateName)) $o['StateName'] = $this->StateName;
        if (isset($this->CountryName)) $o['CountryName'] = $this->CountryName;
        return empty($o) ? new class(){} : $o;
    }
}

class PhoneModel implements JsonSerializable
{
    public function __construct(
        /** @description Phone Country Code. */
        // @ApiMember(DataType="string", Description="Phone Country Code.", Name="CountryCode", ParameterType="query")
        /** @var string|null */
        public ?string $CountryCode=null,

        /** @description Phone Area Code. */
        // @ApiMember(DataType="string", Description="Phone Area Code.", Name="AreaCode", ParameterType="query")
        /** @var string|null */
        public ?string $AreaCode=null,

        /** @description Phone Local Number. */
        // @ApiMember(DataType="string", Description="Phone Local Number.", Name="LocalNumber", ParameterType="query")
        /** @var string|null */
        public ?string $LocalNumber=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CountryCode'])) $this->CountryCode = $o['CountryCode'];
        if (isset($o['AreaCode'])) $this->AreaCode = $o['AreaCode'];
        if (isset($o['LocalNumber'])) $this->LocalNumber = $o['LocalNumber'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CountryCode)) $o['CountryCode'] = $this->CountryCode;
        if (isset($this->AreaCode)) $o['AreaCode'] = $this->AreaCode;
        if (isset($this->LocalNumber)) $o['LocalNumber'] = $this->LocalNumber;
        return empty($o) ? new class(){} : $o;
    }
}

class ContactDetailModel implements JsonSerializable
{
    public function __construct(
        /** @description Contact Method Id */
        // @ApiMember(DataType="Guid", Description="Contact Method Id", Name="ContactMethodId", ParameterType="query")
        /** @var string */
        public string $ContactMethodId='',

        /** @description Contact Method Name */
        // @ApiMember(DataType="string", Description="Contact Method Name", Name="ContactMethodName", ParameterType="query")
        /** @var string|null */
        public ?string $ContactMethodName=null,

        /** @description Contact Address Details */
        // @ApiMember(DataType="ContactAddressModel", Description="Contact Address Details", Name="ContactAddress", ParameterType="query")
        /** @var ContactAddressModel|null */
        public ?ContactAddressModel $ContactAddress=null,

        /** @description Contact Phone Details */
        // @ApiMember(DataType="PhoneModel", Description="Contact Phone Details", Name="ContactPhone", ParameterType="query")
        /** @var PhoneModel|null */
        public ?PhoneModel $ContactPhone=null,

        /** @description Country id */
        // @ApiMember(DataType="Guid", Description="Country id", Name="CountryId", ParameterType="query")
        /** @var string|null */
        public ?string $CountryId=null,

        /** @description Contact Details */
        // @ApiMember(DataType="string", Description="Contact Details", Name="ContactDetails", ParameterType="query")
        /** @var string|null */
        public ?string $ContactDetails=null,

        /** @description Notes */
        // @ApiMember(DataType="string", Description="Notes", Name="Notes", ParameterType="query")
        /** @var string|null */
        public ?string $Notes=null,

        /** @description Contact Details Code */
        // @ApiMember(DataType="string", Description="Contact Details Code", Name="ContactDetailsCode", ParameterType="query")
        /** @var string|null */
        public ?string $ContactDetailsCode=null,

        /** @description Order of Contact Method Id */
        // @ApiMember(DataType="int", Description="Order of Contact Method Id", Name="OrderContactMethod", ParameterType="query")
        /** @var int */
        public int $OrderContactMethod=0,

        /** @description Contact Method Id */
        // @ApiMember(DataType="bool", Description="Contact Method Id", Name="IsPrimaryContactMethod", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPrimaryContactMethod=null,

        /** @description Is contact details an address */
        // @ApiMember(DataType="bool", Description="Is contact details an address", Name="IsAddress", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsAddress=null,

        /** @description Contact Contact Detail Id */
        // @ApiMember(DataType="Guid", Description="Contact Contact Detail Id", Name="ContactContactDetailId", ParameterType="query")
        /** @var string */
        public string $ContactContactDetailId='',

        /** @description Contact Id */
        // @ApiMember(DataType="Guid", Description="Contact Id", Name="ContactId", ParameterType="query")
        /** @var string */
        public string $ContactId='',

        /** @description Contact Details Id */
        // @ApiMember(DataType="Guid", Description="Contact Details Id", Name="ContactDetailId", ParameterType="query")
        /** @var string */
        public string $ContactDetailId='',

        /** @description Is contact details a primary location */
        // @ApiMember(DataType="bool", Description="Is contact details a primary location", Name="IsPrimaryLocation", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPrimaryLocation=null,

        /** @description Is contact details a registered location */
        // @ApiMember(DataType="bool", Description="Is contact details a registered location", Name="IsRegisteredLocation", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsRegisteredLocation=null,

        /** @description Is contact details a postal address */
        // @ApiMember(DataType="bool", Description="Is contact details a postal address", Name="IsPostal", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPostal=null,

        /** @description Is contact details a phone number */
        // @ApiMember(DataType="bool", Description="Is contact details a phone number", Name="IsPhone", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsPhone=null,

        /** @description Email Signature Id */
        // @ApiMember(DataType="Guid", Description="Email Signature Id", Name="EmailSignatureId", ParameterType="query")
        /** @var string */
        public string $EmailSignatureId='',

        /** @description Email Signature HTML */
        // @ApiMember(DataType="string", Description="Email Signature HTML", Name="EmailSignatureHTML", ParameterType="query")
        /** @var string|null */
        public ?string $EmailSignatureHTML=null,

        /** @description Email Signature Text */
        // @ApiMember(DataType="string", Description="Email Signature Text", Name="EmailSignatureText", ParameterType="query")
        /** @var string|null */
        public ?string $EmailSignatureText=null,

        /** @description API Key from Framework */
        // @ApiMember(DataType="string", Description="API Key from Framework", Name="ApiFrameworkAlternateKey", ParameterType="query")
        /** @var string|null */
        public ?string $ApiFrameworkAlternateKey=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ContactMethodId'])) $this->ContactMethodId = $o['ContactMethodId'];
        if (isset($o['ContactMethodName'])) $this->ContactMethodName = $o['ContactMethodName'];
        if (isset($o['ContactAddress'])) $this->ContactAddress = JsonConverters::from('ContactAddressModel', $o['ContactAddress']);
        if (isset($o['ContactPhone'])) $this->ContactPhone = JsonConverters::from('PhoneModel', $o['ContactPhone']);
        if (isset($o['CountryId'])) $this->CountryId = $o['CountryId'];
        if (isset($o['ContactDetails'])) $this->ContactDetails = $o['ContactDetails'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['ContactDetailsCode'])) $this->ContactDetailsCode = $o['ContactDetailsCode'];
        if (isset($o['OrderContactMethod'])) $this->OrderContactMethod = $o['OrderContactMethod'];
        if (isset($o['IsPrimaryContactMethod'])) $this->IsPrimaryContactMethod = $o['IsPrimaryContactMethod'];
        if (isset($o['IsAddress'])) $this->IsAddress = $o['IsAddress'];
        if (isset($o['ContactContactDetailId'])) $this->ContactContactDetailId = $o['ContactContactDetailId'];
        if (isset($o['ContactId'])) $this->ContactId = $o['ContactId'];
        if (isset($o['ContactDetailId'])) $this->ContactDetailId = $o['ContactDetailId'];
        if (isset($o['IsPrimaryLocation'])) $this->IsPrimaryLocation = $o['IsPrimaryLocation'];
        if (isset($o['IsRegisteredLocation'])) $this->IsRegisteredLocation = $o['IsRegisteredLocation'];
        if (isset($o['IsPostal'])) $this->IsPostal = $o['IsPostal'];
        if (isset($o['IsPhone'])) $this->IsPhone = $o['IsPhone'];
        if (isset($o['EmailSignatureId'])) $this->EmailSignatureId = $o['EmailSignatureId'];
        if (isset($o['EmailSignatureHTML'])) $this->EmailSignatureHTML = $o['EmailSignatureHTML'];
        if (isset($o['EmailSignatureText'])) $this->EmailSignatureText = $o['EmailSignatureText'];
        if (isset($o['ApiFrameworkAlternateKey'])) $this->ApiFrameworkAlternateKey = $o['ApiFrameworkAlternateKey'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ContactMethodId)) $o['ContactMethodId'] = $this->ContactMethodId;
        if (isset($this->ContactMethodName)) $o['ContactMethodName'] = $this->ContactMethodName;
        if (isset($this->ContactAddress)) $o['ContactAddress'] = JsonConverters::to('ContactAddressModel', $this->ContactAddress);
        if (isset($this->ContactPhone)) $o['ContactPhone'] = JsonConverters::to('PhoneModel', $this->ContactPhone);
        if (isset($this->CountryId)) $o['CountryId'] = $this->CountryId;
        if (isset($this->ContactDetails)) $o['ContactDetails'] = $this->ContactDetails;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->ContactDetailsCode)) $o['ContactDetailsCode'] = $this->ContactDetailsCode;
        if (isset($this->OrderContactMethod)) $o['OrderContactMethod'] = $this->OrderContactMethod;
        if (isset($this->IsPrimaryContactMethod)) $o['IsPrimaryContactMethod'] = $this->IsPrimaryContactMethod;
        if (isset($this->IsAddress)) $o['IsAddress'] = $this->IsAddress;
        if (isset($this->ContactContactDetailId)) $o['ContactContactDetailId'] = $this->ContactContactDetailId;
        if (isset($this->ContactId)) $o['ContactId'] = $this->ContactId;
        if (isset($this->ContactDetailId)) $o['ContactDetailId'] = $this->ContactDetailId;
        if (isset($this->IsPrimaryLocation)) $o['IsPrimaryLocation'] = $this->IsPrimaryLocation;
        if (isset($this->IsRegisteredLocation)) $o['IsRegisteredLocation'] = $this->IsRegisteredLocation;
        if (isset($this->IsPostal)) $o['IsPostal'] = $this->IsPostal;
        if (isset($this->IsPhone)) $o['IsPhone'] = $this->IsPhone;
        if (isset($this->EmailSignatureId)) $o['EmailSignatureId'] = $this->EmailSignatureId;
        if (isset($this->EmailSignatureHTML)) $o['EmailSignatureHTML'] = $this->EmailSignatureHTML;
        if (isset($this->EmailSignatureText)) $o['EmailSignatureText'] = $this->EmailSignatureText;
        if (isset($this->ApiFrameworkAlternateKey)) $o['ApiFrameworkAlternateKey'] = $this->ApiFrameworkAlternateKey;
        return empty($o) ? new class(){} : $o;
    }
}

class UserProfileModel extends UserProfileSummaryModel implements JsonSerializable
{
    /**
     * @param string $UserProfileId
     * @param string $UserId
     * @param string $ContactId
     * @param string|null $UserName
     * @param string|null $ProfileName
     * @param string|null $ContactFullName
     * @param string|null $EmailAddress
     * @param string|null $EmailSignature
     * @param string|null $MobileNumber
     * @param string|null $PhoneNumber
     * @param string $ContactTypeId
     * @param string|null $ContactTypeName
     * @param string|null $FirstName
     * @param string|null $Surname
     * @param string|null $Title
     * @param string|null $LegalName
     * @param string|null $TradingName
     * @param string|null $Abn
     * @param string|null $Acn
     * @param string|null $Arbn
     * @param bool|null $GstRegistered
     * @param bool|null $ESL
     * @param string|null $Language
     * @param bool|null $InterpreterRequired
     * @param string|null $LicenseeNotes
     * @param string|null $ProfilePhotoUrl
     * @param string|null $ProfilePhotoThumbnailUrl
     * @param string $ProfileImageId
     * @param string|null $Description
     * @param string|null $EmploymentIndustry
     * @param string|null $EmploymentRole
     * @param string|null $EmploymentGeographicArea
     * @param string $Timezone
     * @param string|null $TimezoneName
     * @param string|null $PrimaryAddress
     * @param bool|null $IsActiveContact
     */
    public function __construct(
        string $UserProfileId='',
        string $UserId='',
        string $ContactId='',
        ?string $UserName=null,
        ?string $ProfileName=null,
        ?string $ContactFullName=null,
        ?string $EmailAddress=null,
        ?string $EmailSignature=null,
        ?string $MobileNumber=null,
        ?string $PhoneNumber=null,
        string $ContactTypeId='',
        ?string $ContactTypeName=null,
        ?string $FirstName=null,
        ?string $Surname=null,
        ?string $Title=null,
        ?string $LegalName=null,
        ?string $TradingName=null,
        ?string $Abn=null,
        ?string $Acn=null,
        ?string $Arbn=null,
        ?bool $GstRegistered=null,
        ?bool $ESL=null,
        ?string $Language=null,
        ?bool $InterpreterRequired=null,
        ?string $LicenseeNotes=null,
        ?string $ProfilePhotoUrl=null,
        ?string $ProfilePhotoThumbnailUrl=null,
        string $ProfileImageId='',
        ?string $Description=null,
        ?string $EmploymentIndustry=null,
        ?string $EmploymentRole=null,
        ?string $EmploymentGeographicArea=null,
        string $Timezone='',
        ?string $TimezoneName=null,
        ?string $PrimaryAddress=null,
        ?bool $IsActiveContact=null,
        /** @description Contact Date of Birth (when person type) */
        // @ApiMember(DataType="DateTime?", Description="Contact Date of Birth (when person type)", Name="BirthDate", ParameterType="query")
        /** @var DateTime|null */
        public ?DateTime $BirthDate=null,

        /** @description Contact marital status (when person type) */
        // @ApiMember(DataType="string", Description="Contact marital status (when person type)", Name="MaritalStatusName", ParameterType="query")
        /** @var string|null */
        public ?string $MaritalStatusName=null,

        /** @description Contact gender (when person type) */
        // @ApiMember(DataType="string", Description="Contact gender (when person type)", Name="GenderName", ParameterType="query")
        /** @var string|null */
        public ?string $GenderName=null,

        /** @description The Gender Guid of the contact. */
        // @ApiMember(DataType="Guid", Description="The Gender Guid of the contact.", Name="GenderId", ParameterType="query")
        /** @var string|null */
        public ?string $GenderId=null,

        /** @description All contact details of the contact */
        // @ApiMember(DataType="List<ContactDetailModel>", Description="All contact details of the contact", Name="ContactDetails", ParameterType="query")
        /** @var array<ContactDetailModel>|null */
        public ?array $ContactDetails=null,

        /** @description Primary Street Address */
        // @ApiMember(DataType="ContactDetail", Description="Primary Street Address", Name="PrimaryStreetAddress ")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryStreetAddress=null,

        /** @description Primary Postal Address */
        // @ApiMember(DataType="ContactDetail", Description="Primary Postal Address", Name="PrimaryPostalAddress ")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryPostalAddress=null,

        /** @description Primary Registered Address */
        // @ApiMember(DataType="ContactDetail", Description="Primary Registered Address", Name="PrimaryRegisteredAddress ")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryRegisteredAddress=null,

        /** @description Primary Email Address */
        // @ApiMember(DataType="ContactDetail", Description="Primary Email Address", Name="PrimaryEmail ")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryEmail=null,

        /** @description Primary Mobile Number */
        // @ApiMember(DataType="ContactDetail", Description="Primary Mobile Number", Name="PrimaryMobile")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryMobile=null,

        /** @description Primary Non-Mobile Number */
        // @ApiMember(DataType="ContactDetail", Description="Primary Non-Mobile Number", Name="PrimaryPhone")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryPhone=null,

        /** @description Primary Fax Number */
        // @ApiMember(DataType="ContactDetail", Description="Primary Fax Number", Name="PrimaryFax")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryFax=null,

        /** @description Primary Web Address */
        // @ApiMember(DataType="ContactDetail", Description="Primary Web Address", Name="PrimaryWeb")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $PrimaryWeb=null,

        /** @description Social Media Twitter */
        // @ApiMember(DataType="ContactDetail", Description="Social Media Twitter", Name="SocialMediaTwitter")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $SocialMediaTwitter=null,

        /** @description Social Media Facebook */
        // @ApiMember(DataType="ContactDetail", Description="Social Media Facebook", Name="SocialMediaFacebook")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $SocialMediaFacebook=null,

        /** @description Social Media Instagram */
        // @ApiMember(DataType="ContactDetail", Description="Social Media Instagram", Name="SocialMediaInstagram")
        /** @var ContactDetailModel|null */
        public ?ContactDetailModel $SocialMediaInstagram=null,

        /** @description Have all connections to the contact been removed? */
        // @ApiMember(DataType="bool", Description="Have all connections to the contact been removed?", Name="IsRemovedContact")
        /** @var bool|null */
        public ?bool $IsRemovedContact=null,

        /** @description True if this is the users default profile. */
        // @ApiMember(DataType="bool", Description="True if this is the users default profile.", Name="IsDefault", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsDefault=null,

        /** @description True if the users email on this profile can be edited. */
        // @ApiMember(DataType="bool", Description="True if the users email on this profile can be edited.", Name="IsEmailEditable", ParameterType="query")
        /** @var bool|null */
        public ?bool $IsEmailEditable=null,

        /** @description Primary image Content sent as a file stream contents (if not attached to the request) */
        // @ApiMember(DataType="string", Description="Primary image Content sent as a file stream contents (if not attached to the request)", Name="PrimaryImageContent")
        /** @var string|null */
        public ?string $PrimaryImageContent=null,

        /** @description Primary image Content type sent as a file stream contents (if not attached to the request) */
        // @ApiMember(DataType="string", Description="Primary image Content type sent as a file stream contents (if not attached to the request)", Name="PrimaryImageContentType")
        /** @var string|null */
        public ?string $PrimaryImageContentType=null,

        /** @description Primary image file name */
        // @ApiMember(DataType="string", Description="Primary image file name", Name="PrimaryImageFileName")
        /** @var string|null */
        public ?string $PrimaryImageFileName=null
    ) {
        parent::__construct($UserProfileId,$UserId,$ContactId,$UserName,$ProfileName,$ContactFullName,$EmailAddress,$EmailSignature,$MobileNumber,$PhoneNumber,$ContactTypeId,$ContactTypeName,$FirstName,$Surname,$Title,$LegalName,$TradingName,$Abn,$Acn,$Arbn,$GstRegistered,$ESL,$Language,$InterpreterRequired,$LicenseeNotes,$ProfilePhotoUrl,$ProfilePhotoThumbnailUrl,$ProfileImageId,$Description,$EmploymentIndustry,$EmploymentRole,$EmploymentGeographicArea,$Timezone,$TimezoneName,$PrimaryAddress,$IsActiveContact);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['BirthDate'])) $this->BirthDate = JsonConverters::from('DateTime', $o['BirthDate']);
        if (isset($o['MaritalStatusName'])) $this->MaritalStatusName = $o['MaritalStatusName'];
        if (isset($o['GenderName'])) $this->GenderName = $o['GenderName'];
        if (isset($o['GenderId'])) $this->GenderId = $o['GenderId'];
        if (isset($o['ContactDetails'])) $this->ContactDetails = JsonConverters::fromArray('ContactDetailModel', $o['ContactDetails']);
        if (isset($o['PrimaryStreetAddress'])) $this->PrimaryStreetAddress = JsonConverters::from('ContactDetailModel', $o['PrimaryStreetAddress']);
        if (isset($o['PrimaryPostalAddress'])) $this->PrimaryPostalAddress = JsonConverters::from('ContactDetailModel', $o['PrimaryPostalAddress']);
        if (isset($o['PrimaryRegisteredAddress'])) $this->PrimaryRegisteredAddress = JsonConverters::from('ContactDetailModel', $o['PrimaryRegisteredAddress']);
        if (isset($o['PrimaryEmail'])) $this->PrimaryEmail = JsonConverters::from('ContactDetailModel', $o['PrimaryEmail']);
        if (isset($o['PrimaryMobile'])) $this->PrimaryMobile = JsonConverters::from('ContactDetailModel', $o['PrimaryMobile']);
        if (isset($o['PrimaryPhone'])) $this->PrimaryPhone = JsonConverters::from('ContactDetailModel', $o['PrimaryPhone']);
        if (isset($o['PrimaryFax'])) $this->PrimaryFax = JsonConverters::from('ContactDetailModel', $o['PrimaryFax']);
        if (isset($o['PrimaryWeb'])) $this->PrimaryWeb = JsonConverters::from('ContactDetailModel', $o['PrimaryWeb']);
        if (isset($o['SocialMediaTwitter'])) $this->SocialMediaTwitter = JsonConverters::from('ContactDetailModel', $o['SocialMediaTwitter']);
        if (isset($o['SocialMediaFacebook'])) $this->SocialMediaFacebook = JsonConverters::from('ContactDetailModel', $o['SocialMediaFacebook']);
        if (isset($o['SocialMediaInstagram'])) $this->SocialMediaInstagram = JsonConverters::from('ContactDetailModel', $o['SocialMediaInstagram']);
        if (isset($o['IsRemovedContact'])) $this->IsRemovedContact = $o['IsRemovedContact'];
        if (isset($o['IsDefault'])) $this->IsDefault = $o['IsDefault'];
        if (isset($o['IsEmailEditable'])) $this->IsEmailEditable = $o['IsEmailEditable'];
        if (isset($o['PrimaryImageContent'])) $this->PrimaryImageContent = $o['PrimaryImageContent'];
        if (isset($o['PrimaryImageContentType'])) $this->PrimaryImageContentType = $o['PrimaryImageContentType'];
        if (isset($o['PrimaryImageFileName'])) $this->PrimaryImageFileName = $o['PrimaryImageFileName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->BirthDate)) $o['BirthDate'] = JsonConverters::to('DateTime', $this->BirthDate);
        if (isset($this->MaritalStatusName)) $o['MaritalStatusName'] = $this->MaritalStatusName;
        if (isset($this->GenderName)) $o['GenderName'] = $this->GenderName;
        if (isset($this->GenderId)) $o['GenderId'] = $this->GenderId;
        if (isset($this->ContactDetails)) $o['ContactDetails'] = JsonConverters::toArray('ContactDetailModel', $this->ContactDetails);
        if (isset($this->PrimaryStreetAddress)) $o['PrimaryStreetAddress'] = JsonConverters::to('ContactDetailModel', $this->PrimaryStreetAddress);
        if (isset($this->PrimaryPostalAddress)) $o['PrimaryPostalAddress'] = JsonConverters::to('ContactDetailModel', $this->PrimaryPostalAddress);
        if (isset($this->PrimaryRegisteredAddress)) $o['PrimaryRegisteredAddress'] = JsonConverters::to('ContactDetailModel', $this->PrimaryRegisteredAddress);
        if (isset($this->PrimaryEmail)) $o['PrimaryEmail'] = JsonConverters::to('ContactDetailModel', $this->PrimaryEmail);
        if (isset($this->PrimaryMobile)) $o['PrimaryMobile'] = JsonConverters::to('ContactDetailModel', $this->PrimaryMobile);
        if (isset($this->PrimaryPhone)) $o['PrimaryPhone'] = JsonConverters::to('ContactDetailModel', $this->PrimaryPhone);
        if (isset($this->PrimaryFax)) $o['PrimaryFax'] = JsonConverters::to('ContactDetailModel', $this->PrimaryFax);
        if (isset($this->PrimaryWeb)) $o['PrimaryWeb'] = JsonConverters::to('ContactDetailModel', $this->PrimaryWeb);
        if (isset($this->SocialMediaTwitter)) $o['SocialMediaTwitter'] = JsonConverters::to('ContactDetailModel', $this->SocialMediaTwitter);
        if (isset($this->SocialMediaFacebook)) $o['SocialMediaFacebook'] = JsonConverters::to('ContactDetailModel', $this->SocialMediaFacebook);
        if (isset($this->SocialMediaInstagram)) $o['SocialMediaInstagram'] = JsonConverters::to('ContactDetailModel', $this->SocialMediaInstagram);
        if (isset($this->IsRemovedContact)) $o['IsRemovedContact'] = $this->IsRemovedContact;
        if (isset($this->IsDefault)) $o['IsDefault'] = $this->IsDefault;
        if (isset($this->IsEmailEditable)) $o['IsEmailEditable'] = $this->IsEmailEditable;
        if (isset($this->PrimaryImageContent)) $o['PrimaryImageContent'] = $this->PrimaryImageContent;
        if (isset($this->PrimaryImageContentType)) $o['PrimaryImageContentType'] = $this->PrimaryImageContentType;
        if (isset($this->PrimaryImageFileName)) $o['PrimaryImageFileName'] = $this->PrimaryImageFileName;
        return empty($o) ? new class(){} : $o;
    }
}

// @ApiResponse(Description="Contacts connected to contact by criteria and response status")
class GetContactsResponse implements JsonSerializable
{
    public function __construct(
        /** @var array<UserProfileModel>|null */
        public ?array $Contacts=null,
        /** @var int */
        public int $TotalContacts=0,
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Contacts'])) $this->Contacts = JsonConverters::fromArray('UserProfileModel', $o['Contacts']);
        if (isset($o['TotalContacts'])) $this->TotalContacts = $o['TotalContacts'];
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Contacts)) $o['Contacts'] = JsonConverters::toArray('UserProfileModel', $this->Contacts);
        if (isset($this->TotalContacts)) $o['TotalContacts'] = $this->TotalContacts;
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Get contacts connected to the current contact or licensee (if managing licensee contacts) by criteria */
// @Api(Description="Get contacts connected to the current contact or licensee (if managing licensee contacts) by criteria")
class GetContacts extends PagedModel implements JsonSerializable
{
    /**
     * @param int $PageNumber
     * @param int $PageSize
     * @param int $SortIndex
     * @param SortOrder|null $SortOrder
     */
    public function __construct(
        int $PageNumber=0,
        int $PageSize=0,
        int $SortIndex=0,
        ?SortOrder $SortOrder=null,
        /** @description Specific search text to search for i.e. Contact Name, Employment Details etc. */
        // @ApiMember(DataType="string", Description="Specific search text to search for i.e. Contact Name, Employment Details etc.", Name="SearchText")
        /** @var string|null */
        public ?string $SearchText=null,

        /** @description Contact Types to search for i.e. People and/ or Organisations */
        // @ApiMember(DataType="List<Guid>", Description="Contact Types to search for i.e. People and/ or Organisations", IsRequired=true, Name="ContactTypes")
        /** @var array<string>|null */
        public ?array $ContactTypes=null,

        /** @description Contact statuses to search for i.e. Real and/ or Virtual */
        // @ApiMember(DataType="List<Guid>", Description="Contact statuses to search for i.e. Real and/ or Virtual", IsRequired=true, Name="Statuses")
        /** @var array<string>|null */
        public ?array $Statuses=null,

        /** @description Include contacts who are were previously connected to the contact but now removed. */
        // @ApiMember(DataType="bool", Description="Include contacts who are were previously connected to the contact but now removed.", Name="IncludeRemoved")
        /** @var bool|null */
        public ?bool $IncludeRemoved=null,

        /** @description Return all contacts matching criteria or paged results? */
        // @ApiMember(Description="Return all contacts matching criteria or paged results?", Name="IsPagedMode")
        /** @var bool|null */
        public ?bool $IsPagedMode=null
    ) {
        parent::__construct($PageNumber,$PageSize,$SortIndex,$SortOrder);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['SearchText'])) $this->SearchText = $o['SearchText'];
        if (isset($o['ContactTypes'])) $this->ContactTypes = JsonConverters::fromArray('Guid', $o['ContactTypes']);
        if (isset($o['Statuses'])) $this->Statuses = JsonConverters::fromArray('Guid', $o['Statuses']);
        if (isset($o['IncludeRemoved'])) $this->IncludeRemoved = $o['IncludeRemoved'];
        if (isset($o['IsPagedMode'])) $this->IsPagedMode = $o['IsPagedMode'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->SearchText)) $o['SearchText'] = $this->SearchText;
        if (isset($this->ContactTypes)) $o['ContactTypes'] = JsonConverters::toArray('Guid', $this->ContactTypes);
        if (isset($this->Statuses)) $o['Statuses'] = JsonConverters::toArray('Guid', $this->Statuses);
        if (isset($this->IncludeRemoved)) $o['IncludeRemoved'] = $this->IncludeRemoved;
        if (isset($this->IsPagedMode)) $o['IsPagedMode'] = $this->IsPagedMode;
        return empty($o) ? new class(){} : $o;
    }
}

class ContactDetailModel implements JsonSerializable
{
    public function __construct(
        /** @description Id of the Contact Method */
        // @ApiMember(DataType="Guid", Description="Id of the Contact Method", Name="ContactMethodId", ParameterType="body")
        /** @var string */
        public string $ContactMethodId='',

        /** @description Contact Method Name */
        // @ApiMember(DataType="string", Description="Contact Method Name", Name="ContactMethodName", ParameterType="body")
        /** @var string|null */
        public ?string $ContactMethodName=null,

        /** @description If the contact method is an address, this will contain the address details. */
        // @ApiMember(DataType="ContactAddressModel", Description="If the contact method is an address, this will contain the address details.", Name="ContactAddress", ParameterType="body")
        /** @var ContactAddressModel|null */
        public ?ContactAddressModel $ContactAddress=null,

        /** @description If the contact method is a phone, this will contain the phone details */
        // @ApiMember(DataType="PhoneModel", Description="If the contact method is a phone, this will contain the phone details", Name="ContactPhone", ParameterType="body")
        /** @var PhoneModel|null */
        public ?PhoneModel $ContactPhone=null,

        /** @description Id of the country */
        // @ApiMember(DataType="Guid?", Description="Id of the country", Name="CountryId", ParameterType="body")
        /** @var string|null */
        public ?string $CountryId=null,

        /** @description A summary string representing the contact details */
        // @ApiMember(DataType="string", Description="A summary string representing the contact details", Name="ContactDetails", ParameterType="body")
        /** @var string|null */
        public ?string $ContactDetails=null,

        /** @description Notes about the contact details */
        // @ApiMember(DataType="string", Description="Notes about the contact details", Name="Notes", ParameterType="body")
        /** @var string|null */
        public ?string $Notes=null,

        /** @description Area Code if contact details are a phone number */
        // @ApiMember(DataType="string", Description="Area Code if contact details are a phone number", Name="ContactDetailsCode", ParameterType="body")
        /** @var string|null */
        public ?string $ContactDetailsCode=null,

        /** @description Order number of the contact method */
        // @ApiMember(DataType="int", Description="Order number of the contact method", Name="OrderContactMethod", ParameterType="body")
        /** @var int */
        public int $OrderContactMethod=0,

        /** @description True if this is the primary contact method */
        // @ApiMember(DataType="bool", Description="True if this is the primary contact method", Name="IsPrimaryContactMethod", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsPrimaryContactMethod=null,

        /** @description True if this contact method is an address */
        // @ApiMember(DataType="bool", Description="True if this contact method is an address", Name="IsAddress", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsAddress=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ContactMethodId'])) $this->ContactMethodId = $o['ContactMethodId'];
        if (isset($o['ContactMethodName'])) $this->ContactMethodName = $o['ContactMethodName'];
        if (isset($o['ContactAddress'])) $this->ContactAddress = JsonConverters::from('ContactAddressModel', $o['ContactAddress']);
        if (isset($o['ContactPhone'])) $this->ContactPhone = JsonConverters::from('PhoneModel', $o['ContactPhone']);
        if (isset($o['CountryId'])) $this->CountryId = $o['CountryId'];
        if (isset($o['ContactDetails'])) $this->ContactDetails = $o['ContactDetails'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['ContactDetailsCode'])) $this->ContactDetailsCode = $o['ContactDetailsCode'];
        if (isset($o['OrderContactMethod'])) $this->OrderContactMethod = $o['OrderContactMethod'];
        if (isset($o['IsPrimaryContactMethod'])) $this->IsPrimaryContactMethod = $o['IsPrimaryContactMethod'];
        if (isset($o['IsAddress'])) $this->IsAddress = $o['IsAddress'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ContactMethodId)) $o['ContactMethodId'] = $this->ContactMethodId;
        if (isset($this->ContactMethodName)) $o['ContactMethodName'] = $this->ContactMethodName;
        if (isset($this->ContactAddress)) $o['ContactAddress'] = JsonConverters::to('ContactAddressModel', $this->ContactAddress);
        if (isset($this->ContactPhone)) $o['ContactPhone'] = JsonConverters::to('PhoneModel', $this->ContactPhone);
        if (isset($this->CountryId)) $o['CountryId'] = $this->CountryId;
        if (isset($this->ContactDetails)) $o['ContactDetails'] = $this->ContactDetails;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->ContactDetailsCode)) $o['ContactDetailsCode'] = $this->ContactDetailsCode;
        if (isset($this->OrderContactMethod)) $o['OrderContactMethod'] = $this->OrderContactMethod;
        if (isset($this->IsPrimaryContactMethod)) $o['IsPrimaryContactMethod'] = $this->IsPrimaryContactMethod;
        if (isset($this->IsAddress)) $o['IsAddress'] = $this->IsAddress;
        return empty($o) ? new class(){} : $o;
    }
}

class ContactAddressModel implements JsonSerializable
{
    public function __construct(
        /** @description Address Details */
        // @ApiMember(DataType="AddressModel", Description="Address Details", Name="Address", ParameterType="body")
        /** @var AddressModel|null */
        public ?AddressModel $Address=null,

        /** @description True if this is a postal address. */
        // @ApiMember(DataType="bool", Description="True if this is a postal address.", Name="IsPostal", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsPostal=null,

        /** @description True if this is the primary address. */
        // @ApiMember(DataType="bool", Description="True if this is the primary address.", Name="IsPrimaryLocation", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsPrimaryLocation=null,

        /** @description True if this address is the registered tax address. */
        // @ApiMember(DataType="bool", Description="True if this address is the registered tax address.", Name="IsRegisteredLocation", ParameterType="body")
        /** @var bool|null */
        public ?bool $IsRegisteredLocation=null,

        /** @description Suburb Name */
        // @ApiMember(DataType="string", Description="Suburb Name", Name="SuburbName", ParameterType="body")
        /** @var string|null */
        public ?string $SuburbName=null,

        /** @description State Name */
        // @ApiMember(DataType="string", Description="State Name", Name="StateName", ParameterType="body")
        /** @var string|null */
        public ?string $StateName=null,

        /** @description Country Name */
        // @ApiMember(DataType="string", Description="Country Name", Name="CountryName", ParameterType="body")
        /** @var string|null */
        public ?string $CountryName=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Address'])) $this->Address = JsonConverters::from('AddressModel', $o['Address']);
        if (isset($o['IsPostal'])) $this->IsPostal = $o['IsPostal'];
        if (isset($o['IsPrimaryLocation'])) $this->IsPrimaryLocation = $o['IsPrimaryLocation'];
        if (isset($o['IsRegisteredLocation'])) $this->IsRegisteredLocation = $o['IsRegisteredLocation'];
        if (isset($o['SuburbName'])) $this->SuburbName = $o['SuburbName'];
        if (isset($o['StateName'])) $this->StateName = $o['StateName'];
        if (isset($o['CountryName'])) $this->CountryName = $o['CountryName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Address)) $o['Address'] = JsonConverters::to('AddressModel', $this->Address);
        if (isset($this->IsPostal)) $o['IsPostal'] = $this->IsPostal;
        if (isset($this->IsPrimaryLocation)) $o['IsPrimaryLocation'] = $this->IsPrimaryLocation;
        if (isset($this->IsRegisteredLocation)) $o['IsRegisteredLocation'] = $this->IsRegisteredLocation;
        if (isset($this->SuburbName)) $o['SuburbName'] = $this->SuburbName;
        if (isset($this->StateName)) $o['StateName'] = $this->StateName;
        if (isset($this->CountryName)) $o['CountryName'] = $this->CountryName;
        return empty($o) ? new class(){} : $o;
    }
}

class PhoneModel implements JsonSerializable
{
    public function __construct(
        /** @description Country Code */
        // @ApiMember(DataType="string", Description="Country Code", Name="CountryCode", ParameterType="body")
        /** @var string|null */
        public ?string $CountryCode=null,

        /** @description Area Code */
        // @ApiMember(DataType="string", Description="Area Code", Name="AreaCode", ParameterType="body")
        /** @var string|null */
        public ?string $AreaCode=null,

        /** @description Local Number */
        // @ApiMember(DataType="string", Description="Local Number", Name="LocalNumber", ParameterType="body")
        /** @var string|null */
        public ?string $LocalNumber=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CountryCode'])) $this->CountryCode = $o['CountryCode'];
        if (isset($o['AreaCode'])) $this->AreaCode = $o['AreaCode'];
        if (isset($o['LocalNumber'])) $this->LocalNumber = $o['LocalNumber'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CountryCode)) $o['CountryCode'] = $this->CountryCode;
        if (isset($this->AreaCode)) $o['AreaCode'] = $this->AreaCode;
        if (isset($this->LocalNumber)) $o['LocalNumber'] = $this->LocalNumber;
        return empty($o) ? new class(){} : $o;
    }
}

PHP GetContacts DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /api/contacts HTTP/1.1 
Host: pfapi.pstpf.com.au 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"SearchText":"String","ContactTypes":["00000000-0000-0000-0000-000000000000"],"Statuses":["00000000-0000-0000-0000-000000000000"],"IncludeRemoved":false,"IsPagedMode":false,"PageNumber":0,"PageSize":0,"SortIndex":0,"SortOrder":"Ascending"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"Contacts":[{"BirthDate":"0001-01-01T00:00:00.0000000","MaritalStatusName":"String","GenderName":"String","GenderId":"00000000000000000000000000000000","ContactDetails":[{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"}],"PrimaryStreetAddress":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryPostalAddress":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryRegisteredAddress":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryEmail":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryMobile":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryPhone":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryFax":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"PrimaryWeb":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"SocialMediaTwitter":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"SocialMediaFacebook":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"SocialMediaInstagram":{"ContactMethodId":"00000000-0000-0000-0000-000000000000","ContactMethodName":"String","ContactAddress":{"Location":{"GeoLocationId":"00000000-0000-0000-0000-000000000000","StateId":"00000000000000000000000000000000","StateName":"String","SuburbId":"00000000000000000000000000000000","SuburbName":"String","CountryId":"00000000000000000000000000000000","CountryName":"String","LotNumber":"String","SubUnit":"String","BuildingNumber":"String","PostalDeliveryNumber":"String","StreetNumber":"String","StreetName":"String","AddressLineOne":"String","AddressLineTwo":"String","PostCode":"String","IsPhysical":false,"Notes":"String","AddressFull":"String","AddressFormatId":"4f7bf5b4-d77c-4ac7-99d6-7a575964480d","Latitude":0,"Longitude":0,"Timezone":"00000000000000000000000000000000","Estate":{"GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","DeveloperContactId":"00000000-0000-0000-0000-000000000000","DeveloperName":"String","DeveloperProfilePhotoUrl":"String","DeveloperProfilePhotoThumbnail":"String","RecordStatus":"String","Stages":[{"GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateId":"00000000-0000-0000-0000-000000000000","Name":"String","Notes":"String","RecordStatus":"String"}],"CurrentEstateStageId":"00000000-0000-0000-0000-000000000000","CurrentEstateStageName":"String"},"GeoEstateId":"00000000-0000-0000-0000-000000000000","GeoEstateStageId":"00000000-0000-0000-0000-000000000000","GeoEstateStageName":"String","IgnoreValidation":false},"IsPostal":false,"IsPrimaryLocation":false,"IsRegisteredLocation":false,"ContactAddressId":"00000000-0000-0000-0000-000000000000","SuburbName":"String","StateName":"String","CountryName":"String"},"ContactPhone":{"CountryCode":"String","AreaCode":"String","LocalNumber":"String"},"CountryId":"00000000000000000000000000000000","ContactDetails":"String","Notes":"String","ContactDetailsCode":"String","OrderContactMethod":0,"IsPrimaryContactMethod":false,"IsAddress":true,"ContactContactDetailId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","ContactDetailId":"00000000-0000-0000-0000-000000000000","IsPrimaryLocation":false,"IsRegisteredLocation":false,"IsPostal":false,"IsPhone":false,"EmailSignatureId":"00000000-0000-0000-0000-000000000000","EmailSignatureHTML":"String","EmailSignatureText":"String","ApiFrameworkAlternateKey":"String"},"IsRemovedContact":false,"IsDefault":false,"IsEmailEditable":false,"PrimaryImageContent":"String","PrimaryImageContentType":"String","PrimaryImageFileName":"String","UserProfileId":"00000000-0000-0000-0000-000000000000","UserId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","UserName":"String","ProfileName":"String","ContactFullName":"String","EmailAddress":"String","EmailSignature":"String","MobileNumber":"String","PhoneNumber":"String","ContactTypeId":"00000000-0000-0000-0000-000000000000","ContactTypeName":"String","FirstName":"String","Surname":"String","Title":"String","LegalName":"String","TradingName":"String","Abn":"String","Acn":"String","Arbn":"String","GstRegistered":false,"ESL":false,"Language":"String","InterpreterRequired":false,"LicenseeNotes":"String","ProfilePhotoUrl":"String","ProfilePhotoThumbnailUrl":"String","ProfileImageId":"00000000-0000-0000-0000-000000000000","Description":"String","EmploymentIndustry":"String","EmploymentRole":"String","EmploymentGeographicArea":"String","Timezone":"00000000-0000-0000-0000-000000000000","TimezoneName":"String","PrimaryAddress":"String","IsActiveContact":false}],"TotalContacts":0,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}