Sanctions Search API: v2

<back to all web services

GetCompanyLookup

CompanyLookup
The following routes are available for this service:
POST/companylookups/getGet a company lookup
<?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};


// @DataContract
class Authentication implements JsonSerializable
{
    public function __construct(
        /** @description The API User ID provided by us when you signed up to use our API */
        // @DataMember
        // @ApiMember(Description="The API User ID provided by us when you signed up to use our API", IsRequired=true, ParameterType="header, body")
        /** @var string */
        public string $apiUserId='',

        /** @description The API User Key provided by us when you signed up to use our API */
        // @DataMember
        // @ApiMember(Description="The API User Key provided by us when you signed up to use our API", IsRequired=true, ParameterType="header, body")
        /** @var string */
        public string $apiUserKey=''
    ) {
    }

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

// @DataContract
class BaseRequest implements IBaseRequest, JsonSerializable
{
    public function __construct(
        /** @description The authentication credentials */
        // @DataMember
        // @ApiMember(Description="The authentication credentials", IsRequired=true, ParameterType="header, body")
        /** @var Authentication|null */
        public ?Authentication $authentication=null
    ) {
    }

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

// @DataContract
class ResponseError implements JsonSerializable
{
    public function __construct(
        // @DataMember(Order=1)
        /** @var string|null */
        public ?string $errorCode=null,

        // @DataMember(Order=2)
        /** @var string|null */
        public ?string $fieldName=null,

        // @DataMember(Order=3)
        /** @var string|null */
        public ?string $message=null,

        // @DataMember(Order=4)
        /** @var array<string,string>|null */
        public ?array $meta=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['errorCode'])) $this->errorCode = $o['errorCode'];
        if (isset($o['fieldName'])) $this->fieldName = $o['fieldName'];
        if (isset($o['message'])) $this->message = $o['message'];
        if (isset($o['meta'])) $this->meta = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','string']), $o['meta']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->errorCode)) $o['errorCode'] = $this->errorCode;
        if (isset($this->fieldName)) $o['fieldName'] = $this->fieldName;
        if (isset($this->message)) $o['message'] = $this->message;
        if (isset($this->meta)) $o['meta'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','string']), $this->meta);
        return empty($o) ? new class(){} : $o;
    }
}

/**
 * @template array of ResponseError
 */
class ArrayOfResponseError extends \ArrayObject implements JsonSerializable
{
    public function __construct(ResponseError ...$items) {
        parent::__construct($items, \ArrayObject::STD_PROP_LIST);
    }
    
    /** @throws \Exception */
    public function append($value): void {
        if ($value instanceof ResponseError)
            parent::append($value);
        else
            throw new \Exception("Can only append a ResponseError to " . __CLASS__);
    }
    
    /** @throws Exception */
    public function fromMap($o): void {
        foreach ($o as $item) {
            $el = new ResponseError();
            $el->fromMap($item);
            $this->append($el);
        }
    }
    
    /** @throws Exception */
    public function jsonSerialize(): array {
        return parent::getArrayCopy();
    }
}

// @DataContract
class ResponseStatus implements JsonSerializable
{
    public function __construct(
        // @DataMember(Order=1)
        /** @var string|null */
        public ?string $errorCode=null,

        // @DataMember(Order=2)
        /** @var string|null */
        public ?string $message=null,

        // @DataMember(Order=3)
        /** @var string|null */
        public ?string $stackTrace=null,

        // @DataMember(Order=4)
        /** @var ArrayOfResponseError|null */
        public ?ArrayOfResponseError $errors=null,

        // @DataMember(Order=5)
        /** @var array<string,string>|null */
        public ?array $meta=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['errorCode'])) $this->errorCode = $o['errorCode'];
        if (isset($o['message'])) $this->message = $o['message'];
        if (isset($o['stackTrace'])) $this->stackTrace = $o['stackTrace'];
        if (isset($o['errors'])) $this->errors = JsonConverters::from('ArrayOfResponseError', $o['errors']);
        if (isset($o['meta'])) $this->meta = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','string']), $o['meta']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->errorCode)) $o['errorCode'] = $this->errorCode;
        if (isset($this->message)) $o['message'] = $this->message;
        if (isset($this->stackTrace)) $o['stackTrace'] = $this->stackTrace;
        if (isset($this->errors)) $o['errors'] = JsonConverters::to('ArrayOfResponseError', $this->errors);
        if (isset($this->meta)) $o['meta'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','string']), $this->meta);
        return empty($o) ? new class(){} : $o;
    }
}

class BaseResponse implements IBaseDataResponse, IHasResponseStatus, JsonSerializable
{
    public function __construct(
        /** @description The status of the response */
        // @ApiMember(Description="The status of the response")
        /** @var ResponseStatus|null */
        public ?ResponseStatus $responseStatus=null
    ) {
    }

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

class LinkedTo implements JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $clientId=null,
        /** @var int|null */
        public ?int $id=null,
        /** @var string|null */
        public ?string $type=null,
        /** @var string|null */
        public ?string $subtype=null,
        /** @var string|null */
        public ?string $status=null,
        /** @var string|null */
        public ?string $description=null,
        /** @var bool|null */
        public ?bool $isArchived=null,
        /** @var string|null */
        public ?string $name=null,
        /** @var DateTime|null */
        public ?DateTime $date=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['clientId'])) $this->clientId = $o['clientId'];
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['type'])) $this->type = $o['type'];
        if (isset($o['subtype'])) $this->subtype = $o['subtype'];
        if (isset($o['status'])) $this->status = $o['status'];
        if (isset($o['description'])) $this->description = $o['description'];
        if (isset($o['isArchived'])) $this->isArchived = $o['isArchived'];
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['date'])) $this->date = JsonConverters::from('DateTime', $o['date']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->clientId)) $o['clientId'] = $this->clientId;
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->type)) $o['type'] = $this->type;
        if (isset($this->subtype)) $o['subtype'] = $this->subtype;
        if (isset($this->status)) $o['status'] = $this->status;
        if (isset($this->description)) $o['description'] = $this->description;
        if (isset($this->isArchived)) $o['isArchived'] = $this->isArchived;
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->date)) $o['date'] = JsonConverters::to('DateTime', $this->date);
        return empty($o) ? new class(){} : $o;
    }
}

/**
 * @template array of LinkedTo
 */
class ArrayOfLinkedTo extends \ArrayObject implements JsonSerializable
{
    public function __construct(LinkedTo ...$items) {
        parent::__construct($items, \ArrayObject::STD_PROP_LIST);
    }
    
    /** @throws \Exception */
    public function append($value): void {
        if ($value instanceof LinkedTo)
            parent::append($value);
        else
            throw new \Exception("Can only append a LinkedTo to " . __CLASS__);
    }
    
    /** @throws Exception */
    public function fromMap($o): void {
        foreach ($o as $item) {
            $el = new LinkedTo();
            $el->fromMap($item);
            $this->append($el);
        }
    }
    
    /** @throws Exception */
    public function jsonSerialize(): array {
        return parent::getArrayCopy();
    }
}

class SearchCriteria implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $name=null,
        /** @var string|null */
        public ?string $address=null,
        /** @var string|null */
        public ?string $country=null,
        /** @var string|null */
        public ?string $dateOfBirth=null,
        /** @var string|null */
        public ?string $nationality=null,
        /** @var string|null */
        public ?string $reference=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['address'])) $this->address = $o['address'];
        if (isset($o['country'])) $this->country = $o['country'];
        if (isset($o['dateOfBirth'])) $this->dateOfBirth = $o['dateOfBirth'];
        if (isset($o['nationality'])) $this->nationality = $o['nationality'];
        if (isset($o['reference'])) $this->reference = $o['reference'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->address)) $o['address'] = $this->address;
        if (isset($this->country)) $o['country'] = $this->country;
        if (isset($this->dateOfBirth)) $o['dateOfBirth'] = $this->dateOfBirth;
        if (isset($this->nationality)) $o['nationality'] = $this->nationality;
        if (isset($this->reference)) $o['reference'] = $this->reference;
        return empty($o) ? new class(){} : $o;
    }
}

/**
 * @template array of String
 */
class ArrayOfLists extends \ArrayObject implements JsonSerializable
{
    public function __construct(String ...$items) {
        parent::__construct($items, \ArrayObject::STD_PROP_LIST);
    }
    
    /** @throws \Exception */
    public function append($value): void {
        if ($value instanceof String)
            parent::append($value);
        else
            throw new \Exception("Can only append a String to " . __CLASS__);
    }
    
    /** @throws Exception */
    public function fromMap($o): void {
        foreach ($o as $item) {
            $el = new String();
            $el->fromMap($item);
            $this->append($el);
        }
    }
    
    /** @throws Exception */
    public function jsonSerialize(): array {
        return parent::getArrayCopy();
    }
}

class CompanyDirectorOrShareholder implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $id=0,
        /** @var string|null */
        public ?string $searchType=null,
        /** @var DateTime */
        public DateTime $dateSearched=new DateTime(),
        /** @var DateTime */
        public DateTime $dateUpdated=new DateTime(),
        /** @var int */
        public int $numOfResults=0,
        /** @var bool|null */
        public ?bool $clientInResults=null,
        /** @var bool|null */
        public ?bool $clientNotInResults=null,
        /** @var bool|null */
        public ?bool $affectedByUpdate=null,
        /** @var SearchCriteria|null */
        public ?SearchCriteria $searchCriteria=null,
        /** @var bool|null */
        public ?bool $isDirector=null,
        /** @var bool|null */
        public ?bool $isShareholder=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['searchType'])) $this->searchType = $o['searchType'];
        if (isset($o['dateSearched'])) $this->dateSearched = JsonConverters::from('DateTime', $o['dateSearched']);
        if (isset($o['dateUpdated'])) $this->dateUpdated = JsonConverters::from('DateTime', $o['dateUpdated']);
        if (isset($o['numOfResults'])) $this->numOfResults = $o['numOfResults'];
        if (isset($o['clientInResults'])) $this->clientInResults = $o['clientInResults'];
        if (isset($o['clientNotInResults'])) $this->clientNotInResults = $o['clientNotInResults'];
        if (isset($o['affectedByUpdate'])) $this->affectedByUpdate = $o['affectedByUpdate'];
        if (isset($o['searchCriteria'])) $this->searchCriteria = JsonConverters::from('SearchCriteria', $o['searchCriteria']);
        if (isset($o['isDirector'])) $this->isDirector = $o['isDirector'];
        if (isset($o['isShareholder'])) $this->isShareholder = $o['isShareholder'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->searchType)) $o['searchType'] = $this->searchType;
        if (isset($this->dateSearched)) $o['dateSearched'] = JsonConverters::to('DateTime', $this->dateSearched);
        if (isset($this->dateUpdated)) $o['dateUpdated'] = JsonConverters::to('DateTime', $this->dateUpdated);
        if (isset($this->numOfResults)) $o['numOfResults'] = $this->numOfResults;
        if (isset($this->clientInResults)) $o['clientInResults'] = $this->clientInResults;
        if (isset($this->clientNotInResults)) $o['clientNotInResults'] = $this->clientNotInResults;
        if (isset($this->affectedByUpdate)) $o['affectedByUpdate'] = $this->affectedByUpdate;
        if (isset($this->searchCriteria)) $o['searchCriteria'] = JsonConverters::to('SearchCriteria', $this->searchCriteria);
        if (isset($this->isDirector)) $o['isDirector'] = $this->isDirector;
        if (isset($this->isShareholder)) $o['isShareholder'] = $this->isShareholder;
        return empty($o) ? new class(){} : $o;
    }
}

class SearchSource implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $listId=null,
        /** @var string|null */
        public ?string $listName=null,
        /** @var string|null */
        public ?string $listShortName=null,
        /** @var bool|null */
        public ?bool $isAffectedByListUpdate=null
    ) {
    }

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

class SearchListItem implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $id=0,
        /** @var string|null */
        public ?string $searchType=null,
        /** @var DateTime */
        public DateTime $dateSearched=new DateTime(),
        /** @var DateTime */
        public DateTime $dateUpdated=new DateTime(),
        /** @var DateTime|null */
        public ?DateTime $dateArchived=null,
        /** @var bool|null */
        public ?bool $isArchived=null,
        /** @var int */
        public int $numOfResults=0,
        /** @var bool|null */
        public ?bool $clientInResults=null,
        /** @var bool|null */
        public ?bool $clientNotInResults=null,
        /** @var bool|null */
        public ?bool $affectedByUpdate=null,
        /** @var SearchCriteria|null */
        public ?SearchCriteria $searchCriteria=null,
        /** @var array<SearchSource>|null */
        public ?array $searchSources=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['searchType'])) $this->searchType = $o['searchType'];
        if (isset($o['dateSearched'])) $this->dateSearched = JsonConverters::from('DateTime', $o['dateSearched']);
        if (isset($o['dateUpdated'])) $this->dateUpdated = JsonConverters::from('DateTime', $o['dateUpdated']);
        if (isset($o['dateArchived'])) $this->dateArchived = JsonConverters::from('DateTime', $o['dateArchived']);
        if (isset($o['isArchived'])) $this->isArchived = $o['isArchived'];
        if (isset($o['numOfResults'])) $this->numOfResults = $o['numOfResults'];
        if (isset($o['clientInResults'])) $this->clientInResults = $o['clientInResults'];
        if (isset($o['clientNotInResults'])) $this->clientNotInResults = $o['clientNotInResults'];
        if (isset($o['affectedByUpdate'])) $this->affectedByUpdate = $o['affectedByUpdate'];
        if (isset($o['searchCriteria'])) $this->searchCriteria = JsonConverters::from('SearchCriteria', $o['searchCriteria']);
        if (isset($o['searchSources'])) $this->searchSources = JsonConverters::fromArray('SearchSource', $o['searchSources']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->searchType)) $o['searchType'] = $this->searchType;
        if (isset($this->dateSearched)) $o['dateSearched'] = JsonConverters::to('DateTime', $this->dateSearched);
        if (isset($this->dateUpdated)) $o['dateUpdated'] = JsonConverters::to('DateTime', $this->dateUpdated);
        if (isset($this->dateArchived)) $o['dateArchived'] = JsonConverters::to('DateTime', $this->dateArchived);
        if (isset($this->isArchived)) $o['isArchived'] = $this->isArchived;
        if (isset($this->numOfResults)) $o['numOfResults'] = $this->numOfResults;
        if (isset($this->clientInResults)) $o['clientInResults'] = $this->clientInResults;
        if (isset($this->clientNotInResults)) $o['clientNotInResults'] = $this->clientNotInResults;
        if (isset($this->affectedByUpdate)) $o['affectedByUpdate'] = $this->affectedByUpdate;
        if (isset($this->searchCriteria)) $o['searchCriteria'] = JsonConverters::to('SearchCriteria', $this->searchCriteria);
        if (isset($this->searchSources)) $o['searchSources'] = JsonConverters::toArray('SearchSource', $this->searchSources);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedLatestAccounts implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $currency=null,
        /** @var float|null */
        public ?float $turnover=null,
        /** @var float|null */
        public ?float $shareholdersEquity=null,
        /** @var int|null */
        public ?int $creditRating=null,
        /** @var int|null */
        public ?int $creditLimit=null,
        /** @var string|null */
        public ?string $creditRatingDescription=null,
        /** @var int|null */
        public ?int $accountRefDay=null,
        /** @var int|null */
        public ?int $accountRefMonth=null,
        /** @var DateTime|null */
        public ?DateTime $accountNextDueDate=null,
        /** @var DateTime|null */
        public ?DateTime $accountLastMadeUpDate=null,
        /** @var string|null */
        public ?string $accountCategory=null,
        /** @var DateTime|null */
        public ?DateTime $returnLastMadeUpDate=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['currency'])) $this->currency = $o['currency'];
        if (isset($o['turnover'])) $this->turnover = $o['turnover'];
        if (isset($o['shareholdersEquity'])) $this->shareholdersEquity = $o['shareholdersEquity'];
        if (isset($o['creditRating'])) $this->creditRating = $o['creditRating'];
        if (isset($o['creditLimit'])) $this->creditLimit = $o['creditLimit'];
        if (isset($o['creditRatingDescription'])) $this->creditRatingDescription = $o['creditRatingDescription'];
        if (isset($o['accountRefDay'])) $this->accountRefDay = $o['accountRefDay'];
        if (isset($o['accountRefMonth'])) $this->accountRefMonth = $o['accountRefMonth'];
        if (isset($o['accountNextDueDate'])) $this->accountNextDueDate = JsonConverters::from('DateTime', $o['accountNextDueDate']);
        if (isset($o['accountLastMadeUpDate'])) $this->accountLastMadeUpDate = JsonConverters::from('DateTime', $o['accountLastMadeUpDate']);
        if (isset($o['accountCategory'])) $this->accountCategory = $o['accountCategory'];
        if (isset($o['returnLastMadeUpDate'])) $this->returnLastMadeUpDate = JsonConverters::from('DateTime', $o['returnLastMadeUpDate']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->currency)) $o['currency'] = $this->currency;
        if (isset($this->turnover)) $o['turnover'] = $this->turnover;
        if (isset($this->shareholdersEquity)) $o['shareholdersEquity'] = $this->shareholdersEquity;
        if (isset($this->creditRating)) $o['creditRating'] = $this->creditRating;
        if (isset($this->creditLimit)) $o['creditLimit'] = $this->creditLimit;
        if (isset($this->creditRatingDescription)) $o['creditRatingDescription'] = $this->creditRatingDescription;
        if (isset($this->accountRefDay)) $o['accountRefDay'] = $this->accountRefDay;
        if (isset($this->accountRefMonth)) $o['accountRefMonth'] = $this->accountRefMonth;
        if (isset($this->accountNextDueDate)) $o['accountNextDueDate'] = JsonConverters::to('DateTime', $this->accountNextDueDate);
        if (isset($this->accountLastMadeUpDate)) $o['accountLastMadeUpDate'] = JsonConverters::to('DateTime', $this->accountLastMadeUpDate);
        if (isset($this->accountCategory)) $o['accountCategory'] = $this->accountCategory;
        if (isset($this->returnLastMadeUpDate)) $o['returnLastMadeUpDate'] = JsonConverters::to('DateTime', $this->returnLastMadeUpDate);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedSummary implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $name=null,
        /** @var string|null */
        public ?string $country=null,
        /** @var string|null */
        public ?string $registrationNumber=null,
        /** @var string|null */
        public ?string $dateOfIncorporation=null,
        /** @var string|null */
        public ?string $typeOfIncorporation=null,
        /** @var string|null */
        public ?string $companyStatus=null,
        /** @var string|null */
        public ?string $address=null,
        /** @var string|null */
        public ?string $telephone=null,
        /** @var string|null */
        public ?string $sicCode=null,
        /** @var string|null */
        public ?string $sicDescription=null,
        /** @var string|null */
        public ?string $principleActivity=null,
        /** @var CompanyLookupEnhancedLatestAccounts|null */
        public ?CompanyLookupEnhancedLatestAccounts $latestAccounts=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['country'])) $this->country = $o['country'];
        if (isset($o['registrationNumber'])) $this->registrationNumber = $o['registrationNumber'];
        if (isset($o['dateOfIncorporation'])) $this->dateOfIncorporation = $o['dateOfIncorporation'];
        if (isset($o['typeOfIncorporation'])) $this->typeOfIncorporation = $o['typeOfIncorporation'];
        if (isset($o['companyStatus'])) $this->companyStatus = $o['companyStatus'];
        if (isset($o['address'])) $this->address = $o['address'];
        if (isset($o['telephone'])) $this->telephone = $o['telephone'];
        if (isset($o['sicCode'])) $this->sicCode = $o['sicCode'];
        if (isset($o['sicDescription'])) $this->sicDescription = $o['sicDescription'];
        if (isset($o['principleActivity'])) $this->principleActivity = $o['principleActivity'];
        if (isset($o['latestAccounts'])) $this->latestAccounts = JsonConverters::from('CompanyLookupEnhancedLatestAccounts', $o['latestAccounts']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->country)) $o['country'] = $this->country;
        if (isset($this->registrationNumber)) $o['registrationNumber'] = $this->registrationNumber;
        if (isset($this->dateOfIncorporation)) $o['dateOfIncorporation'] = $this->dateOfIncorporation;
        if (isset($this->typeOfIncorporation)) $o['typeOfIncorporation'] = $this->typeOfIncorporation;
        if (isset($this->companyStatus)) $o['companyStatus'] = $this->companyStatus;
        if (isset($this->address)) $o['address'] = $this->address;
        if (isset($this->telephone)) $o['telephone'] = $this->telephone;
        if (isset($this->sicCode)) $o['sicCode'] = $this->sicCode;
        if (isset($this->sicDescription)) $o['sicDescription'] = $this->sicDescription;
        if (isset($this->principleActivity)) $o['principleActivity'] = $this->principleActivity;
        if (isset($this->latestAccounts)) $o['latestAccounts'] = JsonConverters::to('CompanyLookupEnhancedLatestAccounts', $this->latestAccounts);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedAddress implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $fullAddress=null,
        /** @var string|null */
        public ?string $address1=null,
        /** @var string|null */
        public ?string $address2=null,
        /** @var string|null */
        public ?string $address3=null,
        /** @var string|null */
        public ?string $address4=null,
        /** @var string|null */
        public ?string $postCode=null,
        /** @var string|null */
        public ?string $telephone=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['fullAddress'])) $this->fullAddress = $o['fullAddress'];
        if (isset($o['address1'])) $this->address1 = $o['address1'];
        if (isset($o['address2'])) $this->address2 = $o['address2'];
        if (isset($o['address3'])) $this->address3 = $o['address3'];
        if (isset($o['address4'])) $this->address4 = $o['address4'];
        if (isset($o['postCode'])) $this->postCode = $o['postCode'];
        if (isset($o['telephone'])) $this->telephone = $o['telephone'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->fullAddress)) $o['fullAddress'] = $this->fullAddress;
        if (isset($this->address1)) $o['address1'] = $this->address1;
        if (isset($this->address2)) $o['address2'] = $this->address2;
        if (isset($this->address3)) $o['address3'] = $this->address3;
        if (isset($this->address4)) $o['address4'] = $this->address4;
        if (isset($this->postCode)) $o['postCode'] = $this->postCode;
        if (isset($this->telephone)) $o['telephone'] = $this->telephone;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedWebsite implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $website=null
    ) {
    }

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

class CompanyLookupEnhancedAdditionalContact implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $telephone=null,
        /** @var string|null */
        public ?string $faxNumber=null,
        /** @var string|null */
        public ?string $emailAddress=null,
        /** @var string|null */
        public ?string $webAddress=null,
        /** @var string|null */
        public ?string $twitter=null,
        /** @var string|null */
        public ?string $facebook=null,
        /** @var string|null */
        public ?string $googlePlus=null,
        /** @var string|null */
        public ?string $linkedIn=null,
        /** @var string|null */
        public ?string $contactName=null,
        /** @var string|null */
        public ?string $businessClassification=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['telephone'])) $this->telephone = $o['telephone'];
        if (isset($o['faxNumber'])) $this->faxNumber = $o['faxNumber'];
        if (isset($o['emailAddress'])) $this->emailAddress = $o['emailAddress'];
        if (isset($o['webAddress'])) $this->webAddress = $o['webAddress'];
        if (isset($o['twitter'])) $this->twitter = $o['twitter'];
        if (isset($o['facebook'])) $this->facebook = $o['facebook'];
        if (isset($o['googlePlus'])) $this->googlePlus = $o['googlePlus'];
        if (isset($o['linkedIn'])) $this->linkedIn = $o['linkedIn'];
        if (isset($o['contactName'])) $this->contactName = $o['contactName'];
        if (isset($o['businessClassification'])) $this->businessClassification = $o['businessClassification'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->telephone)) $o['telephone'] = $this->telephone;
        if (isset($this->faxNumber)) $o['faxNumber'] = $this->faxNumber;
        if (isset($this->emailAddress)) $o['emailAddress'] = $this->emailAddress;
        if (isset($this->webAddress)) $o['webAddress'] = $this->webAddress;
        if (isset($this->twitter)) $o['twitter'] = $this->twitter;
        if (isset($this->facebook)) $o['facebook'] = $this->facebook;
        if (isset($this->googlePlus)) $o['googlePlus'] = $this->googlePlus;
        if (isset($this->linkedIn)) $o['linkedIn'] = $this->linkedIn;
        if (isset($this->contactName)) $o['contactName'] = $this->contactName;
        if (isset($this->businessClassification)) $o['businessClassification'] = $this->businessClassification;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedContactInfo implements JsonSerializable
{
    public function __construct(
        /** @var CompanyLookupEnhancedAddress|null */
        public ?CompanyLookupEnhancedAddress $registeredAddress=null,
        /** @var array<CompanyLookupEnhancedAddress>|null */
        public ?array $tradingAddresses=null,
        /** @var array<CompanyLookupEnhancedWebsite>|null */
        public ?array $websites=null,
        /** @var CompanyLookupEnhancedAdditionalContact|null */
        public ?CompanyLookupEnhancedAdditionalContact $additionalContactInfo=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['registeredAddress'])) $this->registeredAddress = JsonConverters::from('CompanyLookupEnhancedAddress', $o['registeredAddress']);
        if (isset($o['tradingAddresses'])) $this->tradingAddresses = JsonConverters::fromArray('CompanyLookupEnhancedAddress', $o['tradingAddresses']);
        if (isset($o['websites'])) $this->websites = JsonConverters::fromArray('CompanyLookupEnhancedWebsite', $o['websites']);
        if (isset($o['additionalContactInfo'])) $this->additionalContactInfo = JsonConverters::from('CompanyLookupEnhancedAdditionalContact', $o['additionalContactInfo']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->registeredAddress)) $o['registeredAddress'] = JsonConverters::to('CompanyLookupEnhancedAddress', $this->registeredAddress);
        if (isset($this->tradingAddresses)) $o['tradingAddresses'] = JsonConverters::toArray('CompanyLookupEnhancedAddress', $this->tradingAddresses);
        if (isset($this->websites)) $o['websites'] = JsonConverters::toArray('CompanyLookupEnhancedWebsite', $this->websites);
        if (isset($this->additionalContactInfo)) $o['additionalContactInfo'] = JsonConverters::to('CompanyLookupEnhancedAdditionalContact', $this->additionalContactInfo);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedSicCode implements JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $sicCode2003=null,
        /** @var string|null */
        public ?string $sicCode2003Description=null,
        /** @var int|null */
        public ?int $sicCode2007=null,
        /** @var string|null */
        public ?string $sicCode2007Description=null,
        /** @var string|null */
        public ?string $status=null
    ) {
    }

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

class CompanyLookupEnhancedPreviousName implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $dateChanged=null,
        /** @var string|null */
        public ?string $name=null
    ) {
    }

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

class CompanyLookupEnhancedShareholder implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $title=null,
        /** @var string|null */
        public ?string $forename=null,
        /** @var string|null */
        public ?string $surname=null,
        /** @var string|null */
        public ?string $address1=null,
        /** @var string|null */
        public ?string $address2=null,
        /** @var string|null */
        public ?string $address3=null,
        /** @var string|null */
        public ?string $address4=null,
        /** @var string|null */
        public ?string $address5=null,
        /** @var string|null */
        public ?string $postCode=null,
        /** @var string|null */
        public ?string $shareType=null,
        /** @var float|null */
        public ?float $number=null,
        /** @var float|null */
        public ?float $value=null,
        /** @var string|null */
        public ?string $currency=null,
        /** @var string|null */
        public ?string $shareholderType=null,
        /** @var string|null */
        public ?string $shareClass=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['title'])) $this->title = $o['title'];
        if (isset($o['forename'])) $this->forename = $o['forename'];
        if (isset($o['surname'])) $this->surname = $o['surname'];
        if (isset($o['address1'])) $this->address1 = $o['address1'];
        if (isset($o['address2'])) $this->address2 = $o['address2'];
        if (isset($o['address3'])) $this->address3 = $o['address3'];
        if (isset($o['address4'])) $this->address4 = $o['address4'];
        if (isset($o['address5'])) $this->address5 = $o['address5'];
        if (isset($o['postCode'])) $this->postCode = $o['postCode'];
        if (isset($o['shareType'])) $this->shareType = $o['shareType'];
        if (isset($o['number'])) $this->number = $o['number'];
        if (isset($o['value'])) $this->value = $o['value'];
        if (isset($o['currency'])) $this->currency = $o['currency'];
        if (isset($o['shareholderType'])) $this->shareholderType = $o['shareholderType'];
        if (isset($o['shareClass'])) $this->shareClass = $o['shareClass'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->title)) $o['title'] = $this->title;
        if (isset($this->forename)) $o['forename'] = $this->forename;
        if (isset($this->surname)) $o['surname'] = $this->surname;
        if (isset($this->address1)) $o['address1'] = $this->address1;
        if (isset($this->address2)) $o['address2'] = $this->address2;
        if (isset($this->address3)) $o['address3'] = $this->address3;
        if (isset($this->address4)) $o['address4'] = $this->address4;
        if (isset($this->address5)) $o['address5'] = $this->address5;
        if (isset($this->postCode)) $o['postCode'] = $this->postCode;
        if (isset($this->shareType)) $o['shareType'] = $this->shareType;
        if (isset($this->number)) $o['number'] = $this->number;
        if (isset($this->value)) $o['value'] = $this->value;
        if (isset($this->currency)) $o['currency'] = $this->currency;
        if (isset($this->shareholderType)) $o['shareholderType'] = $this->shareholderType;
        if (isset($this->shareClass)) $o['shareClass'] = $this->shareClass;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedShareStructure implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $issuedShareCapital=null,
        /** @var array<CompanyLookupEnhancedShareholder>|null */
        public ?array $shareholders=null
    ) {
    }

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

class CompanyLookupEnhancedDirector implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $name=null,
        /** @var string|null */
        public ?string $address=null,
        /** @var string|null */
        public ?string $gender=null,
        /** @var DateTime|null */
        public ?DateTime $appointmentDate=null,
        /** @var DateTime|null */
        public ?DateTime $resignationDate=null,
        /** @var DateTime|null */
        public ?DateTime $dateOfBirth=null,
        /** @var string|null */
        public ?string $position=null,
        /** @var int|null */
        public ?int $idNumber=null,
        /** @var int|null */
        public ?int $currentDirectorships=null,
        /** @var int|null */
        public ?int $previousDirectorships=null,
        /** @var int|null */
        public ?int $totalDirectorships=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['address'])) $this->address = $o['address'];
        if (isset($o['gender'])) $this->gender = $o['gender'];
        if (isset($o['appointmentDate'])) $this->appointmentDate = JsonConverters::from('DateTime', $o['appointmentDate']);
        if (isset($o['resignationDate'])) $this->resignationDate = JsonConverters::from('DateTime', $o['resignationDate']);
        if (isset($o['dateOfBirth'])) $this->dateOfBirth = JsonConverters::from('DateTime', $o['dateOfBirth']);
        if (isset($o['position'])) $this->position = $o['position'];
        if (isset($o['idNumber'])) $this->idNumber = $o['idNumber'];
        if (isset($o['currentDirectorships'])) $this->currentDirectorships = $o['currentDirectorships'];
        if (isset($o['previousDirectorships'])) $this->previousDirectorships = $o['previousDirectorships'];
        if (isset($o['totalDirectorships'])) $this->totalDirectorships = $o['totalDirectorships'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->address)) $o['address'] = $this->address;
        if (isset($this->gender)) $o['gender'] = $this->gender;
        if (isset($this->appointmentDate)) $o['appointmentDate'] = JsonConverters::to('DateTime', $this->appointmentDate);
        if (isset($this->resignationDate)) $o['resignationDate'] = JsonConverters::to('DateTime', $this->resignationDate);
        if (isset($this->dateOfBirth)) $o['dateOfBirth'] = JsonConverters::to('DateTime', $this->dateOfBirth);
        if (isset($this->position)) $o['position'] = $this->position;
        if (isset($this->idNumber)) $o['idNumber'] = $this->idNumber;
        if (isset($this->currentDirectorships)) $o['currentDirectorships'] = $this->currentDirectorships;
        if (isset($this->previousDirectorships)) $o['previousDirectorships'] = $this->previousDirectorships;
        if (isset($this->totalDirectorships)) $o['totalDirectorships'] = $this->totalDirectorships;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedDirectors implements JsonSerializable
{
    public function __construct(
        /** @var array<CompanyLookupEnhancedDirector>|null */
        public ?array $currentDirectors=null,
        /** @var array<CompanyLookupEnhancedDirector>|null */
        public ?array $previousDirectors=null
    ) {
    }

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

class CompanyLookupEnhancedCompany implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $country=null,
        /** @var string|null */
        public ?string $companyName=null,
        /** @var string|null */
        public ?string $companyNumber=null
    ) {
    }

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

class CompanyLookupEnhancedStructure implements JsonSerializable
{
    public function __construct(
        /** @var array<CompanyLookupEnhancedCompany>|null */
        public ?array $parentCompanies=null,
        /** @var array<CompanyLookupEnhancedCompany>|null */
        public ?array $subsidiaryCompanies=null
    ) {
    }

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

class CompanyLookupEnhancedCCJ implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $date=null,
        /** @var string|null */
        public ?string $court=null,
        /** @var float|null */
        public ?float $amount=null,
        /** @var string|null */
        public ?string $caseNumber=null,
        /** @var string|null */
        public ?string $status=null,
        /** @var string|null */
        public ?string $datePaid=null,
        /** @var string|null */
        public ?string $incomingRecordDetails=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['date'])) $this->date = JsonConverters::from('DateTime', $o['date']);
        if (isset($o['court'])) $this->court = $o['court'];
        if (isset($o['amount'])) $this->amount = $o['amount'];
        if (isset($o['caseNumber'])) $this->caseNumber = $o['caseNumber'];
        if (isset($o['status'])) $this->status = $o['status'];
        if (isset($o['datePaid'])) $this->datePaid = $o['datePaid'];
        if (isset($o['incomingRecordDetails'])) $this->incomingRecordDetails = $o['incomingRecordDetails'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->date)) $o['date'] = JsonConverters::to('DateTime', $this->date);
        if (isset($this->court)) $o['court'] = $this->court;
        if (isset($this->amount)) $o['amount'] = $this->amount;
        if (isset($this->caseNumber)) $o['caseNumber'] = $this->caseNumber;
        if (isset($this->status)) $o['status'] = $this->status;
        if (isset($this->datePaid)) $o['datePaid'] = $this->datePaid;
        if (isset($this->incomingRecordDetails)) $o['incomingRecordDetails'] = $this->incomingRecordDetails;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedCCJs implements JsonSerializable
{
    public function __construct(
        /** @var array<CompanyLookupEnhancedCCJ>|null */
        public ?array $possibleCCJs=null,
        /** @var array<CompanyLookupEnhancedCCJ>|null */
        public ?array $exactCCJs=null
    ) {
    }

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

class CompanyLookupEnhancedEvent implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $date=null,
        /** @var string|null */
        public ?string $description=null
    ) {
    }

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

class CompanyLookupEnhancedCommentary implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $text=null,
        /** @var string|null */
        public ?string $positiveOrNegative=null,
        /** @var int|null */
        public ?int $priority=null
    ) {
    }

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

class CompanyLookupEnhancedCreditLimit implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $date=null,
        /** @var int|null */
        public ?int $dateOrder=null,
        /** @var int|null */
        public ?int $amount=null
    ) {
    }

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

class CompanyLookupEnhancedCreditRating implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $date=null,
        /** @var int|null */
        public ?int $dateOrder=null,
        /** @var int|null */
        public ?int $amount=null,
        /** @var string|null */
        public ?string $shortDescription=null,
        /** @var string|null */
        public ?string $description=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['date'])) $this->date = JsonConverters::from('DateTime', $o['date']);
        if (isset($o['dateOrder'])) $this->dateOrder = $o['dateOrder'];
        if (isset($o['amount'])) $this->amount = $o['amount'];
        if (isset($o['shortDescription'])) $this->shortDescription = $o['shortDescription'];
        if (isset($o['description'])) $this->description = $o['description'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->date)) $o['date'] = JsonConverters::to('DateTime', $this->date);
        if (isset($this->dateOrder)) $o['dateOrder'] = $this->dateOrder;
        if (isset($this->amount)) $o['amount'] = $this->amount;
        if (isset($this->shortDescription)) $o['shortDescription'] = $this->shortDescription;
        if (isset($this->description)) $o['description'] = $this->description;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedCreditAccount implements JsonSerializable
{
    public function __construct(
        /** @var array<CompanyLookupEnhancedCreditLimit>|null */
        public ?array $creditLimitHistory=null,
        /** @var array<CompanyLookupEnhancedCreditRating>|null */
        public ?array $creditRatingHistory=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['creditLimitHistory'])) $this->creditLimitHistory = JsonConverters::fromArray('CompanyLookupEnhancedCreditLimit', $o['creditLimitHistory']);
        if (isset($o['creditRatingHistory'])) $this->creditRatingHistory = JsonConverters::fromArray('CompanyLookupEnhancedCreditRating', $o['creditRatingHistory']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->creditLimitHistory)) $o['creditLimitHistory'] = JsonConverters::toArray('CompanyLookupEnhancedCreditLimit', $this->creditLimitHistory);
        if (isset($this->creditRatingHistory)) $o['creditRatingHistory'] = JsonConverters::toArray('CompanyLookupEnhancedCreditRating', $this->creditRatingHistory);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupFinancialProfit implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $turnover=null,
        /** @var float|null */
        public ?float $export=null,
        /** @var float|null */
        public ?float $costOfSales=null,
        /** @var float|null */
        public ?float $grossProfit=null,
        /** @var float|null */
        public ?float $wagesAndSalaries=null,
        /** @var float|null */
        public ?float $directorEmolument=null,
        /** @var float|null */
        public ?float $operatingProfit=null,
        /** @var float|null */
        public ?float $depreciation=null,
        /** @var float|null */
        public ?float $auditFees=null,
        /** @var float|null */
        public ?float $interestPayments=null,
        /** @var float|null */
        public ?float $pretaxProfit=null,
        /** @var float|null */
        public ?float $taxation=null,
        /** @var float|null */
        public ?float $profitAfterTax=null,
        /** @var float|null */
        public ?float $dividendsPayable=null,
        /** @var float|null */
        public ?float $retainedProfit=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['turnover'])) $this->turnover = $o['turnover'];
        if (isset($o['export'])) $this->export = $o['export'];
        if (isset($o['costOfSales'])) $this->costOfSales = $o['costOfSales'];
        if (isset($o['grossProfit'])) $this->grossProfit = $o['grossProfit'];
        if (isset($o['wagesAndSalaries'])) $this->wagesAndSalaries = $o['wagesAndSalaries'];
        if (isset($o['directorEmolument'])) $this->directorEmolument = $o['directorEmolument'];
        if (isset($o['operatingProfit'])) $this->operatingProfit = $o['operatingProfit'];
        if (isset($o['depreciation'])) $this->depreciation = $o['depreciation'];
        if (isset($o['auditFees'])) $this->auditFees = $o['auditFees'];
        if (isset($o['interestPayments'])) $this->interestPayments = $o['interestPayments'];
        if (isset($o['pretaxProfit'])) $this->pretaxProfit = $o['pretaxProfit'];
        if (isset($o['taxation'])) $this->taxation = $o['taxation'];
        if (isset($o['profitAfterTax'])) $this->profitAfterTax = $o['profitAfterTax'];
        if (isset($o['dividendsPayable'])) $this->dividendsPayable = $o['dividendsPayable'];
        if (isset($o['retainedProfit'])) $this->retainedProfit = $o['retainedProfit'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->turnover)) $o['turnover'] = $this->turnover;
        if (isset($this->export)) $o['export'] = $this->export;
        if (isset($this->costOfSales)) $o['costOfSales'] = $this->costOfSales;
        if (isset($this->grossProfit)) $o['grossProfit'] = $this->grossProfit;
        if (isset($this->wagesAndSalaries)) $o['wagesAndSalaries'] = $this->wagesAndSalaries;
        if (isset($this->directorEmolument)) $o['directorEmolument'] = $this->directorEmolument;
        if (isset($this->operatingProfit)) $o['operatingProfit'] = $this->operatingProfit;
        if (isset($this->depreciation)) $o['depreciation'] = $this->depreciation;
        if (isset($this->auditFees)) $o['auditFees'] = $this->auditFees;
        if (isset($this->interestPayments)) $o['interestPayments'] = $this->interestPayments;
        if (isset($this->pretaxProfit)) $o['pretaxProfit'] = $this->pretaxProfit;
        if (isset($this->taxation)) $o['taxation'] = $this->taxation;
        if (isset($this->profitAfterTax)) $o['profitAfterTax'] = $this->profitAfterTax;
        if (isset($this->dividendsPayable)) $o['dividendsPayable'] = $this->dividendsPayable;
        if (isset($this->retainedProfit)) $o['retainedProfit'] = $this->retainedProfit;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupFinancialBalance implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $tangibleAccounts=null,
        /** @var float|null */
        public ?float $intangibleAssets=null,
        /** @var float|null */
        public ?float $totalFixedAssets=null,
        /** @var float|null */
        public ?float $stock=null,
        /** @var float|null */
        public ?float $tradeDebtors=null,
        /** @var float|null */
        public ?float $cash=null,
        /** @var float|null */
        public ?float $otherDebtors=null,
        /** @var float|null */
        public ?float $miscCurrentAssets=null,
        /** @var float|null */
        public ?float $totalCurrentAssets=null,
        /** @var float|null */
        public ?float $tradeCreditors=null,
        /** @var float|null */
        public ?float $bankLoansAndOverdrafts=null,
        /** @var float|null */
        public ?float $otherShortTermFinance=null,
        /** @var float|null */
        public ?float $miscCurrentLiabilities=null,
        /** @var float|null */
        public ?float $totalCurrentLiabilities=null,
        /** @var float|null */
        public ?float $bankLoansAndOverdraftsAndLTL=null,
        /** @var float|null */
        public ?float $otherLongTermFinance=null,
        /** @var float|null */
        public ?float $totalLongTermFinance=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['tangibleAccounts'])) $this->tangibleAccounts = $o['tangibleAccounts'];
        if (isset($o['intangibleAssets'])) $this->intangibleAssets = $o['intangibleAssets'];
        if (isset($o['totalFixedAssets'])) $this->totalFixedAssets = $o['totalFixedAssets'];
        if (isset($o['stock'])) $this->stock = $o['stock'];
        if (isset($o['tradeDebtors'])) $this->tradeDebtors = $o['tradeDebtors'];
        if (isset($o['cash'])) $this->cash = $o['cash'];
        if (isset($o['otherDebtors'])) $this->otherDebtors = $o['otherDebtors'];
        if (isset($o['miscCurrentAssets'])) $this->miscCurrentAssets = $o['miscCurrentAssets'];
        if (isset($o['totalCurrentAssets'])) $this->totalCurrentAssets = $o['totalCurrentAssets'];
        if (isset($o['tradeCreditors'])) $this->tradeCreditors = $o['tradeCreditors'];
        if (isset($o['bankLoansAndOverdrafts'])) $this->bankLoansAndOverdrafts = $o['bankLoansAndOverdrafts'];
        if (isset($o['otherShortTermFinance'])) $this->otherShortTermFinance = $o['otherShortTermFinance'];
        if (isset($o['miscCurrentLiabilities'])) $this->miscCurrentLiabilities = $o['miscCurrentLiabilities'];
        if (isset($o['totalCurrentLiabilities'])) $this->totalCurrentLiabilities = $o['totalCurrentLiabilities'];
        if (isset($o['bankLoansAndOverdraftsAndLTL'])) $this->bankLoansAndOverdraftsAndLTL = $o['bankLoansAndOverdraftsAndLTL'];
        if (isset($o['otherLongTermFinance'])) $this->otherLongTermFinance = $o['otherLongTermFinance'];
        if (isset($o['totalLongTermFinance'])) $this->totalLongTermFinance = $o['totalLongTermFinance'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->tangibleAccounts)) $o['tangibleAccounts'] = $this->tangibleAccounts;
        if (isset($this->intangibleAssets)) $o['intangibleAssets'] = $this->intangibleAssets;
        if (isset($this->totalFixedAssets)) $o['totalFixedAssets'] = $this->totalFixedAssets;
        if (isset($this->stock)) $o['stock'] = $this->stock;
        if (isset($this->tradeDebtors)) $o['tradeDebtors'] = $this->tradeDebtors;
        if (isset($this->cash)) $o['cash'] = $this->cash;
        if (isset($this->otherDebtors)) $o['otherDebtors'] = $this->otherDebtors;
        if (isset($this->miscCurrentAssets)) $o['miscCurrentAssets'] = $this->miscCurrentAssets;
        if (isset($this->totalCurrentAssets)) $o['totalCurrentAssets'] = $this->totalCurrentAssets;
        if (isset($this->tradeCreditors)) $o['tradeCreditors'] = $this->tradeCreditors;
        if (isset($this->bankLoansAndOverdrafts)) $o['bankLoansAndOverdrafts'] = $this->bankLoansAndOverdrafts;
        if (isset($this->otherShortTermFinance)) $o['otherShortTermFinance'] = $this->otherShortTermFinance;
        if (isset($this->miscCurrentLiabilities)) $o['miscCurrentLiabilities'] = $this->miscCurrentLiabilities;
        if (isset($this->totalCurrentLiabilities)) $o['totalCurrentLiabilities'] = $this->totalCurrentLiabilities;
        if (isset($this->bankLoansAndOverdraftsAndLTL)) $o['bankLoansAndOverdraftsAndLTL'] = $this->bankLoansAndOverdraftsAndLTL;
        if (isset($this->otherLongTermFinance)) $o['otherLongTermFinance'] = $this->otherLongTermFinance;
        if (isset($this->totalLongTermFinance)) $o['totalLongTermFinance'] = $this->totalLongTermFinance;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupFinancialCapital implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $calledUpSharedCapital=null,
        /** @var float|null */
        public ?float $profitAndLossAccountReserve=null,
        /** @var float|null */
        public ?float $revaluationReserve=null,
        /** @var float|null */
        public ?float $sundryReserves=null,
        /** @var float|null */
        public ?float $shareholderFunds=null
    ) {
    }

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

class CompanyLookupFinancialOther implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $netWorth=null,
        /** @var float|null */
        public ?float $netAssets=null,
        /** @var float|null */
        public ?float $workingCapital=null,
        /** @var float|null */
        public ?float $totalAssets=null,
        /** @var float|null */
        public ?float $totalLiabilities=null
    ) {
    }

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

class CompanyLookupFinancialCash implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $netCashFlowFromOperations=null,
        /** @var float|null */
        public ?float $netCashFlowBeforeFinancing=null,
        /** @var float|null */
        public ?float $netCashFlowFromFinancing=null,
        /** @var float|null */
        public ?float $increaseInCash=null
    ) {
    }

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

class CompanyLookupFinancialMisc implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $contingentLiability=null,
        /** @var float|null */
        public ?float $capitalEmployed=null,
        /** @var float|null */
        public ?float $numberOfEmployees=null,
        /** @var string|null */
        public ?string $auditors=null,
        /** @var string|null */
        public ?string $auditorComments=null,
        /** @var string|null */
        public ?string $bankers=null,
        /** @var string|null */
        public ?string $bankBranchCode=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['contingentLiability'])) $this->contingentLiability = $o['contingentLiability'];
        if (isset($o['capitalEmployed'])) $this->capitalEmployed = $o['capitalEmployed'];
        if (isset($o['numberOfEmployees'])) $this->numberOfEmployees = $o['numberOfEmployees'];
        if (isset($o['auditors'])) $this->auditors = $o['auditors'];
        if (isset($o['auditorComments'])) $this->auditorComments = $o['auditorComments'];
        if (isset($o['bankers'])) $this->bankers = $o['bankers'];
        if (isset($o['bankBranchCode'])) $this->bankBranchCode = $o['bankBranchCode'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->contingentLiability)) $o['contingentLiability'] = $this->contingentLiability;
        if (isset($this->capitalEmployed)) $o['capitalEmployed'] = $this->capitalEmployed;
        if (isset($this->numberOfEmployees)) $o['numberOfEmployees'] = $this->numberOfEmployees;
        if (isset($this->auditors)) $o['auditors'] = $this->auditors;
        if (isset($this->auditorComments)) $o['auditorComments'] = $this->auditorComments;
        if (isset($this->bankers)) $o['bankers'] = $this->bankers;
        if (isset($this->bankBranchCode)) $o['bankBranchCode'] = $this->bankBranchCode;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupFinancialRatios implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $preTaxProfitMargin=null,
        /** @var float|null */
        public ?float $currentRatio=null,
        /** @var float|null */
        public ?float $salesNetworkingCapital=null,
        /** @var float|null */
        public ?float $gearing=null,
        /** @var float|null */
        public ?float $equity=null,
        /** @var float|null */
        public ?float $creditorDays=null,
        /** @var float|null */
        public ?float $debtorDays=null,
        /** @var float|null */
        public ?float $liquidityAcidTest=null,
        /** @var float|null */
        public ?float $returnOnCapitalEmployed=null,
        /** @var float|null */
        public ?float $returnOnNetAssetsEmployed=null,
        /** @var float|null */
        public ?float $returnOnTotalAssetsEmployed=null,
        /** @var float|null */
        public ?float $currentDebtRatio=null,
        /** @var float|null */
        public ?float $totalDebtRatio=null,
        /** @var float|null */
        public ?float $stockTurnoverRatio=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['preTaxProfitMargin'])) $this->preTaxProfitMargin = $o['preTaxProfitMargin'];
        if (isset($o['currentRatio'])) $this->currentRatio = $o['currentRatio'];
        if (isset($o['salesNetworkingCapital'])) $this->salesNetworkingCapital = $o['salesNetworkingCapital'];
        if (isset($o['gearing'])) $this->gearing = $o['gearing'];
        if (isset($o['equity'])) $this->equity = $o['equity'];
        if (isset($o['creditorDays'])) $this->creditorDays = $o['creditorDays'];
        if (isset($o['debtorDays'])) $this->debtorDays = $o['debtorDays'];
        if (isset($o['liquidityAcidTest'])) $this->liquidityAcidTest = $o['liquidityAcidTest'];
        if (isset($o['returnOnCapitalEmployed'])) $this->returnOnCapitalEmployed = $o['returnOnCapitalEmployed'];
        if (isset($o['returnOnNetAssetsEmployed'])) $this->returnOnNetAssetsEmployed = $o['returnOnNetAssetsEmployed'];
        if (isset($o['returnOnTotalAssetsEmployed'])) $this->returnOnTotalAssetsEmployed = $o['returnOnTotalAssetsEmployed'];
        if (isset($o['currentDebtRatio'])) $this->currentDebtRatio = $o['currentDebtRatio'];
        if (isset($o['totalDebtRatio'])) $this->totalDebtRatio = $o['totalDebtRatio'];
        if (isset($o['stockTurnoverRatio'])) $this->stockTurnoverRatio = $o['stockTurnoverRatio'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->preTaxProfitMargin)) $o['preTaxProfitMargin'] = $this->preTaxProfitMargin;
        if (isset($this->currentRatio)) $o['currentRatio'] = $this->currentRatio;
        if (isset($this->salesNetworkingCapital)) $o['salesNetworkingCapital'] = $this->salesNetworkingCapital;
        if (isset($this->gearing)) $o['gearing'] = $this->gearing;
        if (isset($this->equity)) $o['equity'] = $this->equity;
        if (isset($this->creditorDays)) $o['creditorDays'] = $this->creditorDays;
        if (isset($this->debtorDays)) $o['debtorDays'] = $this->debtorDays;
        if (isset($this->liquidityAcidTest)) $o['liquidityAcidTest'] = $this->liquidityAcidTest;
        if (isset($this->returnOnCapitalEmployed)) $o['returnOnCapitalEmployed'] = $this->returnOnCapitalEmployed;
        if (isset($this->returnOnNetAssetsEmployed)) $o['returnOnNetAssetsEmployed'] = $this->returnOnNetAssetsEmployed;
        if (isset($this->returnOnTotalAssetsEmployed)) $o['returnOnTotalAssetsEmployed'] = $this->returnOnTotalAssetsEmployed;
        if (isset($this->currentDebtRatio)) $o['currentDebtRatio'] = $this->currentDebtRatio;
        if (isset($this->totalDebtRatio)) $o['totalDebtRatio'] = $this->totalDebtRatio;
        if (isset($this->stockTurnoverRatio)) $o['stockTurnoverRatio'] = $this->stockTurnoverRatio;
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhancedFinancialStatement implements JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $yearEndDateOrder=null,
        /** @var DateTime|null */
        public ?DateTime $yearEndDate=null,
        /** @var int|null */
        public ?int $summaryNumberOfWeeks=null,
        /** @var string|null */
        public ?string $summaryCurrency=null,
        /** @var string|null */
        public ?string $summaryConsolidatedAccount=null,
        /** @var CompanyLookupFinancialProfit|null */
        public ?CompanyLookupFinancialProfit $profitAndLoss=null,
        /** @var CompanyLookupFinancialBalance|null */
        public ?CompanyLookupFinancialBalance $balanceSheet=null,
        /** @var CompanyLookupFinancialCapital|null */
        public ?CompanyLookupFinancialCapital $capitalAndReserves=null,
        /** @var CompanyLookupFinancialOther|null */
        public ?CompanyLookupFinancialOther $other=null,
        /** @var CompanyLookupFinancialCash|null */
        public ?CompanyLookupFinancialCash $cash=null,
        /** @var CompanyLookupFinancialMisc|null */
        public ?CompanyLookupFinancialMisc $misc=null,
        /** @var CompanyLookupFinancialRatios|null */
        public ?CompanyLookupFinancialRatios $ratios=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['yearEndDateOrder'])) $this->yearEndDateOrder = $o['yearEndDateOrder'];
        if (isset($o['yearEndDate'])) $this->yearEndDate = JsonConverters::from('DateTime', $o['yearEndDate']);
        if (isset($o['summaryNumberOfWeeks'])) $this->summaryNumberOfWeeks = $o['summaryNumberOfWeeks'];
        if (isset($o['summaryCurrency'])) $this->summaryCurrency = $o['summaryCurrency'];
        if (isset($o['summaryConsolidatedAccount'])) $this->summaryConsolidatedAccount = $o['summaryConsolidatedAccount'];
        if (isset($o['profitAndLoss'])) $this->profitAndLoss = JsonConverters::from('CompanyLookupFinancialProfit', $o['profitAndLoss']);
        if (isset($o['balanceSheet'])) $this->balanceSheet = JsonConverters::from('CompanyLookupFinancialBalance', $o['balanceSheet']);
        if (isset($o['capitalAndReserves'])) $this->capitalAndReserves = JsonConverters::from('CompanyLookupFinancialCapital', $o['capitalAndReserves']);
        if (isset($o['other'])) $this->other = JsonConverters::from('CompanyLookupFinancialOther', $o['other']);
        if (isset($o['cash'])) $this->cash = JsonConverters::from('CompanyLookupFinancialCash', $o['cash']);
        if (isset($o['misc'])) $this->misc = JsonConverters::from('CompanyLookupFinancialMisc', $o['misc']);
        if (isset($o['ratios'])) $this->ratios = JsonConverters::from('CompanyLookupFinancialRatios', $o['ratios']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->yearEndDateOrder)) $o['yearEndDateOrder'] = $this->yearEndDateOrder;
        if (isset($this->yearEndDate)) $o['yearEndDate'] = JsonConverters::to('DateTime', $this->yearEndDate);
        if (isset($this->summaryNumberOfWeeks)) $o['summaryNumberOfWeeks'] = $this->summaryNumberOfWeeks;
        if (isset($this->summaryCurrency)) $o['summaryCurrency'] = $this->summaryCurrency;
        if (isset($this->summaryConsolidatedAccount)) $o['summaryConsolidatedAccount'] = $this->summaryConsolidatedAccount;
        if (isset($this->profitAndLoss)) $o['profitAndLoss'] = JsonConverters::to('CompanyLookupFinancialProfit', $this->profitAndLoss);
        if (isset($this->balanceSheet)) $o['balanceSheet'] = JsonConverters::to('CompanyLookupFinancialBalance', $this->balanceSheet);
        if (isset($this->capitalAndReserves)) $o['capitalAndReserves'] = JsonConverters::to('CompanyLookupFinancialCapital', $this->capitalAndReserves);
        if (isset($this->other)) $o['other'] = JsonConverters::to('CompanyLookupFinancialOther', $this->other);
        if (isset($this->cash)) $o['cash'] = JsonConverters::to('CompanyLookupFinancialCash', $this->cash);
        if (isset($this->misc)) $o['misc'] = JsonConverters::to('CompanyLookupFinancialMisc', $this->misc);
        if (isset($this->ratios)) $o['ratios'] = JsonConverters::to('CompanyLookupFinancialRatios', $this->ratios);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupEnhanced implements JsonSerializable
{
    public function __construct(
        /** @var CompanyLookupEnhancedSummary|null */
        public ?CompanyLookupEnhancedSummary $summary=null,
        /** @var CompanyLookupEnhancedContactInfo|null */
        public ?CompanyLookupEnhancedContactInfo $contactInformation=null,
        /** @var array<CompanyLookupEnhancedSicCode>|null */
        public ?array $sicCodes=null,
        /** @var array<CompanyLookupEnhancedPreviousName>|null */
        public ?array $previousNames=null,
        /** @var CompanyLookupEnhancedShareStructure|null */
        public ?CompanyLookupEnhancedShareStructure $shareStructure=null,
        /** @var CompanyLookupEnhancedDirectors|null */
        public ?CompanyLookupEnhancedDirectors $directors=null,
        /** @var CompanyLookupEnhancedStructure|null */
        public ?CompanyLookupEnhancedStructure $groupStructure=null,
        /** @var CompanyLookupEnhancedCCJs|null */
        public ?CompanyLookupEnhancedCCJs $countyCourtJudgements=null,
        /** @var array<CompanyLookupEnhancedEvent>|null */
        public ?array $eventHistory=null,
        /** @var array<CompanyLookupEnhancedCommentary>|null */
        public ?array $commentaries=null,
        /** @var CompanyLookupEnhancedCreditAccount|null */
        public ?CompanyLookupEnhancedCreditAccount $creditAccounts=null,
        /** @var array<CompanyLookupEnhancedFinancialStatement>|null */
        public ?array $financialStatements=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['summary'])) $this->summary = JsonConverters::from('CompanyLookupEnhancedSummary', $o['summary']);
        if (isset($o['contactInformation'])) $this->contactInformation = JsonConverters::from('CompanyLookupEnhancedContactInfo', $o['contactInformation']);
        if (isset($o['sicCodes'])) $this->sicCodes = JsonConverters::fromArray('CompanyLookupEnhancedSicCode', $o['sicCodes']);
        if (isset($o['previousNames'])) $this->previousNames = JsonConverters::fromArray('CompanyLookupEnhancedPreviousName', $o['previousNames']);
        if (isset($o['shareStructure'])) $this->shareStructure = JsonConverters::from('CompanyLookupEnhancedShareStructure', $o['shareStructure']);
        if (isset($o['directors'])) $this->directors = JsonConverters::from('CompanyLookupEnhancedDirectors', $o['directors']);
        if (isset($o['groupStructure'])) $this->groupStructure = JsonConverters::from('CompanyLookupEnhancedStructure', $o['groupStructure']);
        if (isset($o['countyCourtJudgements'])) $this->countyCourtJudgements = JsonConverters::from('CompanyLookupEnhancedCCJs', $o['countyCourtJudgements']);
        if (isset($o['eventHistory'])) $this->eventHistory = JsonConverters::fromArray('CompanyLookupEnhancedEvent', $o['eventHistory']);
        if (isset($o['commentaries'])) $this->commentaries = JsonConverters::fromArray('CompanyLookupEnhancedCommentary', $o['commentaries']);
        if (isset($o['creditAccounts'])) $this->creditAccounts = JsonConverters::from('CompanyLookupEnhancedCreditAccount', $o['creditAccounts']);
        if (isset($o['financialStatements'])) $this->financialStatements = JsonConverters::fromArray('CompanyLookupEnhancedFinancialStatement', $o['financialStatements']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->summary)) $o['summary'] = JsonConverters::to('CompanyLookupEnhancedSummary', $this->summary);
        if (isset($this->contactInformation)) $o['contactInformation'] = JsonConverters::to('CompanyLookupEnhancedContactInfo', $this->contactInformation);
        if (isset($this->sicCodes)) $o['sicCodes'] = JsonConverters::toArray('CompanyLookupEnhancedSicCode', $this->sicCodes);
        if (isset($this->previousNames)) $o['previousNames'] = JsonConverters::toArray('CompanyLookupEnhancedPreviousName', $this->previousNames);
        if (isset($this->shareStructure)) $o['shareStructure'] = JsonConverters::to('CompanyLookupEnhancedShareStructure', $this->shareStructure);
        if (isset($this->directors)) $o['directors'] = JsonConverters::to('CompanyLookupEnhancedDirectors', $this->directors);
        if (isset($this->groupStructure)) $o['groupStructure'] = JsonConverters::to('CompanyLookupEnhancedStructure', $this->groupStructure);
        if (isset($this->countyCourtJudgements)) $o['countyCourtJudgements'] = JsonConverters::to('CompanyLookupEnhancedCCJs', $this->countyCourtJudgements);
        if (isset($this->eventHistory)) $o['eventHistory'] = JsonConverters::toArray('CompanyLookupEnhancedEvent', $this->eventHistory);
        if (isset($this->commentaries)) $o['commentaries'] = JsonConverters::toArray('CompanyLookupEnhancedCommentary', $this->commentaries);
        if (isset($this->creditAccounts)) $o['creditAccounts'] = JsonConverters::to('CompanyLookupEnhancedCreditAccount', $this->creditAccounts);
        if (isset($this->financialStatements)) $o['financialStatements'] = JsonConverters::toArray('CompanyLookupEnhancedFinancialStatement', $this->financialStatements);
        return empty($o) ? new class(){} : $o;
    }
}

class CompanyLookupSearchRecord implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $id=0,
        /** @var SearchCriteria|null */
        public ?SearchCriteria $searchCriteria=null,
        /** @var ArrayOfLists|null */
        public ?ArrayOfLists $selectedLists=null,
        /** @var DateTime */
        public DateTime $date=new DateTime(),
        /** @var bool|null */
        public ?bool $hasCompanyId=null,
        /** @var bool|null */
        public ?bool $hasCompanyDetails=null,
        /** @var bool|null */
        public ?bool $hasStartedSearches=null,
        /** @var bool|null */
        public ?bool $hasCompletedSearches=null,
        /** @var array<CompanyDirectorOrShareholder>|null */
        public ?array $companyDirectorsAndShareholders=null,
        /** @var SearchListItem|null */
        public ?SearchListItem $companySearchRecord=null,
        /** @var bool|null */
        public ?bool $hasEnhancedInformation=null,
        /** @var CompanyLookupEnhanced|null */
        public ?CompanyLookupEnhanced $enhancedInformation=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['searchCriteria'])) $this->searchCriteria = JsonConverters::from('SearchCriteria', $o['searchCriteria']);
        if (isset($o['selectedLists'])) $this->selectedLists = JsonConverters::from('ArrayOfLists', $o['selectedLists']);
        if (isset($o['date'])) $this->date = JsonConverters::from('DateTime', $o['date']);
        if (isset($o['hasCompanyId'])) $this->hasCompanyId = $o['hasCompanyId'];
        if (isset($o['hasCompanyDetails'])) $this->hasCompanyDetails = $o['hasCompanyDetails'];
        if (isset($o['hasStartedSearches'])) $this->hasStartedSearches = $o['hasStartedSearches'];
        if (isset($o['hasCompletedSearches'])) $this->hasCompletedSearches = $o['hasCompletedSearches'];
        if (isset($o['companyDirectorsAndShareholders'])) $this->companyDirectorsAndShareholders = JsonConverters::fromArray('CompanyDirectorOrShareholder', $o['companyDirectorsAndShareholders']);
        if (isset($o['companySearchRecord'])) $this->companySearchRecord = JsonConverters::from('SearchListItem', $o['companySearchRecord']);
        if (isset($o['hasEnhancedInformation'])) $this->hasEnhancedInformation = $o['hasEnhancedInformation'];
        if (isset($o['enhancedInformation'])) $this->enhancedInformation = JsonConverters::from('CompanyLookupEnhanced', $o['enhancedInformation']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->searchCriteria)) $o['searchCriteria'] = JsonConverters::to('SearchCriteria', $this->searchCriteria);
        if (isset($this->selectedLists)) $o['selectedLists'] = JsonConverters::to('ArrayOfLists', $this->selectedLists);
        if (isset($this->date)) $o['date'] = JsonConverters::to('DateTime', $this->date);
        if (isset($this->hasCompanyId)) $o['hasCompanyId'] = $this->hasCompanyId;
        if (isset($this->hasCompanyDetails)) $o['hasCompanyDetails'] = $this->hasCompanyDetails;
        if (isset($this->hasStartedSearches)) $o['hasStartedSearches'] = $this->hasStartedSearches;
        if (isset($this->hasCompletedSearches)) $o['hasCompletedSearches'] = $this->hasCompletedSearches;
        if (isset($this->companyDirectorsAndShareholders)) $o['companyDirectorsAndShareholders'] = JsonConverters::toArray('CompanyDirectorOrShareholder', $this->companyDirectorsAndShareholders);
        if (isset($this->companySearchRecord)) $o['companySearchRecord'] = JsonConverters::to('SearchListItem', $this->companySearchRecord);
        if (isset($this->hasEnhancedInformation)) $o['hasEnhancedInformation'] = $this->hasEnhancedInformation;
        if (isset($this->enhancedInformation)) $o['enhancedInformation'] = JsonConverters::to('CompanyLookupEnhanced', $this->enhancedInformation);
        return empty($o) ? new class(){} : $o;
    }
}

class GetCompanyLookupData extends BaseResponse implements IBaseSearchResponse, JsonSerializable
{
    /**
     * @param ResponseStatus|null $responseStatus
     */
    public function __construct(
        ?ResponseStatus $responseStatus=null,
        /** @var ArrayOfLinkedTo|null */
        public ?ArrayOfLinkedTo $linkedTo=null,
        /** @var CompanyLookupSearchRecord|null */
        public ?CompanyLookupSearchRecord $searchRecord=null
    ) {
        parent::__construct($responseStatus);
    }

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

// @DataContract
class GetCompanyLookupResponse implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var GetCompanyLookupData|null */
        public ?GetCompanyLookupData $data=null
    ) {
    }

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

class GetCompanyLookupRequest implements JsonSerializable
{
    public function __construct(
        /** @description If the search is being accessed by a sub user, specify their username here to validate they have permissions to view it */
        // @ApiMember(Description="If the search is being accessed by a sub user, specify their username here to validate they have permissions to view it")
        /** @var string|null */
        public ?string $subUserName=null,

        /** @var int */
        public int $id=0
    ) {
    }

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

// @DataContract
class GetCompanyLookup extends BaseRequest implements JsonSerializable
{
    /**
     * @param Authentication|null $authentication
     */
    public function __construct(
        ?Authentication $authentication=null,
        // @DataMember
        /** @var GetCompanyLookupRequest|null */
        public ?GetCompanyLookupRequest $request=null
    ) {
        parent::__construct($authentication);
    }

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

PHP GetCompanyLookup DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

POST /companylookups/get HTTP/1.1 
Host: api.sanctionssearch.com 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"request":{"subUserName":"String","id":0},"authentication":{"apiUserId":"String","apiUserKey":"String"}}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"data":{"linkedTo":[{"clientId":0,"id":0,"type":"String","subtype":"String","status":"String","description":"String","isArchived":false,"name":"String","date":"\/Date(-62135596800000-0000)\/"}],"searchRecord":{"id":0,"searchCriteria":{"name":"String","address":"String","country":"String","dateOfBirth":"String","nationality":"String","reference":"String"},"selectedLists":["String"],"date":"\/Date(-62135596800000-0000)\/","hasCompanyId":false,"hasCompanyDetails":false,"hasStartedSearches":false,"hasCompletedSearches":false,"companyDirectorsAndShareholders":[{"id":0,"searchType":"String","dateSearched":"\/Date(-62135596800000-0000)\/","dateUpdated":"\/Date(-62135596800000-0000)\/","numOfResults":0,"clientInResults":false,"clientNotInResults":false,"affectedByUpdate":false,"searchCriteria":{"name":"String","address":"String","country":"String","dateOfBirth":"String","nationality":"String","reference":"String"},"isDirector":false,"isShareholder":false}],"companySearchRecord":{"id":0,"searchType":"String","dateSearched":"\/Date(-62135596800000-0000)\/","dateUpdated":"\/Date(-62135596800000-0000)\/","dateArchived":"\/Date(-62135596800000-0000)\/","isArchived":false,"numOfResults":0,"clientInResults":false,"clientNotInResults":false,"affectedByUpdate":false,"searchCriteria":{"name":"String","address":"String","country":"String","dateOfBirth":"String","nationality":"String","reference":"String"},"searchSources":[{"listId":"String","listName":"String","listShortName":"String","isAffectedByListUpdate":false}]},"hasEnhancedInformation":false,"enhancedInformation":{"summary":{"name":"String","country":"String","registrationNumber":"String","dateOfIncorporation":"String","typeOfIncorporation":"String","companyStatus":"String","address":"String","telephone":"String","sicCode":"String","sicDescription":"String","principleActivity":"String","latestAccounts":{"currency":"String","turnover":0,"shareholdersEquity":0,"creditRating":0,"creditLimit":0,"creditRatingDescription":"String","accountRefDay":0,"accountRefMonth":0,"accountNextDueDate":"\/Date(-62135596800000-0000)\/","accountLastMadeUpDate":"\/Date(-62135596800000-0000)\/","accountCategory":"String","returnLastMadeUpDate":"\/Date(-62135596800000-0000)\/"}},"contactInformation":{"registeredAddress":{"fullAddress":"String","address1":"String","address2":"String","address3":"String","address4":"String","postCode":"String","telephone":"String"},"tradingAddresses":[{"fullAddress":"String","address1":"String","address2":"String","address3":"String","address4":"String","postCode":"String","telephone":"String"}],"websites":[{"website":"String"}],"additionalContactInfo":{"telephone":"String","faxNumber":"String","emailAddress":"String","webAddress":"String","twitter":"String","facebook":"String","googlePlus":"String","linkedIn":"String","contactName":"String","businessClassification":"String"}},"sicCodes":[{"sicCode2003":0,"sicCode2003Description":"String","sicCode2007":0,"sicCode2007Description":"String","status":"String"}],"previousNames":[{"dateChanged":"\/Date(-62135596800000-0000)\/","name":"String"}],"shareStructure":{"issuedShareCapital":0,"shareholders":[{"title":"String","forename":"String","surname":"String","address1":"String","address2":"String","address3":"String","address4":"String","address5":"String","postCode":"String","shareType":"String","number":0,"value":0,"currency":"String","shareholderType":"String","shareClass":"String"}]},"directors":{"currentDirectors":[{"name":"String","address":"String","gender":"String","appointmentDate":"\/Date(-62135596800000-0000)\/","resignationDate":"\/Date(-62135596800000-0000)\/","dateOfBirth":"\/Date(-62135596800000-0000)\/","position":"String","idNumber":0,"currentDirectorships":0,"previousDirectorships":0,"totalDirectorships":0}],"previousDirectors":[{"name":"String","address":"String","gender":"String","appointmentDate":"\/Date(-62135596800000-0000)\/","resignationDate":"\/Date(-62135596800000-0000)\/","dateOfBirth":"\/Date(-62135596800000-0000)\/","position":"String","idNumber":0,"currentDirectorships":0,"previousDirectorships":0,"totalDirectorships":0}]},"groupStructure":{"parentCompanies":[{"country":"String","companyName":"String","companyNumber":"String"}],"subsidiaryCompanies":[{"country":"String","companyName":"String","companyNumber":"String"}]},"countyCourtJudgements":{"possibleCCJs":[{"date":"\/Date(-62135596800000-0000)\/","court":"String","amount":0,"caseNumber":"String","status":"String","datePaid":"String","incomingRecordDetails":"String"}],"exactCCJs":[{"date":"\/Date(-62135596800000-0000)\/","court":"String","amount":0,"caseNumber":"String","status":"String","datePaid":"String","incomingRecordDetails":"String"}]},"eventHistory":[{"date":"\/Date(-62135596800000-0000)\/","description":"String"}],"commentaries":[{"text":"String","positiveOrNegative":"String","priority":0}],"creditAccounts":{"creditLimitHistory":[{"date":"\/Date(-62135596800000-0000)\/","dateOrder":0,"amount":0}],"creditRatingHistory":[{"date":"\/Date(-62135596800000-0000)\/","dateOrder":0,"amount":0,"shortDescription":"String","description":"String"}]},"financialStatements":[{"yearEndDateOrder":0,"yearEndDate":"\/Date(-62135596800000-0000)\/","summaryNumberOfWeeks":0,"summaryCurrency":"String","summaryConsolidatedAccount":"String","profitAndLoss":{"turnover":0,"export":0,"costOfSales":0,"grossProfit":0,"wagesAndSalaries":0,"directorEmolument":0,"operatingProfit":0,"depreciation":0,"auditFees":0,"interestPayments":0,"pretaxProfit":0,"taxation":0,"profitAfterTax":0,"dividendsPayable":0,"retainedProfit":0},"balanceSheet":{"tangibleAccounts":0,"intangibleAssets":0,"totalFixedAssets":0,"stock":0,"tradeDebtors":0,"cash":0,"otherDebtors":0,"miscCurrentAssets":0,"totalCurrentAssets":0,"tradeCreditors":0,"bankLoansAndOverdrafts":0,"otherShortTermFinance":0,"miscCurrentLiabilities":0,"totalCurrentLiabilities":0,"bankLoansAndOverdraftsAndLTL":0,"otherLongTermFinance":0,"totalLongTermFinance":0},"capitalAndReserves":{"calledUpSharedCapital":0,"profitAndLossAccountReserve":0,"revaluationReserve":0,"sundryReserves":0,"shareholderFunds":0},"other":{"netWorth":0,"netAssets":0,"workingCapital":0,"totalAssets":0,"totalLiabilities":0},"cash":{"netCashFlowFromOperations":0,"netCashFlowBeforeFinancing":0,"netCashFlowFromFinancing":0,"increaseInCash":0},"misc":{"contingentLiability":"String","capitalEmployed":0,"numberOfEmployees":0,"auditors":"String","auditorComments":"String","bankers":"String","bankBranchCode":"String"},"ratios":{"preTaxProfitMargin":0,"currentRatio":0,"salesNetworkingCapital":0,"gearing":0,"equity":0,"creditorDays":0,"debtorDays":0,"liquidityAcidTest":0,"returnOnCapitalEmployed":0,"returnOnNetAssetsEmployed":0,"returnOnTotalAssetsEmployed":0,"currentDebtRatio":0,"totalDebtRatio":0,"stockTurnoverRatio":0}}]}},"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}}