SIRVA.Relocation.Services.InitiationGateway

<back to all web services

TransfereeInitiationRequest

Requires Authentication
The following routes are available for this service:
POST/Initiation/TransfereeInitiates a transferee.
<?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};


class TransfereeInitiationResponse implements JsonSerializable
{
    public function __construct(
        /** @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 CustomField implements JsonSerializable
{
    public function __construct(
        /** @description Custom field name */
        // @ApiMember(Description="Custom field name", IsRequired=true)
        /** @var string */
        public string $fieldName='',

        /** @description Custom field value */
        // @ApiMember(Description="Custom field value")
        /** @var string|null */
        public ?string $fieldValue=null
    ) {
    }

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

class Location implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $title=null,
        /** @var string|null */
        public ?string $city=null,
        /** @var string|null */
        public ?string $stateCode=null,
        /** @var string|null */
        public ?string $countryCode=null
    ) {
    }

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

class Address extends Location implements JsonSerializable
{
    /**
     * @param string|null $title
     * @param string|null $city
     * @param string|null $stateCode
     * @param string|null $countryCode
     */
    public function __construct(
        ?string $title=null,
        ?string $city=null,
        ?string $stateCode=null,
        ?string $countryCode=null,
        /** @var string|null */
        public ?string $line1=null,
        /** @var string|null */
        public ?string $line2=null,
        /** @var string|null */
        public ?string $line3=null,
        /** @var string|null */
        public ?string $postalCode=null
    ) {
        parent::__construct($title,$city,$stateCode,$countryCode);
    }

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

enum MaritalStatus : string
{
    case Single = 'Single';
    case Married = 'Married';
    case DomesticPartner = 'DomesticPartner';
    case Divorcee = 'Divorcee';
    case Defacto = 'Defacto';
    case Other = 'Other';
    case Separated = 'Separated';
    case Interdependent = 'Interdependent';
    case Widowed = 'Widowed';
    case Divorced = 'Divorced';
}

enum HomeOwnerStatus : string
{
    case Homeowner = 'Homeowner';
    case Renter = 'Renter';
}

class SpousePartner implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $firstName=null,
        /** @var string|null */
        public ?string $lastName=null,
        /** @var DateTime|null */
        public ?DateTime $birthDate=null
    ) {
    }

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

enum DependentAssigneeRelationship : string
{
    case Child = 'Child';
    case Other = 'Other';
}

class Dependent implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $firstName=null,
        /** @var string|null */
        public ?string $lastName=null,
        /** @var DateTime|null */
        public ?DateTime $birthDate=null,
        // @ApiMember(IsRequired=true, Name="RelationshipToAssignee")
        /** @var DependentAssigneeRelationship|null */
        public ?DependentAssigneeRelationship $relationshipToAssignee=null
    ) {
    }

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

class ServiceData implements JsonSerializable
{
    public function __construct(
        /** @description Service data field name */
        // @ApiMember(Description="Service data field name", IsRequired=true)
        /** @var string */
        public string $fieldName='',

        /** @description Service data field value */
        // @ApiMember(Description="Service data field value", IsRequired=true)
        /** @var string */
        public string $fieldValue=''
    ) {
    }

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

class Service implements JsonSerializable
{
    public function __construct(
        /** @description Service name */
        // @ApiMember(Description="Service name", IsRequired=true)
        /** @var string */
        public string $name='',

        /** @description Service data */
        // @ApiMember(Description="Service data")
        /** @var array<ServiceData>|null */
        public ?array $data=null,

        /** @description Cancel */
        // @ApiMember(Description="Cancel")
        /** @var string|null */
        public ?string $cancel=null
    ) {
    }

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

class TransfereeInitiation implements JsonSerializable
{
    public function __construct(
        /** @description Client ID */
        // @ApiMember(Description="Client ID")
        /** @var string|null */
        public ?string $clientId=null,

        /** @description External ID. This must be unique to the intiation's parent client */
        // @ApiMember(Description="External ID. This must be unique to the intiation's parent client", IsRequired=true)
        /** @var string */
        public string $externalId='',

        /** @description Transferee first name */
        // @ApiMember(Description="Transferee first name", IsRequired=true)
        /** @var string */
        public string $firstName='',

        /** @description Transferee last name */
        // @ApiMember(Description="Transferee last name", IsRequired=true)
        /** @var string */
        public string $lastName='',

        /** @description Assignment type */
        // @ApiMember(Description="Assignment type")
        /** @var string|null */
        public ?string $assignmentType=null,

        /** @description Is this transferee pre-decision */
        // @ApiMember(Description="Is this transferee pre-decision")
        /** @var bool|null */
        public ?bool $preDecision=null,

        /** @description Is this transferee a VIP */
        // @ApiMember(Description="Is this transferee a VIP")
        /** @var bool|null */
        public ?bool $vip=null,

        /** @description Custom fields */
        // @ApiMember(Description="Custom fields")
        /** @var array<CustomField>|null */
        public ?array $customFields=null,

        /** @description Employee ID */
        // @ApiMember(Description="Employee ID")
        /** @var string|null */
        public ?string $employeeId=null,

        /** @description Start date */
        // @ApiMember(Description="Start date")
        /** @var DateTime|null */
        public ?DateTime $startDate=null,

        /** @description End date */
        // @ApiMember(Description="End date")
        /** @var DateTime|null */
        public ?DateTime $endDate=null,

        /** @description Origin work location */
        // @ApiMember(Description="Origin work location", IsRequired=true)
        /** @var Location|null */
        public ?Location $originWorkLocation=null,

        /** @description Origin home address */
        // @ApiMember(Description="Origin home address", IsRequired=true)
        /** @var Address|null */
        public ?Address $originHomeAddress=null,

        /** @description Destination work location */
        // @ApiMember(Description="Destination work location", IsRequired=true)
        /** @var Location|null */
        public ?Location $destinationWorkLocation=null,

        /** @description Repat */
        // @ApiMember(Description="Repat")
        /** @var string|null */
        public ?string $repat=null,

        /** @description Repat From City */
        // @ApiMember(Description="Repat From City")
        /** @var string|null */
        public ?string $repatFromCity=null,

        /** @description Repat From State code */
        // @ApiMember(Description="Repat From State code")
        /** @var string|null */
        public ?string $repatFromStateCode=null,

        /** @description Repat From Country Code */
        // @ApiMember(Description="Repat From Country Code")
        /** @var string|null */
        public ?string $repatFromCountryCode=null,

        /** @description Repat To City */
        // @ApiMember(Description="Repat To City")
        /** @var string|null */
        public ?string $repatToCity=null,

        /** @description Repat To State Code */
        // @ApiMember(Description="Repat To State Code")
        /** @var string|null */
        public ?string $repatToStateCode=null,

        /** @description Repat To Country Code */
        // @ApiMember(Description="Repat To Country Code")
        /** @var string|null */
        public ?string $repatToCountryCode=null,

        /** @description Transferee citizenship country */
        // @ApiMember(Description="Transferee citizenship country")
        /** @var string|null */
        public ?string $citizenshipCountry=null,

        /** @description Transferee dual citizenship country */
        // @ApiMember(Description="Transferee dual citizenship country")
        /** @var string|null */
        public ?string $dualCitizenshipCountry=null,

        /** @description Policy */
        // @ApiMember(Description="Policy", IsRequired=true)
        /** @var string */
        public string $policy='',

        /** @description Job title */
        // @ApiMember(Description="Job title")
        /** @var string|null */
        public ?string $jobTitle=null,

        /** @description Marital status */
        // @ApiMember(Description="Marital status", Name="MaritalStatus")
        /** @var MaritalStatus|null */
        public ?MaritalStatus $maritalStatus=null,

        /** @description Pay grade */
        // @ApiMember(Description="Pay grade")
        /** @var string|null */
        public ?string $payGrade=null,

        /** @description Assignment family size */
        // @ApiMember(Description="Assignment family size")
        /** @var int|null */
        public ?int $assignmentFamilySize=null,

        /** @description Home owner status */
        // @ApiMember(Description="Home owner status", Name="HomeOwnerStatus")
        /** @var HomeOwnerStatus|null */
        public ?HomeOwnerStatus $homeOwnerStatus=null,

        /** @description Line of business */
        // @ApiMember(Description="Line of business", IsRequired=true)
        /** @var string */
        public string $lineOfBusiness='',

        /** @description HostCurrency */
        // @ApiMember(Description="HostCurrency")
        /** @var string|null */
        public ?string $hostCurrency=null,

        /** @description ServiceLevel */
        // @ApiMember(Description="ServiceLevel")
        /** @var string|null */
        public ?string $serviceLevel=null,

        /** @description CompanyCodePrimary */
        // @ApiMember(Description="CompanyCodePrimary")
        /** @var string|null */
        public ?string $companyCodePrimary=null,

        /** @description CompanyCodeSecondary */
        // @ApiMember(Description="CompanyCodeSecondary")
        /** @var string|null */
        public ?string $companyCodeSecondary=null,

        /** @description CostCenterPrimary */
        // @ApiMember(Description="CostCenterPrimary")
        /** @var string|null */
        public ?string $costCenterPrimary=null,

        /** @description CostCenterSecondary */
        // @ApiMember(Description="CostCenterSecondary")
        /** @var string|null */
        public ?string $costCenterSecondary=null,

        /** @description CostCenterTertiary */
        // @ApiMember(Description="CostCenterTertiary")
        /** @var string|null */
        public ?string $costCenterTertiary=null,

        /** @description Is the assignment confidential */
        // @ApiMember(Description="Is the assignment confidential")
        /** @var bool|null */
        public ?bool $confidential=null,

        /** @description Special Instructions */
        // @ApiMember(Description="Special Instructions")
        /** @var string|null */
        public ?string $specialInstructions=null,

        /** @description Destination entity legal name */
        // @ApiMember(Description="Destination entity legal name")
        /** @var string|null */
        public ?string $destinationEntityLegalName=null,

        /** @description Transferee mobile phone number */
        // @ApiMember(Description="Transferee mobile phone number", IsRequired=true)
        /** @var string */
        public string $mobilePhoneNumber='',

        /** @description Transferee work phone number */
        // @ApiMember(Description="Transferee work phone number")
        /** @var string|null */
        public ?string $workPhoneNumber=null,

        /** @description Transferee home phone number */
        // @ApiMember(Description="Transferee home phone number")
        /** @var string|null */
        public ?string $homePhoneNumber=null,

        /** @description Transferee primary email */
        // @ApiMember(Description="Transferee primary email", IsRequired=true)
        /** @var string */
        public string $primaryEmail='',

        /** @description Transferee secondary email */
        // @ApiMember(Description="Transferee secondary email")
        /** @var string|null */
        public ?string $secondaryEmail=null,

        /** @description HR Contact First Name */
        // @ApiMember(Description="HR Contact First Name")
        /** @var string|null */
        public ?string $hrContactFirstName=null,

        /** @description HR Contact Last Name */
        // @ApiMember(Description="HR Contact Last Name")
        /** @var string|null */
        public ?string $hrContactLastName=null,

        /** @description HR contact full name */
        // @ApiMember(Description="HR contact full name")
        /** @var string|null */
        public ?string $hrContactFullName=null,

        /** @description Transferee annual salary */
        // @ApiMember(Description="Transferee annual salary")
        /** @var string|null */
        public ?string $annualSalary=null,

        /** @description Transferee spouse/partner */
        // @ApiMember(Description="Transferee spouse/partner")
        /** @var SpousePartner|null */
        public ?SpousePartner $spousePartner=null,

        /** @description Transferee dependents */
        // @ApiMember(Description="Transferee dependents")
        /** @var array<Dependent>|null */
        public ?array $dependents=null,

        /** @description Assignment Services */
        // @ApiMember(Description="Assignment Services")
        /** @var array<Service>|null */
        public ?array $services=null,

        /** @description Relocation Status */
        // @ApiMember(Description="Relocation Status")
        /** @var string|null */
        public ?string $relocationStatus=null,

        /** @description Cancel */
        // @ApiMember(Description="Cancel")
        /** @var string|null */
        public ?string $cancel=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['clientId'])) $this->clientId = $o['clientId'];
        if (isset($o['externalId'])) $this->externalId = $o['externalId'];
        if (isset($o['firstName'])) $this->firstName = $o['firstName'];
        if (isset($o['lastName'])) $this->lastName = $o['lastName'];
        if (isset($o['assignmentType'])) $this->assignmentType = $o['assignmentType'];
        if (isset($o['preDecision'])) $this->preDecision = $o['preDecision'];
        if (isset($o['vip'])) $this->vip = $o['vip'];
        if (isset($o['customFields'])) $this->customFields = JsonConverters::fromArray('CustomField', $o['customFields']);
        if (isset($o['employeeId'])) $this->employeeId = $o['employeeId'];
        if (isset($o['startDate'])) $this->startDate = JsonConverters::from('DateTime', $o['startDate']);
        if (isset($o['endDate'])) $this->endDate = JsonConverters::from('DateTime', $o['endDate']);
        if (isset($o['originWorkLocation'])) $this->originWorkLocation = JsonConverters::from('Location', $o['originWorkLocation']);
        if (isset($o['originHomeAddress'])) $this->originHomeAddress = JsonConverters::from('Address', $o['originHomeAddress']);
        if (isset($o['destinationWorkLocation'])) $this->destinationWorkLocation = JsonConverters::from('Location', $o['destinationWorkLocation']);
        if (isset($o['repat'])) $this->repat = $o['repat'];
        if (isset($o['repatFromCity'])) $this->repatFromCity = $o['repatFromCity'];
        if (isset($o['repatFromStateCode'])) $this->repatFromStateCode = $o['repatFromStateCode'];
        if (isset($o['repatFromCountryCode'])) $this->repatFromCountryCode = $o['repatFromCountryCode'];
        if (isset($o['repatToCity'])) $this->repatToCity = $o['repatToCity'];
        if (isset($o['repatToStateCode'])) $this->repatToStateCode = $o['repatToStateCode'];
        if (isset($o['repatToCountryCode'])) $this->repatToCountryCode = $o['repatToCountryCode'];
        if (isset($o['citizenshipCountry'])) $this->citizenshipCountry = $o['citizenshipCountry'];
        if (isset($o['dualCitizenshipCountry'])) $this->dualCitizenshipCountry = $o['dualCitizenshipCountry'];
        if (isset($o['policy'])) $this->policy = $o['policy'];
        if (isset($o['jobTitle'])) $this->jobTitle = $o['jobTitle'];
        if (isset($o['maritalStatus'])) $this->maritalStatus = JsonConverters::from('MaritalStatus', $o['maritalStatus']);
        if (isset($o['payGrade'])) $this->payGrade = $o['payGrade'];
        if (isset($o['assignmentFamilySize'])) $this->assignmentFamilySize = $o['assignmentFamilySize'];
        if (isset($o['homeOwnerStatus'])) $this->homeOwnerStatus = JsonConverters::from('HomeOwnerStatus', $o['homeOwnerStatus']);
        if (isset($o['lineOfBusiness'])) $this->lineOfBusiness = $o['lineOfBusiness'];
        if (isset($o['hostCurrency'])) $this->hostCurrency = $o['hostCurrency'];
        if (isset($o['serviceLevel'])) $this->serviceLevel = $o['serviceLevel'];
        if (isset($o['companyCodePrimary'])) $this->companyCodePrimary = $o['companyCodePrimary'];
        if (isset($o['companyCodeSecondary'])) $this->companyCodeSecondary = $o['companyCodeSecondary'];
        if (isset($o['costCenterPrimary'])) $this->costCenterPrimary = $o['costCenterPrimary'];
        if (isset($o['costCenterSecondary'])) $this->costCenterSecondary = $o['costCenterSecondary'];
        if (isset($o['costCenterTertiary'])) $this->costCenterTertiary = $o['costCenterTertiary'];
        if (isset($o['confidential'])) $this->confidential = $o['confidential'];
        if (isset($o['specialInstructions'])) $this->specialInstructions = $o['specialInstructions'];
        if (isset($o['destinationEntityLegalName'])) $this->destinationEntityLegalName = $o['destinationEntityLegalName'];
        if (isset($o['mobilePhoneNumber'])) $this->mobilePhoneNumber = $o['mobilePhoneNumber'];
        if (isset($o['workPhoneNumber'])) $this->workPhoneNumber = $o['workPhoneNumber'];
        if (isset($o['homePhoneNumber'])) $this->homePhoneNumber = $o['homePhoneNumber'];
        if (isset($o['primaryEmail'])) $this->primaryEmail = $o['primaryEmail'];
        if (isset($o['secondaryEmail'])) $this->secondaryEmail = $o['secondaryEmail'];
        if (isset($o['hrContactFirstName'])) $this->hrContactFirstName = $o['hrContactFirstName'];
        if (isset($o['hrContactLastName'])) $this->hrContactLastName = $o['hrContactLastName'];
        if (isset($o['hrContactFullName'])) $this->hrContactFullName = $o['hrContactFullName'];
        if (isset($o['annualSalary'])) $this->annualSalary = $o['annualSalary'];
        if (isset($o['spousePartner'])) $this->spousePartner = JsonConverters::from('SpousePartner', $o['spousePartner']);
        if (isset($o['dependents'])) $this->dependents = JsonConverters::fromArray('Dependent', $o['dependents']);
        if (isset($o['services'])) $this->services = JsonConverters::fromArray('Service', $o['services']);
        if (isset($o['relocationStatus'])) $this->relocationStatus = $o['relocationStatus'];
        if (isset($o['cancel'])) $this->cancel = $o['cancel'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->clientId)) $o['clientId'] = $this->clientId;
        if (isset($this->externalId)) $o['externalId'] = $this->externalId;
        if (isset($this->firstName)) $o['firstName'] = $this->firstName;
        if (isset($this->lastName)) $o['lastName'] = $this->lastName;
        if (isset($this->assignmentType)) $o['assignmentType'] = $this->assignmentType;
        if (isset($this->preDecision)) $o['preDecision'] = $this->preDecision;
        if (isset($this->vip)) $o['vip'] = $this->vip;
        if (isset($this->customFields)) $o['customFields'] = JsonConverters::toArray('CustomField', $this->customFields);
        if (isset($this->employeeId)) $o['employeeId'] = $this->employeeId;
        if (isset($this->startDate)) $o['startDate'] = JsonConverters::to('DateTime', $this->startDate);
        if (isset($this->endDate)) $o['endDate'] = JsonConverters::to('DateTime', $this->endDate);
        if (isset($this->originWorkLocation)) $o['originWorkLocation'] = JsonConverters::to('Location', $this->originWorkLocation);
        if (isset($this->originHomeAddress)) $o['originHomeAddress'] = JsonConverters::to('Address', $this->originHomeAddress);
        if (isset($this->destinationWorkLocation)) $o['destinationWorkLocation'] = JsonConverters::to('Location', $this->destinationWorkLocation);
        if (isset($this->repat)) $o['repat'] = $this->repat;
        if (isset($this->repatFromCity)) $o['repatFromCity'] = $this->repatFromCity;
        if (isset($this->repatFromStateCode)) $o['repatFromStateCode'] = $this->repatFromStateCode;
        if (isset($this->repatFromCountryCode)) $o['repatFromCountryCode'] = $this->repatFromCountryCode;
        if (isset($this->repatToCity)) $o['repatToCity'] = $this->repatToCity;
        if (isset($this->repatToStateCode)) $o['repatToStateCode'] = $this->repatToStateCode;
        if (isset($this->repatToCountryCode)) $o['repatToCountryCode'] = $this->repatToCountryCode;
        if (isset($this->citizenshipCountry)) $o['citizenshipCountry'] = $this->citizenshipCountry;
        if (isset($this->dualCitizenshipCountry)) $o['dualCitizenshipCountry'] = $this->dualCitizenshipCountry;
        if (isset($this->policy)) $o['policy'] = $this->policy;
        if (isset($this->jobTitle)) $o['jobTitle'] = $this->jobTitle;
        if (isset($this->maritalStatus)) $o['maritalStatus'] = JsonConverters::to('MaritalStatus', $this->maritalStatus);
        if (isset($this->payGrade)) $o['payGrade'] = $this->payGrade;
        if (isset($this->assignmentFamilySize)) $o['assignmentFamilySize'] = $this->assignmentFamilySize;
        if (isset($this->homeOwnerStatus)) $o['homeOwnerStatus'] = JsonConverters::to('HomeOwnerStatus', $this->homeOwnerStatus);
        if (isset($this->lineOfBusiness)) $o['lineOfBusiness'] = $this->lineOfBusiness;
        if (isset($this->hostCurrency)) $o['hostCurrency'] = $this->hostCurrency;
        if (isset($this->serviceLevel)) $o['serviceLevel'] = $this->serviceLevel;
        if (isset($this->companyCodePrimary)) $o['companyCodePrimary'] = $this->companyCodePrimary;
        if (isset($this->companyCodeSecondary)) $o['companyCodeSecondary'] = $this->companyCodeSecondary;
        if (isset($this->costCenterPrimary)) $o['costCenterPrimary'] = $this->costCenterPrimary;
        if (isset($this->costCenterSecondary)) $o['costCenterSecondary'] = $this->costCenterSecondary;
        if (isset($this->costCenterTertiary)) $o['costCenterTertiary'] = $this->costCenterTertiary;
        if (isset($this->confidential)) $o['confidential'] = $this->confidential;
        if (isset($this->specialInstructions)) $o['specialInstructions'] = $this->specialInstructions;
        if (isset($this->destinationEntityLegalName)) $o['destinationEntityLegalName'] = $this->destinationEntityLegalName;
        if (isset($this->mobilePhoneNumber)) $o['mobilePhoneNumber'] = $this->mobilePhoneNumber;
        if (isset($this->workPhoneNumber)) $o['workPhoneNumber'] = $this->workPhoneNumber;
        if (isset($this->homePhoneNumber)) $o['homePhoneNumber'] = $this->homePhoneNumber;
        if (isset($this->primaryEmail)) $o['primaryEmail'] = $this->primaryEmail;
        if (isset($this->secondaryEmail)) $o['secondaryEmail'] = $this->secondaryEmail;
        if (isset($this->hrContactFirstName)) $o['hrContactFirstName'] = $this->hrContactFirstName;
        if (isset($this->hrContactLastName)) $o['hrContactLastName'] = $this->hrContactLastName;
        if (isset($this->hrContactFullName)) $o['hrContactFullName'] = $this->hrContactFullName;
        if (isset($this->annualSalary)) $o['annualSalary'] = $this->annualSalary;
        if (isset($this->spousePartner)) $o['spousePartner'] = JsonConverters::to('SpousePartner', $this->spousePartner);
        if (isset($this->dependents)) $o['dependents'] = JsonConverters::toArray('Dependent', $this->dependents);
        if (isset($this->services)) $o['services'] = JsonConverters::toArray('Service', $this->services);
        if (isset($this->relocationStatus)) $o['relocationStatus'] = $this->relocationStatus;
        if (isset($this->cancel)) $o['cancel'] = $this->cancel;
        return empty($o) ? new class(){} : $o;
    }
}

class TransfereeInitiationRequest implements IRequireClientScoped, IPost, JsonSerializable
{
    public function __construct(
        /** @description Transferee initiation info needed for creation. */
        // @ApiMember(Description="Transferee initiation info needed for creation.", IsRequired=true, ParameterType="body")
        /** @var TransfereeInitiation|null */
        public ?TransfereeInitiation $initiationInfo=null
    ) {
    }

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

PHP TransfereeInitiationRequest DTOs

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

HTTP + XML

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

POST /Initiation/Transferee HTTP/1.1 
Host: initiation-api-pen.sirva.com 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<TransfereeInitiationRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SIRVA.Relocation.Services.InitiationGateway.ServiceModel">
  <InitiationInfo xmlns:d2p1="http://schemas.datacontract.org/2004/07/SIRVA.Relocation.Services.InitiationGateway.ServiceModel.Types">
    <d2p1:AnnualSalary>String</d2p1:AnnualSalary>
    <d2p1:AssignmentFamilySize>0</d2p1:AssignmentFamilySize>
    <d2p1:AssignmentType>String</d2p1:AssignmentType>
    <d2p1:Cancel>String</d2p1:Cancel>
    <d2p1:CitizenshipCountry>String</d2p1:CitizenshipCountry>
    <d2p1:ClientId>String</d2p1:ClientId>
    <d2p1:CompanyCodePrimary>String</d2p1:CompanyCodePrimary>
    <d2p1:CompanyCodeSecondary>String</d2p1:CompanyCodeSecondary>
    <d2p1:Confidential>false</d2p1:Confidential>
    <d2p1:CostCenterPrimary>String</d2p1:CostCenterPrimary>
    <d2p1:CostCenterSecondary>String</d2p1:CostCenterSecondary>
    <d2p1:CostCenterTertiary>String</d2p1:CostCenterTertiary>
    <d2p1:CustomFields>
      <d2p1:CustomField>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:FieldValue>String</d2p1:FieldValue>
      </d2p1:CustomField>
    </d2p1:CustomFields>
    <d2p1:Dependents>
      <d2p1:Dependent>
        <d2p1:BirthDate>0001-01-01T00:00:00</d2p1:BirthDate>
        <d2p1:FirstName>String</d2p1:FirstName>
        <d2p1:LastName>String</d2p1:LastName>
        <d2p1:RelationshipToAssignee>Child</d2p1:RelationshipToAssignee>
      </d2p1:Dependent>
    </d2p1:Dependents>
    <d2p1:DestinationEntityLegalName>String</d2p1:DestinationEntityLegalName>
    <d2p1:DestinationWorkLocation>
      <d2p1:City>String</d2p1:City>
      <d2p1:CountryCode>String</d2p1:CountryCode>
      <d2p1:StateCode>String</d2p1:StateCode>
      <d2p1:Title>String</d2p1:Title>
    </d2p1:DestinationWorkLocation>
    <d2p1:DualCitizenshipCountry>String</d2p1:DualCitizenshipCountry>
    <d2p1:EmployeeId>String</d2p1:EmployeeId>
    <d2p1:EndDate>0001-01-01T00:00:00</d2p1:EndDate>
    <d2p1:ExternalId>String</d2p1:ExternalId>
    <d2p1:FirstName>String</d2p1:FirstName>
    <d2p1:HRContactFirstName>String</d2p1:HRContactFirstName>
    <d2p1:HRContactFullName>String</d2p1:HRContactFullName>
    <d2p1:HRContactLastName>String</d2p1:HRContactLastName>
    <d2p1:HomeOwnerStatus>Homeowner</d2p1:HomeOwnerStatus>
    <d2p1:HomePhoneNumber>String</d2p1:HomePhoneNumber>
    <d2p1:HostCurrency>String</d2p1:HostCurrency>
    <d2p1:JobTitle>String</d2p1:JobTitle>
    <d2p1:LastName>String</d2p1:LastName>
    <d2p1:LineOfBusiness>String</d2p1:LineOfBusiness>
    <d2p1:MaritalStatus>Single</d2p1:MaritalStatus>
    <d2p1:MobilePhoneNumber>String</d2p1:MobilePhoneNumber>
    <d2p1:OriginHomeAddress>
      <d2p1:City>String</d2p1:City>
      <d2p1:CountryCode>String</d2p1:CountryCode>
      <d2p1:StateCode>String</d2p1:StateCode>
      <d2p1:Title>String</d2p1:Title>
      <d2p1:Line1>String</d2p1:Line1>
      <d2p1:Line2>String</d2p1:Line2>
      <d2p1:Line3>String</d2p1:Line3>
      <d2p1:PostalCode>String</d2p1:PostalCode>
    </d2p1:OriginHomeAddress>
    <d2p1:OriginWorkLocation>
      <d2p1:City>String</d2p1:City>
      <d2p1:CountryCode>String</d2p1:CountryCode>
      <d2p1:StateCode>String</d2p1:StateCode>
      <d2p1:Title>String</d2p1:Title>
    </d2p1:OriginWorkLocation>
    <d2p1:PayGrade>String</d2p1:PayGrade>
    <d2p1:Policy>String</d2p1:Policy>
    <d2p1:PreDecision>false</d2p1:PreDecision>
    <d2p1:PrimaryEmail>String</d2p1:PrimaryEmail>
    <d2p1:RelocationStatus>String</d2p1:RelocationStatus>
    <d2p1:Repat>String</d2p1:Repat>
    <d2p1:RepatFromCity>String</d2p1:RepatFromCity>
    <d2p1:RepatFromCountryCode>String</d2p1:RepatFromCountryCode>
    <d2p1:RepatFromStateCode>String</d2p1:RepatFromStateCode>
    <d2p1:RepatToCity>String</d2p1:RepatToCity>
    <d2p1:RepatToCountryCode>String</d2p1:RepatToCountryCode>
    <d2p1:RepatToStateCode>String</d2p1:RepatToStateCode>
    <d2p1:SecondaryEmail>String</d2p1:SecondaryEmail>
    <d2p1:ServiceLevel>String</d2p1:ServiceLevel>
    <d2p1:Services>
      <d2p1:Service>
        <d2p1:Cancel>String</d2p1:Cancel>
        <d2p1:Data>
          <d2p1:ServiceData>
            <d2p1:FieldName>String</d2p1:FieldName>
            <d2p1:FieldValue>String</d2p1:FieldValue>
          </d2p1:ServiceData>
        </d2p1:Data>
        <d2p1:Name>String</d2p1:Name>
      </d2p1:Service>
    </d2p1:Services>
    <d2p1:SpecialInstructions>String</d2p1:SpecialInstructions>
    <d2p1:SpousePartner>
      <d2p1:BirthDate>0001-01-01T00:00:00</d2p1:BirthDate>
      <d2p1:FirstName>String</d2p1:FirstName>
      <d2p1:LastName>String</d2p1:LastName>
    </d2p1:SpousePartner>
    <d2p1:StartDate>0001-01-01T00:00:00</d2p1:StartDate>
    <d2p1:VIP>false</d2p1:VIP>
    <d2p1:WorkPhoneNumber>String</d2p1:WorkPhoneNumber>
  </InitiationInfo>
</TransfereeInitiationRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<TransfereeInitiationResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SIRVA.Relocation.Services.InitiationGateway.ServiceModel">
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
</TransfereeInitiationResponse>