Sanctions Search API: v2

<back to all web services

GetDbsSearches

<?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 PagedRequest extends BaseRequest implements JsonSerializable
{
    /**
     * @param Authentication|null $authentication
     */
    public function __construct(
        ?Authentication $authentication=null,
        /** @description The maximum number of records to be returned in one page */
        // @DataMember(Name="page[limit]")
        // @ApiMember(Description="The maximum number of records to be returned in one page", ParameterType="query")
        /** @var int */
        public int $page_limit_=0,

        /** @description The starting point in the list of records from where the data should be fetched. Zero based index. */
        // @DataMember(Name="page[offset]")
        // @ApiMember(Description="The starting point in the list of records from where the data should be fetched. Zero based index.", ParameterType="query")
        /** @var int */
        public int $page_offset_=0,

        /** @description The term to determine the order in which the data is returned */
        // @DataMember
        // @ApiMember(Description="The term to determine the order in which the data is returned", ParameterType="query")
        /** @var string|null */
        public ?string $sort=null
    ) {
        parent::__construct($authentication);
    }

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

// @DataContract
class GetDbsSearches extends PagedRequest implements JsonSerializable
{
    /**
     * @param Authentication|null $authentication
     * @param int $page_limit_
     * @param int $page_offset_
     * @param string|null $sort
     */
    public function __construct(
        ?Authentication $authentication=null,
        int $page_limit_=0,
        int $page_offset_=0,
        ?string $sort=null,
        /** @description Filter the results to those that have a Name including the specified value */
        // @DataMember
        // @ApiMember(Description="Filter the results to those that have a Name including the specified value", ParameterType="query")
        /** @var string|null */
        public ?string $name=null,

        /** @description Filter the results to those that were created after (or on) this date */
        // @DataMember
        // @ApiMember(Description="Filter the results to those that were created after (or on) this date", ParameterType="query")
        /** @var DateTime|null */
        public ?DateTime $dateFrom=null,

        /** @description Filter the results to those that were created before this date */
        // @DataMember
        // @ApiMember(Description="Filter the results to those that were created before this date", ParameterType="query")
        /** @var DateTime|null */
        public ?DateTime $dateTo=null,

        /** @description Filter the results to those where the applicant has provided their information (true), or not (false), or either (null) */
        // @DataMember
        // @ApiMember(Description="Filter the results to those where the applicant has provided their information (true), or not (false), or either (null)", ParameterType="query")
        /** @var bool|null */
        public ?bool $isApplicantInfoCompleted=null,

        /** @description Filter the results to those where the ID Checker has verified the applicant's ID (true), or not (false), or either (null) */
        // @DataMember
        // @ApiMember(Description="Filter the results to those where the ID Checker has verified the applicant's ID (true), or not (false), or either (null)", ParameterType="query")
        /** @var bool|null */
        public ?bool $isIdCheckCompleted=null,

        /** @description Filter the results to those where the application is complete and ready to be submitted (true), or not (false), or either (null) */
        // @DataMember
        // @ApiMember(Description="Filter the results to those where the application is complete and ready to be submitted (true), or not (false), or either (null)", ParameterType="query")
        /** @var bool|null */
        public ?bool $isApplicationCompleted=null,

        /** @description Filter the results to those where the application has been submitted (true), or not (false), or either (null) */
        // @DataMember
        // @ApiMember(Description="Filter the results to those where the application has been submitted (true), or not (false), or either (null)", ParameterType="query")
        /** @var bool|null */
        public ?bool $isApplicationSubmitted=null,

        /** @description Filter the results to those where the application has been disclosed (true), or not (false), or either (null) */
        // @DataMember
        // @ApiMember(Description="Filter the results to those where the application has been disclosed (true), or not (false), or either (null)", ParameterType="query")
        /** @var bool|null */
        public ?bool $isApplicationDisclosed=null,

        /** @description If the searches are being accessed by a sub user, specify their username here to only return searches they have permissions to view */
        // @DataMember
        // @ApiMember(Description="If the searches are being accessed by a sub user, specify their username here to only return searches they have permissions to view", ParameterType="query")
        /** @var string|null */
        public ?string $subUserName=null
    ) {
        parent::__construct($authentication,$page_limit_,$page_offset_,$sort);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['dateFrom'])) $this->dateFrom = JsonConverters::from('DateTime', $o['dateFrom']);
        if (isset($o['dateTo'])) $this->dateTo = JsonConverters::from('DateTime', $o['dateTo']);
        if (isset($o['isApplicantInfoCompleted'])) $this->isApplicantInfoCompleted = $o['isApplicantInfoCompleted'];
        if (isset($o['isIdCheckCompleted'])) $this->isIdCheckCompleted = $o['isIdCheckCompleted'];
        if (isset($o['isApplicationCompleted'])) $this->isApplicationCompleted = $o['isApplicationCompleted'];
        if (isset($o['isApplicationSubmitted'])) $this->isApplicationSubmitted = $o['isApplicationSubmitted'];
        if (isset($o['isApplicationDisclosed'])) $this->isApplicationDisclosed = $o['isApplicationDisclosed'];
        if (isset($o['subUserName'])) $this->subUserName = $o['subUserName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->dateFrom)) $o['dateFrom'] = JsonConverters::to('DateTime', $this->dateFrom);
        if (isset($this->dateTo)) $o['dateTo'] = JsonConverters::to('DateTime', $this->dateTo);
        if (isset($this->isApplicantInfoCompleted)) $o['isApplicantInfoCompleted'] = $this->isApplicantInfoCompleted;
        if (isset($this->isIdCheckCompleted)) $o['isIdCheckCompleted'] = $this->isIdCheckCompleted;
        if (isset($this->isApplicationCompleted)) $o['isApplicationCompleted'] = $this->isApplicationCompleted;
        if (isset($this->isApplicationSubmitted)) $o['isApplicationSubmitted'] = $this->isApplicationSubmitted;
        if (isset($this->isApplicationDisclosed)) $o['isApplicationDisclosed'] = $this->isApplicationDisclosed;
        if (isset($this->subUserName)) $o['subUserName'] = $this->subUserName;
        return empty($o) ? new class(){} : $o;
    }
}

class DbsSearchShort implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $id=0,
        /** @var DateTime */
        public DateTime $dateSearched=new DateTime(),
        /** @var DateTime */
        public DateTime $dateUpdated=new DateTime(),
        /** @var string|null */
        public ?string $status=null,
        /** @var string|null */
        public ?string $disclosureStatus=null,
        /** @var bool|null */
        public ?bool $isApplicantInfoCompleted=null,
        /** @var bool|null */
        public ?bool $isIdCheckCompleted=null,
        /** @var bool|null */
        public ?bool $isApplicationCompleted=null,
        /** @var bool|null */
        public ?bool $isApplicationSubmitted=null,
        /** @var bool|null */
        public ?bool $isApplicationDisclosed=null,
        /** @var string|null */
        public ?string $disclosureLevel=null,
        /** @var string|null */
        public ?string $name=null,
        /** @var string|null */
        public ?string $reference=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        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['status'])) $this->status = $o['status'];
        if (isset($o['disclosureStatus'])) $this->disclosureStatus = $o['disclosureStatus'];
        if (isset($o['isApplicantInfoCompleted'])) $this->isApplicantInfoCompleted = $o['isApplicantInfoCompleted'];
        if (isset($o['isIdCheckCompleted'])) $this->isIdCheckCompleted = $o['isIdCheckCompleted'];
        if (isset($o['isApplicationCompleted'])) $this->isApplicationCompleted = $o['isApplicationCompleted'];
        if (isset($o['isApplicationSubmitted'])) $this->isApplicationSubmitted = $o['isApplicationSubmitted'];
        if (isset($o['isApplicationDisclosed'])) $this->isApplicationDisclosed = $o['isApplicationDisclosed'];
        if (isset($o['disclosureLevel'])) $this->disclosureLevel = $o['disclosureLevel'];
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['reference'])) $this->reference = $o['reference'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        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->status)) $o['status'] = $this->status;
        if (isset($this->disclosureStatus)) $o['disclosureStatus'] = $this->disclosureStatus;
        if (isset($this->isApplicantInfoCompleted)) $o['isApplicantInfoCompleted'] = $this->isApplicantInfoCompleted;
        if (isset($this->isIdCheckCompleted)) $o['isIdCheckCompleted'] = $this->isIdCheckCompleted;
        if (isset($this->isApplicationCompleted)) $o['isApplicationCompleted'] = $this->isApplicationCompleted;
        if (isset($this->isApplicationSubmitted)) $o['isApplicationSubmitted'] = $this->isApplicationSubmitted;
        if (isset($this->isApplicationDisclosed)) $o['isApplicationDisclosed'] = $this->isApplicationDisclosed;
        if (isset($this->disclosureLevel)) $o['disclosureLevel'] = $this->disclosureLevel;
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->reference)) $o['reference'] = $this->reference;
        return empty($o) ? new class(){} : $o;
    }
}

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

/**
 * @template PagedResponse of GetDbsSearches
 */
class GetDbsSearchesData extends PagedResponse implements JsonSerializable
{
    /**
     * @param ResponseStatus|null $responseStatus
     * @param Meta<T>|null $meta
     */
    public function __construct(
        ?ResponseStatus $responseStatus=null,
        ?Meta $meta=null,
        /** @var ArrayOfDbsSearchShort|null */
        public ?ArrayOfDbsSearchShort $searches=null
    ) {
        parent::__construct($responseStatus,$meta);
    }

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

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

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['data'])) $this->data = JsonConverters::from('GetDbsSearchesData', $o['data']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->data)) $o['data'] = JsonConverters::to('GetDbsSearchesData', $this->data);
        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;
    }
}

/**
 * @template T
 */
class PagedResponse extends BaseResponse implements JsonSerializable
{
    public array $genericArgs = [];
    public static function create(array $genericArgs=[]): PagedResponse {
        $to = new PagedResponse();
        $to->genericArgs = $genericArgs;
        return $to;
    }

    /**
     * @param ResponseStatus|null $responseStatus
     */
    public function __construct(
        mixed $responseStatus=null,
        /** @description The response Metadata */
        // @ApiMember(Description="The response Metadata")
        /** @var mixed<T>|null */
        public mixed $meta=null
    ) {
        parent::__construct($responseStatus);
    }

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

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

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

class MetaLinks extends Links implements JsonSerializable
{
    /**
     * @param string|null $self
     */
    public function __construct(
        ?string $self=null,
        /** @description The link to the first page of records */
        // @ApiMember(Description="The link to the first page of records")
        /** @var string|null */
        public ?string $first=null,

        /** @description The link to the last page of records */
        // @ApiMember(Description="The link to the last page of records")
        /** @var string|null */
        public ?string $last=null,

        /** @description The link to the next page of records, if applicable */
        // @ApiMember(Description="The link to the next page of records, if applicable")
        /** @var string|null */
        public ?string $next=null,

        /** @description The link to the last page of records, if applicable */
        // @ApiMember(Description="The link to the last page of records, if applicable")
        /** @var string|null */
        public ?string $prev=null
    ) {
        parent::__construct($self);
    }

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

/**
 * @template T
 */
class Meta implements JsonSerializable
{
    public array $genericArgs = [];
    public static function create(array $genericArgs=[]): Meta {
        $to = new Meta();
        $to->genericArgs = $genericArgs;
        return $to;
    }

    public function __construct(
        /** @description Pagination links */
        // @ApiMember(Description="Pagination links")
        /** @var MetaLinks|null */
        public mixed $links=null,

        /** @description The total number of records for the query */
        // @ApiMember(Description="The total number of records for the query")
        /** @var int|null */
        public mixed $totalCount=null,

        /** @description The maximum number of records to be returned in one page */
        // @ApiMember(Description="The maximum number of records to be returned in one page")
        /** @var int|null */
        public mixed $pageLimit=null,

        /** @description The starting point in the list of records from where the data should be fetched. Zero based index. */
        // @ApiMember(Description="The starting point in the list of records from where the data should be fetched. Zero based index.")
        /** @var int|null */
        public mixed $pageOffset=null
    ) {
    }

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

PHP GetDbsSearches DTOs

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

HTTP + SOAP12

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

POST /soap12 HTTP/1.1 
Host: api.sanctionssearch.com 
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>

<GetDbsSearches xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <Authentication>
    <ApiUserId>String</ApiUserId>
    <ApiUserKey>String</ApiUserKey>
  </Authentication>
  <Sort>String</Sort>
  <page_x005B_limit_x005D_>0</page_x005B_limit_x005D_>
  <page_x005B_offset_x005D_>0</page_x005B_offset_x005D_>
  <DateFrom>0001-01-01T00:00:00</DateFrom>
  <DateTo>0001-01-01T00:00:00</DateTo>
  <IsApplicantInfoCompleted>false</IsApplicantInfoCompleted>
  <IsApplicationCompleted>false</IsApplicationCompleted>
  <IsApplicationDisclosed>false</IsApplicationDisclosed>
  <IsApplicationSubmitted>false</IsApplicationSubmitted>
  <IsIdCheckCompleted>false</IsIdCheckCompleted>
  <Name>String</Name>
  <SubUserName>String</SubUserName>
</GetDbsSearches>

</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>

<GetDbsSearchesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <Data>
    <ResponseStatus>
      <ErrorCode>String</ErrorCode>
      <Message>String</Message>
      <StackTrace>String</StackTrace>
      <Errors>
        <ResponseError>
          <ErrorCode>String</ErrorCode>
          <FieldName>String</FieldName>
          <Message>String</Message>
          <Meta xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:KeyValueOfstringstring>
              <d6p1:Key>String</d6p1:Key>
              <d6p1:Value>String</d6p1:Value>
            </d6p1:KeyValueOfstringstring>
          </Meta>
        </ResponseError>
      </Errors>
      <Meta xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:KeyValueOfstringstring>
          <d4p1:Key>String</d4p1:Key>
          <d4p1:Value>String</d4p1:Value>
        </d4p1:KeyValueOfstringstring>
      </Meta>
    </ResponseStatus>
    <Meta>
      <Links>
        <Self>String</Self>
        <First>String</First>
        <Last>String</Last>
        <Next>String</Next>
        <Prev>String</Prev>
      </Links>
      <PageLimit>0</PageLimit>
      <PageOffset>0</PageOffset>
      <TotalCount>0</TotalCount>
    </Meta>
    <Searches>
      <SearchRecord>
        <DateSearched>0001-01-01T00:00:00</DateSearched>
        <DateUpdated>0001-01-01T00:00:00</DateUpdated>
        <DisclosureLevel>String</DisclosureLevel>
        <DisclosureStatus>String</DisclosureStatus>
        <Id>0</Id>
        <IsApplicantInfoCompleted>false</IsApplicantInfoCompleted>
        <IsApplicationCompleted>false</IsApplicationCompleted>
        <IsApplicationDisclosed>false</IsApplicationDisclosed>
        <IsApplicationSubmitted>false</IsApplicationSubmitted>
        <IsIdCheckCompleted>false</IsIdCheckCompleted>
        <Name>String</Name>
        <Reference>String</Reference>
        <Status>String</Status>
      </SearchRecord>
    </Searches>
  </Data>
</GetDbsSearchesResponse>

</soap12:Body>
</soap12:Envelope>