DX STF Client API

<back to all web services

AddReceivingAdvice

Receiving Advice Requests

Receiving Advice

Requires Authentication
The following routes are available for this service:
POST/api/receivingAdviceAdd new ReceivingAdvice
<?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 TokenDto implements ICommandResponse, JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $token=''
    ) {
    }

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

// @DataContract
class DocumentIdentification implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="identifier")
        /** @var string */
        public string $identifier='',

        // @DataMember(Name="type")
        /** @var string */
        public string $type='',

        // @DataMember(Name="creationDateAndTime")
        /** @var DateTime */
        public DateTime $creationDateAndTime=new DateTime()
    ) {
    }

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

// @DataContract
class Identifier implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="authority")
        /** @var string */
        public string $authority='',

        // @DataMember(Name="text")
        /** @var string */
        public string $text=''
    ) {
    }

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

// @DataContract
class ContactInformation implements JsonSerializable
{
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Partner implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="identifier")
        /** @var Identifier|null */
        public ?Identifier $identifier=null,

        // @DataMember(Name="contactInformation")
        /** @var array<ContactInformation>|null */
        public ?array $contactInformation=null
    ) {
    }

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

// @DataContract
class Header implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="documentIdentification")
        /** @var DocumentIdentification|null */
        public ?DocumentIdentification $documentIdentification=null,

        // @DataMember(Name="sender")
        /** @var Partner|null */
        public ?Partner $sender=null,

        // @DataMember(Name="receiver")
        /** @var Partner|null */
        public ?Partner $receiver=null
    ) {
    }

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

enum DocumentAction : string
{
    case ADD = 'ADD';
    case CHANGE_BY_REFRESH = 'CHANGE_BY_REFRESH';
    case DELETE = 'DELETE';
    case REJECTED = 'REJECTED';
}

enum DocumentStatus : string
{
    case ADDITIONAL_TRANSMISSION = 'ADDITIONAL_TRANSMISSION';
    case COPY = 'COPY';
    case ORIGINAL = 'ORIGINAL';
}

class AvpList implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $code='',
        /** @var string */
        public string $value=''
    ) {
    }

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

class BaseDocument implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $currencyCode='',
        /** @var DateTime */
        public DateTime $creationDateTime=new DateTime(),
        /** @var DocumentAction|null */
        public ?DocumentAction $documentActionCode=null,
        /** @var DocumentStatus|null */
        public ?DocumentStatus $documentStatusCode=null,
        /** @var string */
        public string $documentStructureVersion='',
        /** @var DateTime|null */
        public ?DateTime $lastUpdateDateTime=null,
        /** @var int|null */
        public ?int $revisionNumber=null,
        /** @var array<AvpList>|null */
        public ?array $avpList=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['currencyCode'])) $this->currencyCode = $o['currencyCode'];
        if (isset($o['creationDateTime'])) $this->creationDateTime = JsonConverters::from('DateTime', $o['creationDateTime']);
        if (isset($o['documentActionCode'])) $this->documentActionCode = JsonConverters::from('DocumentAction', $o['documentActionCode']);
        if (isset($o['documentStatusCode'])) $this->documentStatusCode = JsonConverters::from('DocumentStatus', $o['documentStatusCode']);
        if (isset($o['documentStructureVersion'])) $this->documentStructureVersion = $o['documentStructureVersion'];
        if (isset($o['lastUpdateDateTime'])) $this->lastUpdateDateTime = JsonConverters::from('DateTime', $o['lastUpdateDateTime']);
        if (isset($o['revisionNumber'])) $this->revisionNumber = $o['revisionNumber'];
        if (isset($o['avpList'])) $this->avpList = JsonConverters::fromArray('AvpList', $o['avpList']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->currencyCode)) $o['currencyCode'] = $this->currencyCode;
        if (isset($this->creationDateTime)) $o['creationDateTime'] = JsonConverters::to('DateTime', $this->creationDateTime);
        if (isset($this->documentActionCode)) $o['documentActionCode'] = JsonConverters::to('DocumentAction', $this->documentActionCode);
        if (isset($this->documentStatusCode)) $o['documentStatusCode'] = JsonConverters::to('DocumentStatus', $this->documentStatusCode);
        if (isset($this->documentStructureVersion)) $o['documentStructureVersion'] = $this->documentStructureVersion;
        if (isset($this->lastUpdateDateTime)) $o['lastUpdateDateTime'] = JsonConverters::to('DateTime', $this->lastUpdateDateTime);
        if (isset($this->revisionNumber)) $o['revisionNumber'] = $this->revisionNumber;
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::toArray('AvpList', $this->avpList);
        return empty($o) ? new class(){} : $o;
    }
}

class CommunicationChannel implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $communicationChannelCode='',
        /** @var string */
        public string $communicationChannelName='',
        /** @var string */
        public string $communicationValue=''
    ) {
    }

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

class Contact implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $contactTypeCode='',
        /** @var string */
        public string $personName='',
        /** @var string */
        public string $departmentName='',
        /** @var string */
        public string $jobTitle='',
        /** @var string */
        public string $responsibility='',
        /** @var array<CommunicationChannel>|null */
        public ?array $communicationChannel=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['contactTypeCode'])) $this->contactTypeCode = $o['contactTypeCode'];
        if (isset($o['personName'])) $this->personName = $o['personName'];
        if (isset($o['departmentName'])) $this->departmentName = $o['departmentName'];
        if (isset($o['jobTitle'])) $this->jobTitle = $o['jobTitle'];
        if (isset($o['responsibility'])) $this->responsibility = $o['responsibility'];
        if (isset($o['communicationChannel'])) $this->communicationChannel = JsonConverters::fromArray('CommunicationChannel', $o['communicationChannel']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->contactTypeCode)) $o['contactTypeCode'] = $this->contactTypeCode;
        if (isset($this->personName)) $o['personName'] = $this->personName;
        if (isset($this->departmentName)) $o['departmentName'] = $this->departmentName;
        if (isset($this->jobTitle)) $o['jobTitle'] = $this->jobTitle;
        if (isset($this->responsibility)) $o['responsibility'] = $this->responsibility;
        if (isset($this->communicationChannel)) $o['communicationChannel'] = JsonConverters::toArray('CommunicationChannel', $this->communicationChannel);
        return empty($o) ? new class(){} : $o;
    }
}

class IdentityDocument implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $identityDocumentIssuer='',
        /** @var string */
        public string $identityDocumentNumber='',
        /** @var string */
        public string $identityDocumentType=''
    ) {
    }

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

class Person implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $dateOfBirth=null,
        /** @var string */
        public string $gender='',
        /** @var string */
        public string $nationality='',
        /** @var string */
        public string $personName='',
        /** @var array<IdentityDocument>|null */
        public ?array $identityDocument=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['dateOfBirth'])) $this->dateOfBirth = JsonConverters::from('DateTime', $o['dateOfBirth']);
        if (isset($o['gender'])) $this->gender = $o['gender'];
        if (isset($o['nationality'])) $this->nationality = $o['nationality'];
        if (isset($o['personName'])) $this->personName = $o['personName'];
        if (isset($o['identityDocument'])) $this->identityDocument = JsonConverters::fromArray('IdentityDocument', $o['identityDocument']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->dateOfBirth)) $o['dateOfBirth'] = JsonConverters::to('DateTime', $this->dateOfBirth);
        if (isset($this->gender)) $o['gender'] = $this->gender;
        if (isset($this->nationality)) $o['nationality'] = $this->nationality;
        if (isset($this->personName)) $o['personName'] = $this->personName;
        if (isset($this->identityDocument)) $o['identityDocument'] = JsonConverters::toArray('IdentityDocument', $this->identityDocument);
        return empty($o) ? new class(){} : $o;
    }
}

class ReceivingAdviceTransportInformation implements JsonSerializable
{
    public function __construct(
        /** @var Identifier|null */
        public ?Identifier $routeID=null,
        /** @var Identifier|null */
        public ?Identifier $transportMeansID=null,
        /** @var string */
        public string $transportMeansName='',
        /** @var Contact|null */
        public ?Contact $driver=null,
        /** @var Person|null */
        public ?Person $driverID=null,
        /** @var Contact|null */
        public ?Contact $receiver=null,
        /** @var Person|null */
        public ?Person $receiverID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['routeID'])) $this->routeID = JsonConverters::from('Identifier', $o['routeID']);
        if (isset($o['transportMeansID'])) $this->transportMeansID = JsonConverters::from('Identifier', $o['transportMeansID']);
        if (isset($o['transportMeansName'])) $this->transportMeansName = $o['transportMeansName'];
        if (isset($o['driver'])) $this->driver = JsonConverters::from('Contact', $o['driver']);
        if (isset($o['driverID'])) $this->driverID = JsonConverters::from('Person', $o['driverID']);
        if (isset($o['receiver'])) $this->receiver = JsonConverters::from('Contact', $o['receiver']);
        if (isset($o['receiverID'])) $this->receiverID = JsonConverters::from('Person', $o['receiverID']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->routeID)) $o['routeID'] = JsonConverters::to('Identifier', $this->routeID);
        if (isset($this->transportMeansID)) $o['transportMeansID'] = JsonConverters::to('Identifier', $this->transportMeansID);
        if (isset($this->transportMeansName)) $o['transportMeansName'] = $this->transportMeansName;
        if (isset($this->driver)) $o['driver'] = JsonConverters::to('Contact', $this->driver);
        if (isset($this->driverID)) $o['driverID'] = JsonConverters::to('Person', $this->driverID);
        if (isset($this->receiver)) $o['receiver'] = JsonConverters::to('Contact', $this->receiver);
        if (isset($this->receiverID)) $o['receiverID'] = JsonConverters::to('Person', $this->receiverID);
        return empty($o) ? new class(){} : $o;
    }
}

class DocumentReference implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $creationDateTime=null,
        /** @var int|null */
        public ?int $revisionNumber=null,
        /** @var int|null */
        public ?int $lineItemNumber=null,
        /** @var string */
        public string $entityIdentification=''
    ) {
    }

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

class Ecom_PartyIdentificationType implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $gln='',
        /** @var string */
        public string $name='',
        /** @var array<AvpList>|null */
        public ?array $additionalPartyIdentification=null
    ) {
    }

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

class Address implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $streetAddressOne='',
        /** @var string */
        public string $streetAddressTwo='',
        /** @var string */
        public string $streetAddressThree='',
        /** @var string */
        public string $city='',
        /** @var string */
        public string $postalCode='',
        /** @var string */
        public string $provinceCode='',
        /** @var string */
        public string $countryCode=''
    ) {
    }

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

class FinancialRoutingNumber implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $number='',
        /** @var string */
        public string $numberTypeCode=''
    ) {
    }

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

class FinancialAccount implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $number='',
        /** @var string */
        public string $numberTypeCode='',
        /** @var string */
        public string $name=''
    ) {
    }

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

class FinancialInstitutionInformation implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $financialInstitutionBranchName='',
        /** @var string */
        public string $financialInstitutionName='',
        /** @var FinancialRoutingNumber|null */
        public ?FinancialRoutingNumber $financialRoutingNumber=null,
        /** @var FinancialAccount|null */
        public ?FinancialAccount $financialAccount=null,
        /** @var string */
        public string $swiftCode='',
        /** @var string */
        public string $exportersCode=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['financialInstitutionBranchName'])) $this->financialInstitutionBranchName = $o['financialInstitutionBranchName'];
        if (isset($o['financialInstitutionName'])) $this->financialInstitutionName = $o['financialInstitutionName'];
        if (isset($o['financialRoutingNumber'])) $this->financialRoutingNumber = JsonConverters::from('FinancialRoutingNumber', $o['financialRoutingNumber']);
        if (isset($o['financialAccount'])) $this->financialAccount = JsonConverters::from('FinancialAccount', $o['financialAccount']);
        if (isset($o['swiftCode'])) $this->swiftCode = $o['swiftCode'];
        if (isset($o['exportersCode'])) $this->exportersCode = $o['exportersCode'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->financialInstitutionBranchName)) $o['financialInstitutionBranchName'] = $this->financialInstitutionBranchName;
        if (isset($this->financialInstitutionName)) $o['financialInstitutionName'] = $this->financialInstitutionName;
        if (isset($this->financialRoutingNumber)) $o['financialRoutingNumber'] = JsonConverters::to('FinancialRoutingNumber', $this->financialRoutingNumber);
        if (isset($this->financialAccount)) $o['financialAccount'] = JsonConverters::to('FinancialAccount', $this->financialAccount);
        if (isset($this->swiftCode)) $o['swiftCode'] = $this->swiftCode;
        if (isset($this->exportersCode)) $o['exportersCode'] = $this->exportersCode;
        return empty($o) ? new class(){} : $o;
    }
}

class TransactionalParty extends Ecom_PartyIdentificationType implements JsonSerializable
{
    /**
     * @param string $gln
     * @param string $name
     * @param array<AvpList>|null $additionalPartyIdentification
     */
    public function __construct(
        string $gln='',
        string $name='',
        ?array $additionalPartyIdentification=null,
        /** @var array<Contact>|null */
        public ?array $contact=null,
        /** @var Address|null */
        public ?Address $address=null,
        /** @var array<AvpList>|null */
        public ?array $communicationChannel=null,
        /** @var FinancialInstitutionInformation|null */
        public ?FinancialInstitutionInformation $financialInstitutionInformation=null,
        /** @var string */
        public string $dutyFeeTaxRegistration='',
        /** @var string */
        public string $entityIdentification=''
    ) {
        parent::__construct($gln,$name,$additionalPartyIdentification);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['contact'])) $this->contact = JsonConverters::fromArray('Contact', $o['contact']);
        if (isset($o['address'])) $this->address = JsonConverters::from('Address', $o['address']);
        if (isset($o['communicationChannel'])) $this->communicationChannel = JsonConverters::fromArray('AvpList', $o['communicationChannel']);
        if (isset($o['financialInstitutionInformation'])) $this->financialInstitutionInformation = JsonConverters::from('FinancialInstitutionInformation', $o['financialInstitutionInformation']);
        if (isset($o['dutyFeeTaxRegistration'])) $this->dutyFeeTaxRegistration = $o['dutyFeeTaxRegistration'];
        if (isset($o['entityIdentification'])) $this->entityIdentification = $o['entityIdentification'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->contact)) $o['contact'] = JsonConverters::toArray('Contact', $this->contact);
        if (isset($this->address)) $o['address'] = JsonConverters::to('Address', $this->address);
        if (isset($this->communicationChannel)) $o['communicationChannel'] = JsonConverters::toArray('AvpList', $this->communicationChannel);
        if (isset($this->financialInstitutionInformation)) $o['financialInstitutionInformation'] = JsonConverters::to('FinancialInstitutionInformation', $this->financialInstitutionInformation);
        if (isset($this->dutyFeeTaxRegistration)) $o['dutyFeeTaxRegistration'] = $this->dutyFeeTaxRegistration;
        if (isset($this->entityIdentification)) $o['entityIdentification'] = $this->entityIdentification;
        return empty($o) ? new class(){} : $o;
    }
}

class AdditionalConsignmentIdentification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $text='',
        /** @var string */
        public string $additionalConsignmentIdentificationTypeCode=''
    ) {
    }

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

class ConsignmentIdentification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $ginc='',
        /** @var AdditionalConsignmentIdentification|null */
        public ?AdditionalConsignmentIdentification $additionalConsignmentIdentification=null
    ) {
    }

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

class Measurement implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $value=null,
        /** @var string */
        public string $codeListVersion='',
        /** @var string */
        public string $measurementUnitCode=''
    ) {
    }

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

class Dimension implements JsonSerializable
{
    public function __construct(
        /** @var Measurement|null */
        public ?Measurement $depth=null,
        /** @var Measurement|null */
        public ?Measurement $height=null,
        /** @var Measurement|null */
        public ?Measurement $width=null
    ) {
    }

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

class UnitMeasurement implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $measurementType='',
        /** @var Measurement|null */
        public ?Measurement $measurementValue=null
    ) {
    }

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

class LogisticUnitMeasurement implements JsonSerializable
{
    public function __construct(
        /** @var Dimension|null */
        public ?Dimension $dimension=null,
        /** @var UnitMeasurement|null */
        public ?UnitMeasurement $unitMeasurement=null
    ) {
    }

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

class AdditionalReturnableAssetIdentification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $value='',
        /** @var string */
        public string $additionalReturnableAssetIdentificationTypeCode=''
    ) {
    }

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

class ReturnableAssetIdentification implements JsonSerializable
{
    public function __construct(
        /** @var array<AdditionalReturnableAssetIdentification>|null */
        public ?array $additionalReturnableAssetIdentification=null,
        /** @var string */
        public string $grai=''
    ) {
    }

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

class ReturnablePackaging implements JsonSerializable
{
    public function __construct(
        /** @var Identifier|null */
        public ?Identifier $currentHolderRegistration=null,
        /** @var Identifier|null */
        public ?Identifier $newHolderRegistration=null,
        /** @var string */
        public string $packagingConditionCode='',
        /** @var int|null */
        public ?int $packagingQuantity=null,
        /** @var array<ReturnableAssetIdentification>|null */
        public ?array $individualReturnableAssetIdentification=null,
        /** @var ReturnableAssetIdentification|null */
        public ?ReturnableAssetIdentification $returnableAssetIdentification=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['currentHolderRegistration'])) $this->currentHolderRegistration = JsonConverters::from('Identifier', $o['currentHolderRegistration']);
        if (isset($o['newHolderRegistration'])) $this->newHolderRegistration = JsonConverters::from('Identifier', $o['newHolderRegistration']);
        if (isset($o['packagingConditionCode'])) $this->packagingConditionCode = $o['packagingConditionCode'];
        if (isset($o['packagingQuantity'])) $this->packagingQuantity = $o['packagingQuantity'];
        if (isset($o['individualReturnableAssetIdentification'])) $this->individualReturnableAssetIdentification = JsonConverters::fromArray('ReturnableAssetIdentification', $o['individualReturnableAssetIdentification']);
        if (isset($o['returnableAssetIdentification'])) $this->returnableAssetIdentification = JsonConverters::from('ReturnableAssetIdentification', $o['returnableAssetIdentification']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->currentHolderRegistration)) $o['currentHolderRegistration'] = JsonConverters::to('Identifier', $this->currentHolderRegistration);
        if (isset($this->newHolderRegistration)) $o['newHolderRegistration'] = JsonConverters::to('Identifier', $this->newHolderRegistration);
        if (isset($this->packagingConditionCode)) $o['packagingConditionCode'] = $this->packagingConditionCode;
        if (isset($this->packagingQuantity)) $o['packagingQuantity'] = $this->packagingQuantity;
        if (isset($this->individualReturnableAssetIdentification)) $o['individualReturnableAssetIdentification'] = JsonConverters::toArray('ReturnableAssetIdentification', $this->individualReturnableAssetIdentification);
        if (isset($this->returnableAssetIdentification)) $o['returnableAssetIdentification'] = JsonConverters::to('ReturnableAssetIdentification', $this->returnableAssetIdentification);
        return empty($o) ? new class(){} : $o;
    }
}

class CarrierTrackAndTraceInformation implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $carrierTrackAndTraceURL='',
        /** @var string */
        public string $packageTrackingNumber=''
    ) {
    }

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

class AdditionalIndividualAssetIdentification implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $value=null,
        /** @var string */
        public string $additionalIndividualAssetIdentificationTypeCode=''
    ) {
    }

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

class Ecom_IndividualAssetIdentification implements JsonSerializable
{
    public function __construct(
        /** @var array<AdditionalIndividualAssetIdentification>|null */
        public ?array $additionalIndividualAssetIdentification=null,
        /** @var string */
        public string $giai=''
    ) {
    }

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

class AdditionalLogisticUnitIdentification implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $value=null,
        /** @var string */
        public string $additionalLogisticUnitIdentificationTypeCode=''
    ) {
    }

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

class Ecom_LogisticUnitIdentification implements JsonSerializable
{
    public function __construct(
        /** @var array<AdditionalLogisticUnitIdentification>|null */
        public ?array $additionalLogisiticUnitIdentification=null,
        /** @var string */
        public string $sscc=''
    ) {
    }

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

class LogisticUnits implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $childPackageTypeCode='',
        /** @var int|null */
        public ?int $levelIdentification=null,
        /** @var string */
        public string $packageTypeCode='',
        /** @var int|null */
        public ?int $parentLevelIdentification=null,
        /** @var int|null */
        public ?int $quantityOfChildren=null,
        /** @var int|null */
        public ?int $quantityOfLogisticUnits=null,
        /** @var LogisticUnitMeasurement|null */
        public ?LogisticUnitMeasurement $logisticUnitMeasurement=null,
        /** @var array<ReturnablePackaging>|null */
        public ?array $returnablePackaging=null,
        /** @var CarrierTrackAndTraceInformation|null */
        public ?CarrierTrackAndTraceInformation $carrierTrackAndTraceInformation=null,
        /** @var AvpList|null */
        public ?AvpList $avpList=null,
        /** @var array<Ecom_IndividualAssetIdentification>|null */
        public ?array $individualAssetIdentification=null,
        /** @var Ecom_LogisticUnitIdentification|null */
        public ?Ecom_LogisticUnitIdentification $logisticUnitIdentification=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['childPackageTypeCode'])) $this->childPackageTypeCode = $o['childPackageTypeCode'];
        if (isset($o['levelIdentification'])) $this->levelIdentification = $o['levelIdentification'];
        if (isset($o['packageTypeCode'])) $this->packageTypeCode = $o['packageTypeCode'];
        if (isset($o['parentLevelIdentification'])) $this->parentLevelIdentification = $o['parentLevelIdentification'];
        if (isset($o['quantityOfChildren'])) $this->quantityOfChildren = $o['quantityOfChildren'];
        if (isset($o['quantityOfLogisticUnits'])) $this->quantityOfLogisticUnits = $o['quantityOfLogisticUnits'];
        if (isset($o['logisticUnitMeasurement'])) $this->logisticUnitMeasurement = JsonConverters::from('LogisticUnitMeasurement', $o['logisticUnitMeasurement']);
        if (isset($o['returnablePackaging'])) $this->returnablePackaging = JsonConverters::fromArray('ReturnablePackaging', $o['returnablePackaging']);
        if (isset($o['carrierTrackAndTraceInformation'])) $this->carrierTrackAndTraceInformation = JsonConverters::from('CarrierTrackAndTraceInformation', $o['carrierTrackAndTraceInformation']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::from('AvpList', $o['avpList']);
        if (isset($o['individualAssetIdentification'])) $this->individualAssetIdentification = JsonConverters::fromArray('Ecom_IndividualAssetIdentification', $o['individualAssetIdentification']);
        if (isset($o['logisticUnitIdentification'])) $this->logisticUnitIdentification = JsonConverters::from('Ecom_LogisticUnitIdentification', $o['logisticUnitIdentification']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->childPackageTypeCode)) $o['childPackageTypeCode'] = $this->childPackageTypeCode;
        if (isset($this->levelIdentification)) $o['levelIdentification'] = $this->levelIdentification;
        if (isset($this->packageTypeCode)) $o['packageTypeCode'] = $this->packageTypeCode;
        if (isset($this->parentLevelIdentification)) $o['parentLevelIdentification'] = $this->parentLevelIdentification;
        if (isset($this->quantityOfChildren)) $o['quantityOfChildren'] = $this->quantityOfChildren;
        if (isset($this->quantityOfLogisticUnits)) $o['quantityOfLogisticUnits'] = $this->quantityOfLogisticUnits;
        if (isset($this->logisticUnitMeasurement)) $o['logisticUnitMeasurement'] = JsonConverters::to('LogisticUnitMeasurement', $this->logisticUnitMeasurement);
        if (isset($this->returnablePackaging)) $o['returnablePackaging'] = JsonConverters::toArray('ReturnablePackaging', $this->returnablePackaging);
        if (isset($this->carrierTrackAndTraceInformation)) $o['carrierTrackAndTraceInformation'] = JsonConverters::to('CarrierTrackAndTraceInformation', $this->carrierTrackAndTraceInformation);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::to('AvpList', $this->avpList);
        if (isset($this->individualAssetIdentification)) $o['individualAssetIdentification'] = JsonConverters::toArray('Ecom_IndividualAssetIdentification', $this->individualAssetIdentification);
        if (isset($this->logisticUnitIdentification)) $o['logisticUnitIdentification'] = JsonConverters::to('Ecom_LogisticUnitIdentification', $this->logisticUnitIdentification);
        return empty($o) ? new class(){} : $o;
    }
}

class Quantity implements JsonSerializable
{
    public function __construct(
        /** @var float|null */
        public ?float $value=null,
        /** @var string */
        public string $measurementUnitCode='',
        /** @var string */
        public string $codeListVersion=''
    ) {
    }

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

class ReceivingConditionInformation implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $receivedGoodsDisposition='',
        /** @var string */
        public string $receivingConditionCode='',
        /** @var Quantity|null */
        public ?Quantity $receivingConditionQuantity=null
    ) {
    }

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

class TransactionalItem implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $measurementUnitCode='',
        /** @var string */
        public string $measurementType='',
        /** @var string */
        public string $measurementValue=''
    ) {
    }

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

class SerialNumberRange implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $maximumValue='',
        /** @var string */
        public string $minimumValue=''
    ) {
    }

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

class TransactionalItemDimension implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $measurementUnitCode='',
        /** @var string */
        public string $depth='',
        /** @var string */
        public string $height='',
        /** @var string */
        public string $width=''
    ) {
    }

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

class TransactionalItemLogisticUnitInformation implements JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $numberOfLayers=null,
        /** @var int|null */
        public ?int $numberOfUnitsPerLayer=null,
        /** @var int|null */
        public ?int $numberOfUnitsPerPallet=null,
        /** @var string */
        public string $packagingTerms='',
        /** @var string */
        public string $packageTypeCode='',
        /** @var int|null */
        public ?int $maximumStackingFactor=null,
        /** @var string */
        public string $returnablePackageTransportCostPayment='',
        /** @var array<TransactionalItemDimension>|null */
        public ?array $dimensionsOfLogisticUnit=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['numberOfLayers'])) $this->numberOfLayers = $o['numberOfLayers'];
        if (isset($o['numberOfUnitsPerLayer'])) $this->numberOfUnitsPerLayer = $o['numberOfUnitsPerLayer'];
        if (isset($o['numberOfUnitsPerPallet'])) $this->numberOfUnitsPerPallet = $o['numberOfUnitsPerPallet'];
        if (isset($o['packagingTerms'])) $this->packagingTerms = $o['packagingTerms'];
        if (isset($o['packageTypeCode'])) $this->packageTypeCode = $o['packageTypeCode'];
        if (isset($o['maximumStackingFactor'])) $this->maximumStackingFactor = $o['maximumStackingFactor'];
        if (isset($o['returnablePackageTransportCostPayment'])) $this->returnablePackageTransportCostPayment = $o['returnablePackageTransportCostPayment'];
        if (isset($o['dimensionsOfLogisticUnit'])) $this->dimensionsOfLogisticUnit = JsonConverters::fromArray('TransactionalItemDimension', $o['dimensionsOfLogisticUnit']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->numberOfLayers)) $o['numberOfLayers'] = $this->numberOfLayers;
        if (isset($this->numberOfUnitsPerLayer)) $o['numberOfUnitsPerLayer'] = $this->numberOfUnitsPerLayer;
        if (isset($this->numberOfUnitsPerPallet)) $o['numberOfUnitsPerPallet'] = $this->numberOfUnitsPerPallet;
        if (isset($this->packagingTerms)) $o['packagingTerms'] = $this->packagingTerms;
        if (isset($this->packageTypeCode)) $o['packageTypeCode'] = $this->packageTypeCode;
        if (isset($this->maximumStackingFactor)) $o['maximumStackingFactor'] = $this->maximumStackingFactor;
        if (isset($this->returnablePackageTransportCostPayment)) $o['returnablePackageTransportCostPayment'] = $this->returnablePackageTransportCostPayment;
        if (isset($this->dimensionsOfLogisticUnit)) $o['dimensionsOfLogisticUnit'] = JsonConverters::toArray('TransactionalItemDimension', $this->dimensionsOfLogisticUnit);
        return empty($o) ? new class(){} : $o;
    }
}

class TransactionalItemDataCarrierAndIdentification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $gs1TransactionalItemIdentificationKey='',
        /** @var string */
        public string $dataCarrier=''
    ) {
    }

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

class TradeItemWaste implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $wasteIdentification='',
        /** @var array<AvpList>|null */
        public ?array $typeOfWaste=null
    ) {
    }

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

class TransactionalItemOrganicInformation implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $isTradeItemOrganic=null,
        /** @var string */
        public string $organicCertification=''
    ) {
    }

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

class TransactionalItemData implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $availableForSaleDate=null,
        /** @var string */
        public string $batchNumber='',
        /** @var DateTime|null */
        public ?DateTime $bestBeforeDate=null,
        /** @var string */
        public string $countryOfOrigin='',
        /** @var DateTime|null */
        public ?DateTime $itemExpirationDate=null,
        /** @var string */
        public string $lotNumber='',
        /** @var DateTime|null */
        public ?DateTime $packagingDate=null,
        /** @var DateTime|null */
        public ?DateTime $productionDate=null,
        /** @var string */
        public string $productQualityIndication='',
        /** @var DateTime|null */
        public ?DateTime $sellByDate=null,
        /** @var array<string>|null */
        public ?array $serialNumber=null,
        /** @var string */
        public string $shelfLife='',
        /** @var int|null */
        public ?int $tradeItemQuantity=null,
        /** @var bool|null */
        public ?bool $itemInContactWithFoodProduct=null,
        /** @var array<TransactionalItem>|null */
        public ?array $transactionalItemWeight=null,
        /** @var array<TransactionalItem>|null */
        public ?array $transactionalItemVolume=null,
        /** @var array<SerialNumberRange>|null */
        public ?array $serialNumberRange=null,
        /** @var array<TransactionalItemDimension>|null */
        public ?array $transactionalItemDimensions=null,
        /** @var TransactionalItemLogisticUnitInformation|null */
        public ?TransactionalItemLogisticUnitInformation $transactionalItemLogisticUnitInformation=null,
        /** @var TransactionalItemDataCarrierAndIdentification|null */
        public ?TransactionalItemDataCarrierAndIdentification $transactionalItemDataCarrierAndIdentification=null,
        /** @var array<TradeItemWaste>|null */
        public ?array $tradeItemWaste=null,
        /** @var TransactionalItemOrganicInformation|null */
        public ?TransactionalItemOrganicInformation $transactionalItemOrganicInformation=null,
        /** @var array<AvpList>|null */
        public ?array $avpList=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['availableForSaleDate'])) $this->availableForSaleDate = JsonConverters::from('DateTime', $o['availableForSaleDate']);
        if (isset($o['batchNumber'])) $this->batchNumber = $o['batchNumber'];
        if (isset($o['bestBeforeDate'])) $this->bestBeforeDate = JsonConverters::from('DateTime', $o['bestBeforeDate']);
        if (isset($o['countryOfOrigin'])) $this->countryOfOrigin = $o['countryOfOrigin'];
        if (isset($o['itemExpirationDate'])) $this->itemExpirationDate = JsonConverters::from('DateTime', $o['itemExpirationDate']);
        if (isset($o['lotNumber'])) $this->lotNumber = $o['lotNumber'];
        if (isset($o['packagingDate'])) $this->packagingDate = JsonConverters::from('DateTime', $o['packagingDate']);
        if (isset($o['productionDate'])) $this->productionDate = JsonConverters::from('DateTime', $o['productionDate']);
        if (isset($o['productQualityIndication'])) $this->productQualityIndication = $o['productQualityIndication'];
        if (isset($o['sellByDate'])) $this->sellByDate = JsonConverters::from('DateTime', $o['sellByDate']);
        if (isset($o['serialNumber'])) $this->serialNumber = JsonConverters::fromArray('string', $o['serialNumber']);
        if (isset($o['shelfLife'])) $this->shelfLife = $o['shelfLife'];
        if (isset($o['tradeItemQuantity'])) $this->tradeItemQuantity = $o['tradeItemQuantity'];
        if (isset($o['itemInContactWithFoodProduct'])) $this->itemInContactWithFoodProduct = $o['itemInContactWithFoodProduct'];
        if (isset($o['transactionalItemWeight'])) $this->transactionalItemWeight = JsonConverters::fromArray('TransactionalItem', $o['transactionalItemWeight']);
        if (isset($o['transactionalItemVolume'])) $this->transactionalItemVolume = JsonConverters::fromArray('TransactionalItem', $o['transactionalItemVolume']);
        if (isset($o['serialNumberRange'])) $this->serialNumberRange = JsonConverters::fromArray('SerialNumberRange', $o['serialNumberRange']);
        if (isset($o['transactionalItemDimensions'])) $this->transactionalItemDimensions = JsonConverters::fromArray('TransactionalItemDimension', $o['transactionalItemDimensions']);
        if (isset($o['transactionalItemLogisticUnitInformation'])) $this->transactionalItemLogisticUnitInformation = JsonConverters::from('TransactionalItemLogisticUnitInformation', $o['transactionalItemLogisticUnitInformation']);
        if (isset($o['transactionalItemDataCarrierAndIdentification'])) $this->transactionalItemDataCarrierAndIdentification = JsonConverters::from('TransactionalItemDataCarrierAndIdentification', $o['transactionalItemDataCarrierAndIdentification']);
        if (isset($o['tradeItemWaste'])) $this->tradeItemWaste = JsonConverters::fromArray('TradeItemWaste', $o['tradeItemWaste']);
        if (isset($o['transactionalItemOrganicInformation'])) $this->transactionalItemOrganicInformation = JsonConverters::from('TransactionalItemOrganicInformation', $o['transactionalItemOrganicInformation']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::fromArray('AvpList', $o['avpList']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->availableForSaleDate)) $o['availableForSaleDate'] = JsonConverters::to('DateTime', $this->availableForSaleDate);
        if (isset($this->batchNumber)) $o['batchNumber'] = $this->batchNumber;
        if (isset($this->bestBeforeDate)) $o['bestBeforeDate'] = JsonConverters::to('DateTime', $this->bestBeforeDate);
        if (isset($this->countryOfOrigin)) $o['countryOfOrigin'] = $this->countryOfOrigin;
        if (isset($this->itemExpirationDate)) $o['itemExpirationDate'] = JsonConverters::to('DateTime', $this->itemExpirationDate);
        if (isset($this->lotNumber)) $o['lotNumber'] = $this->lotNumber;
        if (isset($this->packagingDate)) $o['packagingDate'] = JsonConverters::to('DateTime', $this->packagingDate);
        if (isset($this->productionDate)) $o['productionDate'] = JsonConverters::to('DateTime', $this->productionDate);
        if (isset($this->productQualityIndication)) $o['productQualityIndication'] = $this->productQualityIndication;
        if (isset($this->sellByDate)) $o['sellByDate'] = JsonConverters::to('DateTime', $this->sellByDate);
        if (isset($this->serialNumber)) $o['serialNumber'] = JsonConverters::toArray('string', $this->serialNumber);
        if (isset($this->shelfLife)) $o['shelfLife'] = $this->shelfLife;
        if (isset($this->tradeItemQuantity)) $o['tradeItemQuantity'] = $this->tradeItemQuantity;
        if (isset($this->itemInContactWithFoodProduct)) $o['itemInContactWithFoodProduct'] = $this->itemInContactWithFoodProduct;
        if (isset($this->transactionalItemWeight)) $o['transactionalItemWeight'] = JsonConverters::toArray('TransactionalItem', $this->transactionalItemWeight);
        if (isset($this->transactionalItemVolume)) $o['transactionalItemVolume'] = JsonConverters::toArray('TransactionalItem', $this->transactionalItemVolume);
        if (isset($this->serialNumberRange)) $o['serialNumberRange'] = JsonConverters::toArray('SerialNumberRange', $this->serialNumberRange);
        if (isset($this->transactionalItemDimensions)) $o['transactionalItemDimensions'] = JsonConverters::toArray('TransactionalItemDimension', $this->transactionalItemDimensions);
        if (isset($this->transactionalItemLogisticUnitInformation)) $o['transactionalItemLogisticUnitInformation'] = JsonConverters::to('TransactionalItemLogisticUnitInformation', $this->transactionalItemLogisticUnitInformation);
        if (isset($this->transactionalItemDataCarrierAndIdentification)) $o['transactionalItemDataCarrierAndIdentification'] = JsonConverters::to('TransactionalItemDataCarrierAndIdentification', $this->transactionalItemDataCarrierAndIdentification);
        if (isset($this->tradeItemWaste)) $o['tradeItemWaste'] = JsonConverters::toArray('TradeItemWaste', $this->tradeItemWaste);
        if (isset($this->transactionalItemOrganicInformation)) $o['transactionalItemOrganicInformation'] = JsonConverters::to('TransactionalItemOrganicInformation', $this->transactionalItemOrganicInformation);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::toArray('AvpList', $this->avpList);
        return empty($o) ? new class(){} : $o;
    }
}

class Colour implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $colourCode='',
        /** @var string */
        public string $colourDescription=''
    ) {
    }

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

class Size implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $descriptiveSize='',
        /** @var string */
        public string $sizeCode=''
    ) {
    }

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

class TradeItemClassification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $gpcCategoryCode='',
        /** @var array<AvpList>|null */
        public ?array $additionalTradeItemClassificationCode=null,
        /** @var string */
        public string $gpcCategoryName='',
        /** @var array<AvpList>|null */
        public ?array $gpcAttribute=null
    ) {
    }

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

class TransactionalTradeItem implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $gtin='',
        /** @var array<AvpList>|null */
        public ?array $additionalTradeItemIdentification=null,
        /** @var float|null */
        public ?float $tradeItemQuantity=null,
        /** @var string */
        public string $tradeItemDescription='',
        /** @var string */
        public string $productVariantIdentifier='',
        /** @var string */
        public string $itemTypeCode='',
        /** @var string */
        public string $tradeItemDataOwner='',
        /** @var string */
        public string $butterFatReference='',
        /** @var array<TransactionalItemData>|null */
        public ?array $transactionalItemData=null,
        /** @var array<Colour>|null */
        public ?array $colour=null,
        /** @var Size|null */
        public ?Size $size=null,
        /** @var TradeItemClassification|null */
        public ?TradeItemClassification $tradeItemClassification=null,
        /** @var array<AvpList>|null */
        public ?array $avpList=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['gtin'])) $this->gtin = $o['gtin'];
        if (isset($o['additionalTradeItemIdentification'])) $this->additionalTradeItemIdentification = JsonConverters::fromArray('AvpList', $o['additionalTradeItemIdentification']);
        if (isset($o['tradeItemQuantity'])) $this->tradeItemQuantity = $o['tradeItemQuantity'];
        if (isset($o['tradeItemDescription'])) $this->tradeItemDescription = $o['tradeItemDescription'];
        if (isset($o['productVariantIdentifier'])) $this->productVariantIdentifier = $o['productVariantIdentifier'];
        if (isset($o['itemTypeCode'])) $this->itemTypeCode = $o['itemTypeCode'];
        if (isset($o['tradeItemDataOwner'])) $this->tradeItemDataOwner = $o['tradeItemDataOwner'];
        if (isset($o['butterFatReference'])) $this->butterFatReference = $o['butterFatReference'];
        if (isset($o['transactionalItemData'])) $this->transactionalItemData = JsonConverters::fromArray('TransactionalItemData', $o['transactionalItemData']);
        if (isset($o['colour'])) $this->colour = JsonConverters::fromArray('Colour', $o['colour']);
        if (isset($o['size'])) $this->size = JsonConverters::from('Size', $o['size']);
        if (isset($o['tradeItemClassification'])) $this->tradeItemClassification = JsonConverters::from('TradeItemClassification', $o['tradeItemClassification']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::fromArray('AvpList', $o['avpList']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->gtin)) $o['gtin'] = $this->gtin;
        if (isset($this->additionalTradeItemIdentification)) $o['additionalTradeItemIdentification'] = JsonConverters::toArray('AvpList', $this->additionalTradeItemIdentification);
        if (isset($this->tradeItemQuantity)) $o['tradeItemQuantity'] = $this->tradeItemQuantity;
        if (isset($this->tradeItemDescription)) $o['tradeItemDescription'] = $this->tradeItemDescription;
        if (isset($this->productVariantIdentifier)) $o['productVariantIdentifier'] = $this->productVariantIdentifier;
        if (isset($this->itemTypeCode)) $o['itemTypeCode'] = $this->itemTypeCode;
        if (isset($this->tradeItemDataOwner)) $o['tradeItemDataOwner'] = $this->tradeItemDataOwner;
        if (isset($this->butterFatReference)) $o['butterFatReference'] = $this->butterFatReference;
        if (isset($this->transactionalItemData)) $o['transactionalItemData'] = JsonConverters::toArray('TransactionalItemData', $this->transactionalItemData);
        if (isset($this->colour)) $o['colour'] = JsonConverters::toArray('Colour', $this->colour);
        if (isset($this->size)) $o['size'] = JsonConverters::to('Size', $this->size);
        if (isset($this->tradeItemClassification)) $o['tradeItemClassification'] = JsonConverters::to('TradeItemClassification', $this->tradeItemClassification);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::toArray('AvpList', $this->avpList);
        return empty($o) ? new class(){} : $o;
    }
}

class TradeItemIdentification implements JsonSerializable
{
    public function __construct(
        /** @var array<AvpList>|null */
        public ?array $additionalTradeItemIdentification=null,
        /** @var string */
        public string $gtin=''
    ) {
    }

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

class ReceivingAdviceLineItem implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $extension='',
        /** @var int|null */
        public ?int $lineItemNumber=null,
        /** @var string */
        public string $note='',
        /** @var int|null */
        public ?int $parentLineItemNumber=null,
        /** @var Quantity|null */
        public ?Quantity $quantityAccepted=null,
        /** @var Quantity|null */
        public ?Quantity $quantityDespatched=null,
        /** @var Quantity|null */
        public ?Quantity $quantityReceived=null,
        /** @var array<ReceivingConditionInformation>|null */
        public ?array $receivingConditionInformation=null,
        /** @var TransactionalTradeItem|null */
        public ?TransactionalTradeItem $transactionalTradeItem=null,
        /** @var ConsignmentIdentification|null */
        public ?ConsignmentIdentification $consignmentIdentification=null,
        /** @var AvpList|null */
        public ?AvpList $avpList=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $contract=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $customerReference=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $deliveryNote=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $despatchAdvice=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $productCertification=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $promotionalDeal=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $purchaseConditions=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $purchaseOrder=null,
        /** @var TradeItemIdentification|null */
        public ?TradeItemIdentification $requestedItemIdentification=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $specification=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['extension'])) $this->extension = $o['extension'];
        if (isset($o['lineItemNumber'])) $this->lineItemNumber = $o['lineItemNumber'];
        if (isset($o['note'])) $this->note = $o['note'];
        if (isset($o['parentLineItemNumber'])) $this->parentLineItemNumber = $o['parentLineItemNumber'];
        if (isset($o['quantityAccepted'])) $this->quantityAccepted = JsonConverters::from('Quantity', $o['quantityAccepted']);
        if (isset($o['quantityDespatched'])) $this->quantityDespatched = JsonConverters::from('Quantity', $o['quantityDespatched']);
        if (isset($o['quantityReceived'])) $this->quantityReceived = JsonConverters::from('Quantity', $o['quantityReceived']);
        if (isset($o['receivingConditionInformation'])) $this->receivingConditionInformation = JsonConverters::fromArray('ReceivingConditionInformation', $o['receivingConditionInformation']);
        if (isset($o['transactionalTradeItem'])) $this->transactionalTradeItem = JsonConverters::from('TransactionalTradeItem', $o['transactionalTradeItem']);
        if (isset($o['consignmentIdentification'])) $this->consignmentIdentification = JsonConverters::from('ConsignmentIdentification', $o['consignmentIdentification']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::from('AvpList', $o['avpList']);
        if (isset($o['contract'])) $this->contract = JsonConverters::from('DocumentReference', $o['contract']);
        if (isset($o['customerReference'])) $this->customerReference = JsonConverters::from('DocumentReference', $o['customerReference']);
        if (isset($o['deliveryNote'])) $this->deliveryNote = JsonConverters::from('DocumentReference', $o['deliveryNote']);
        if (isset($o['despatchAdvice'])) $this->despatchAdvice = JsonConverters::from('DocumentReference', $o['despatchAdvice']);
        if (isset($o['productCertification'])) $this->productCertification = JsonConverters::from('DocumentReference', $o['productCertification']);
        if (isset($o['promotionalDeal'])) $this->promotionalDeal = JsonConverters::from('DocumentReference', $o['promotionalDeal']);
        if (isset($o['purchaseConditions'])) $this->purchaseConditions = JsonConverters::from('DocumentReference', $o['purchaseConditions']);
        if (isset($o['purchaseOrder'])) $this->purchaseOrder = JsonConverters::from('DocumentReference', $o['purchaseOrder']);
        if (isset($o['requestedItemIdentification'])) $this->requestedItemIdentification = JsonConverters::from('TradeItemIdentification', $o['requestedItemIdentification']);
        if (isset($o['specification'])) $this->specification = JsonConverters::from('DocumentReference', $o['specification']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->extension)) $o['extension'] = $this->extension;
        if (isset($this->lineItemNumber)) $o['lineItemNumber'] = $this->lineItemNumber;
        if (isset($this->note)) $o['note'] = $this->note;
        if (isset($this->parentLineItemNumber)) $o['parentLineItemNumber'] = $this->parentLineItemNumber;
        if (isset($this->quantityAccepted)) $o['quantityAccepted'] = JsonConverters::to('Quantity', $this->quantityAccepted);
        if (isset($this->quantityDespatched)) $o['quantityDespatched'] = JsonConverters::to('Quantity', $this->quantityDespatched);
        if (isset($this->quantityReceived)) $o['quantityReceived'] = JsonConverters::to('Quantity', $this->quantityReceived);
        if (isset($this->receivingConditionInformation)) $o['receivingConditionInformation'] = JsonConverters::toArray('ReceivingConditionInformation', $this->receivingConditionInformation);
        if (isset($this->transactionalTradeItem)) $o['transactionalTradeItem'] = JsonConverters::to('TransactionalTradeItem', $this->transactionalTradeItem);
        if (isset($this->consignmentIdentification)) $o['consignmentIdentification'] = JsonConverters::to('ConsignmentIdentification', $this->consignmentIdentification);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::to('AvpList', $this->avpList);
        if (isset($this->contract)) $o['contract'] = JsonConverters::to('DocumentReference', $this->contract);
        if (isset($this->customerReference)) $o['customerReference'] = JsonConverters::to('DocumentReference', $this->customerReference);
        if (isset($this->deliveryNote)) $o['deliveryNote'] = JsonConverters::to('DocumentReference', $this->deliveryNote);
        if (isset($this->despatchAdvice)) $o['despatchAdvice'] = JsonConverters::to('DocumentReference', $this->despatchAdvice);
        if (isset($this->productCertification)) $o['productCertification'] = JsonConverters::to('DocumentReference', $this->productCertification);
        if (isset($this->promotionalDeal)) $o['promotionalDeal'] = JsonConverters::to('DocumentReference', $this->promotionalDeal);
        if (isset($this->purchaseConditions)) $o['purchaseConditions'] = JsonConverters::to('DocumentReference', $this->purchaseConditions);
        if (isset($this->purchaseOrder)) $o['purchaseOrder'] = JsonConverters::to('DocumentReference', $this->purchaseOrder);
        if (isset($this->requestedItemIdentification)) $o['requestedItemIdentification'] = JsonConverters::to('TradeItemIdentification', $this->requestedItemIdentification);
        if (isset($this->specification)) $o['specification'] = JsonConverters::to('DocumentReference', $this->specification);
        return empty($o) ? new class(){} : $o;
    }
}

class ReceivingAdviceLogisticUnit extends LogisticUnits implements JsonSerializable
{
    /**
     * @param string $childPackageTypeCode
     * @param int|null $levelIdentification
     * @param string $packageTypeCode
     * @param int|null $parentLevelIdentification
     * @param int|null $quantityOfChildren
     * @param int|null $quantityOfLogisticUnits
     * @param LogisticUnitMeasurement|null $logisticUnitMeasurement
     * @param array<ReturnablePackaging>|null $returnablePackaging
     * @param CarrierTrackAndTraceInformation|null $carrierTrackAndTraceInformation
     * @param AvpList|null $avpList
     * @param array<Ecom_IndividualAssetIdentification>|null $individualAssetIdentification
     * @param Ecom_LogisticUnitIdentification|null $logisticUnitIdentification
     */
    public function __construct(
        string $childPackageTypeCode='',
        ?int $levelIdentification=null,
        string $packageTypeCode='',
        ?int $parentLevelIdentification=null,
        ?int $quantityOfChildren=null,
        ?int $quantityOfLogisticUnits=null,
        ?LogisticUnitMeasurement $logisticUnitMeasurement=null,
        ?array $returnablePackaging=null,
        ?CarrierTrackAndTraceInformation $carrierTrackAndTraceInformation=null,
        ?AvpList $avpList=null,
        ?array $individualAssetIdentification=null,
        ?Ecom_LogisticUnitIdentification $logisticUnitIdentification=null,
        /** @var array<ReceivingAdviceLineItem>|null */
        public ?array $receivingAdviceLineItem=null
    ) {
        parent::__construct($childPackageTypeCode,$levelIdentification,$packageTypeCode,$parentLevelIdentification,$quantityOfChildren,$quantityOfLogisticUnits,$logisticUnitMeasurement,$returnablePackaging,$carrierTrackAndTraceInformation,$avpList,$individualAssetIdentification,$logisticUnitIdentification);
    }

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

class ReceivingAdvice extends BaseDocument implements JsonSerializable
{
    /**
     * @param string $currencyCode
     * @param DateTime $creationDateTime
     * @param DocumentAction|null $documentActionCode
     * @param DocumentStatus|null $documentStatusCode
     * @param string $documentStructureVersion
     * @param DateTime|null $lastUpdateDateTime
     * @param int|null $revisionNumber
     * @param array<AvpList>|null $avpList
     */
    public function __construct(
        string $currencyCode='',
        DateTime $creationDateTime=new DateTime(),
        ?DocumentAction $documentActionCode=null,
        ?DocumentStatus $documentStatusCode=null,
        string $documentStructureVersion='',
        ?DateTime $lastUpdateDateTime=null,
        ?int $revisionNumber=null,
        ?array $avpList=null,
        /** @var DateTime|null */
        public ?DateTime $despatchAdviceDeliveryDateTime=null,
        /** @var string */
        public string $note='',
        /** @var DateTime|null */
        public ?DateTime $paymentDateTime=null,
        /** @var DateTime|null */
        public ?DateTime $receivingDateTime=null,
        /** @var string */
        public string $reportingCode='',
        /** @var float|null */
        public ?float $totalDepositAmount=null,
        /** @var ReceivingAdviceTransportInformation|null */
        public ?ReceivingAdviceTransportInformation $receivingAdviceTransportInformation=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $billOfLadingNumber=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $buyer=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $carrier=null,
        /** @var ConsignmentIdentification|null */
        public ?ConsignmentIdentification $consignmentIdentification=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $deliveryNote=null,
        /** @var string */
        public string $despatchAdvice='',
        /** @var TransactionalParty|null */
        public ?TransactionalParty $inventoryLocation=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $purchaseOrder=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $receiver=null,
        /** @var string */
        public string $receivingAdviceIdentification='',
        /** @var TransactionalParty|null */
        public ?TransactionalParty $seller=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $shipFrom=null,
        /** @var ConsignmentIdentification|null */
        public ?ConsignmentIdentification $shipmentIdentification=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $shipper=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $shipTo=null,
        /** @var array<ReceivingAdviceLogisticUnit>|null */
        public ?array $receivingAdviceLogisticUnit=null
    ) {
        parent::__construct($currencyCode,$creationDateTime,$documentActionCode,$documentStatusCode,$documentStructureVersion,$lastUpdateDateTime,$revisionNumber,$avpList);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['despatchAdviceDeliveryDateTime'])) $this->despatchAdviceDeliveryDateTime = JsonConverters::from('DateTime', $o['despatchAdviceDeliveryDateTime']);
        if (isset($o['note'])) $this->note = $o['note'];
        if (isset($o['paymentDateTime'])) $this->paymentDateTime = JsonConverters::from('DateTime', $o['paymentDateTime']);
        if (isset($o['receivingDateTime'])) $this->receivingDateTime = JsonConverters::from('DateTime', $o['receivingDateTime']);
        if (isset($o['reportingCode'])) $this->reportingCode = $o['reportingCode'];
        if (isset($o['totalDepositAmount'])) $this->totalDepositAmount = $o['totalDepositAmount'];
        if (isset($o['receivingAdviceTransportInformation'])) $this->receivingAdviceTransportInformation = JsonConverters::from('ReceivingAdviceTransportInformation', $o['receivingAdviceTransportInformation']);
        if (isset($o['billOfLadingNumber'])) $this->billOfLadingNumber = JsonConverters::from('DocumentReference', $o['billOfLadingNumber']);
        if (isset($o['buyer'])) $this->buyer = JsonConverters::from('TransactionalParty', $o['buyer']);
        if (isset($o['carrier'])) $this->carrier = JsonConverters::from('TransactionalParty', $o['carrier']);
        if (isset($o['consignmentIdentification'])) $this->consignmentIdentification = JsonConverters::from('ConsignmentIdentification', $o['consignmentIdentification']);
        if (isset($o['deliveryNote'])) $this->deliveryNote = JsonConverters::from('DocumentReference', $o['deliveryNote']);
        if (isset($o['despatchAdvice'])) $this->despatchAdvice = $o['despatchAdvice'];
        if (isset($o['inventoryLocation'])) $this->inventoryLocation = JsonConverters::from('TransactionalParty', $o['inventoryLocation']);
        if (isset($o['purchaseOrder'])) $this->purchaseOrder = JsonConverters::from('DocumentReference', $o['purchaseOrder']);
        if (isset($o['receiver'])) $this->receiver = JsonConverters::from('TransactionalParty', $o['receiver']);
        if (isset($o['receivingAdviceIdentification'])) $this->receivingAdviceIdentification = $o['receivingAdviceIdentification'];
        if (isset($o['seller'])) $this->seller = JsonConverters::from('TransactionalParty', $o['seller']);
        if (isset($o['shipFrom'])) $this->shipFrom = JsonConverters::from('TransactionalParty', $o['shipFrom']);
        if (isset($o['shipmentIdentification'])) $this->shipmentIdentification = JsonConverters::from('ConsignmentIdentification', $o['shipmentIdentification']);
        if (isset($o['shipper'])) $this->shipper = JsonConverters::from('TransactionalParty', $o['shipper']);
        if (isset($o['shipTo'])) $this->shipTo = JsonConverters::from('TransactionalParty', $o['shipTo']);
        if (isset($o['receivingAdviceLogisticUnit'])) $this->receivingAdviceLogisticUnit = JsonConverters::fromArray('ReceivingAdviceLogisticUnit', $o['receivingAdviceLogisticUnit']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->despatchAdviceDeliveryDateTime)) $o['despatchAdviceDeliveryDateTime'] = JsonConverters::to('DateTime', $this->despatchAdviceDeliveryDateTime);
        if (isset($this->note)) $o['note'] = $this->note;
        if (isset($this->paymentDateTime)) $o['paymentDateTime'] = JsonConverters::to('DateTime', $this->paymentDateTime);
        if (isset($this->receivingDateTime)) $o['receivingDateTime'] = JsonConverters::to('DateTime', $this->receivingDateTime);
        if (isset($this->reportingCode)) $o['reportingCode'] = $this->reportingCode;
        if (isset($this->totalDepositAmount)) $o['totalDepositAmount'] = $this->totalDepositAmount;
        if (isset($this->receivingAdviceTransportInformation)) $o['receivingAdviceTransportInformation'] = JsonConverters::to('ReceivingAdviceTransportInformation', $this->receivingAdviceTransportInformation);
        if (isset($this->billOfLadingNumber)) $o['billOfLadingNumber'] = JsonConverters::to('DocumentReference', $this->billOfLadingNumber);
        if (isset($this->buyer)) $o['buyer'] = JsonConverters::to('TransactionalParty', $this->buyer);
        if (isset($this->carrier)) $o['carrier'] = JsonConverters::to('TransactionalParty', $this->carrier);
        if (isset($this->consignmentIdentification)) $o['consignmentIdentification'] = JsonConverters::to('ConsignmentIdentification', $this->consignmentIdentification);
        if (isset($this->deliveryNote)) $o['deliveryNote'] = JsonConverters::to('DocumentReference', $this->deliveryNote);
        if (isset($this->despatchAdvice)) $o['despatchAdvice'] = $this->despatchAdvice;
        if (isset($this->inventoryLocation)) $o['inventoryLocation'] = JsonConverters::to('TransactionalParty', $this->inventoryLocation);
        if (isset($this->purchaseOrder)) $o['purchaseOrder'] = JsonConverters::to('DocumentReference', $this->purchaseOrder);
        if (isset($this->receiver)) $o['receiver'] = JsonConverters::to('TransactionalParty', $this->receiver);
        if (isset($this->receivingAdviceIdentification)) $o['receivingAdviceIdentification'] = $this->receivingAdviceIdentification;
        if (isset($this->seller)) $o['seller'] = JsonConverters::to('TransactionalParty', $this->seller);
        if (isset($this->shipFrom)) $o['shipFrom'] = JsonConverters::to('TransactionalParty', $this->shipFrom);
        if (isset($this->shipmentIdentification)) $o['shipmentIdentification'] = JsonConverters::to('ConsignmentIdentification', $this->shipmentIdentification);
        if (isset($this->shipper)) $o['shipper'] = JsonConverters::to('TransactionalParty', $this->shipper);
        if (isset($this->shipTo)) $o['shipTo'] = JsonConverters::to('TransactionalParty', $this->shipTo);
        if (isset($this->receivingAdviceLogisticUnit)) $o['receivingAdviceLogisticUnit'] = JsonConverters::toArray('ReceivingAdviceLogisticUnit', $this->receivingAdviceLogisticUnit);
        return empty($o) ? new class(){} : $o;
    }
}

class ReceivingAdviceMessage implements JsonSerializable
{
    public function __construct(
        /** @var Header|null */
        public ?Header $header=null,
        /** @var ReceivingAdvice|null */
        public ?ReceivingAdvice $receivingAdvice=null
    ) {
    }

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

/** @description Receiving Advice */
// @Api(Description="Receiving Advice")
// @ApiResponse(Description="Add ReceivingAdvice request received", IsDefaultResponse=true, StatusCode=200)
// @ApiResponse(Description="ReceivingAdvice not accepted, Confirm Sender GLN", ResponseType="typeof(System.UnauthorizedAccessException)", StatusCode=403)
class AddReceivingAdvice implements JsonSerializable
{
    public function __construct(
        /** @description ReceivingAdvice model containing all of the ReceivingAdvice data */
        // @ApiMember(Description="ReceivingAdvice model containing all of the ReceivingAdvice data", ParameterType="model")
        /** @var ReceivingAdviceMessage|null */
        public ?ReceivingAdviceMessage $receivingAdvice=null
    ) {
    }

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

PHP AddReceivingAdvice DTOs

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

HTTP + OTHER

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

POST /api/receivingAdvice HTTP/1.1 
Host: stf-api-uat.data-xchange.co.za 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"receivingAdvice":{"header":{"documentIdentification":{"identifier":"String","type":"String"},"sender":{"identifier":{"authority":"String","text":"String"},"contactInformation":[{}]},"receiver":{"identifier":{"authority":"String","text":"String"},"contactInformation":[{}]}},"receivingAdvice":{"despatchAdviceDeliveryDateTime":"0001-01-01","note":"String","paymentDateTime":"0001-01-01","receivingDateTime":"0001-01-01","reportingCode":"String","totalDepositAmount":0,"receivingAdviceTransportInformation":{"routeID":{"authority":"String","text":"String"},"transportMeansID":{"authority":"String","text":"String"},"transportMeansName":"String","driver":{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]},"driverID":{"dateOfBirth":"0001-01-01","gender":"String","nationality":"String","personName":"String","identityDocument":[{"identityDocumentIssuer":"String","identityDocumentNumber":"String","identityDocumentType":"String"}]},"receiver":{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]},"receiverID":{"dateOfBirth":"0001-01-01","gender":"String","nationality":"String","personName":"String","identityDocument":[{"identityDocumentIssuer":"String","identityDocumentNumber":"String","identityDocumentType":"String"}]}},"billOfLadingNumber":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"buyer":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"carrier":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"consignmentIdentification":{"ginc":"String","additionalConsignmentIdentification":{"text":"String","additionalConsignmentIdentificationTypeCode":"String"}},"deliveryNote":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"despatchAdvice":"String","inventoryLocation":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"purchaseOrder":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"receiver":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"receivingAdviceIdentification":"String","seller":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"shipFrom":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"shipmentIdentification":{"ginc":"String","additionalConsignmentIdentification":{"text":"String","additionalConsignmentIdentificationTypeCode":"String"}},"shipper":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"shipTo":{"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}],"address":{"streetAddressOne":"String","streetAddressTwo":"String","streetAddressThree":"String","city":"String","postalCode":"String","provinceCode":"String","countryCode":"String"},"communicationChannel":[{"code":"String","value":"String"}],"financialInstitutionInformation":{"financialInstitutionBranchName":"String","financialInstitutionName":"String","financialRoutingNumber":{"number":"String","numberTypeCode":"String"},"financialAccount":{"number":"String","numberTypeCode":"String","name":"String"},"swiftCode":"String","exportersCode":"String"},"dutyFeeTaxRegistration":"String","entityIdentification":"String","gln":"String","name":"String","additionalPartyIdentification":[{"code":"String","value":"String"}]},"receivingAdviceLogisticUnit":[{"receivingAdviceLineItem":[{"extension":"String","lineItemNumber":0,"note":"String","parentLineItemNumber":0,"quantityAccepted":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"quantityDespatched":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"quantityReceived":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"receivingConditionInformation":[{"receivedGoodsDisposition":"String","receivingConditionCode":"String","receivingConditionQuantity":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"}}],"transactionalTradeItem":{"gtin":"String","additionalTradeItemIdentification":[{"code":"String","value":"String"}],"tradeItemQuantity":0,"tradeItemDescription":"String","productVariantIdentifier":"String","itemTypeCode":"String","tradeItemDataOwner":"String","butterFatReference":"String","transactionalItemData":[{"availableForSaleDate":"0001-01-01","batchNumber":"String","bestBeforeDate":"0001-01-01","countryOfOrigin":"String","itemExpirationDate":"0001-01-01","lotNumber":"String","packagingDate":"0001-01-01","productionDate":"0001-01-01","productQualityIndication":"String","sellByDate":"0001-01-01","serialNumber":["String"],"shelfLife":"String","tradeItemQuantity":0,"itemInContactWithFoodProduct":false,"transactionalItemWeight":[{"measurementUnitCode":"String","measurementType":"String","measurementValue":"String"}],"transactionalItemVolume":[{"measurementUnitCode":"String","measurementType":"String","measurementValue":"String"}],"serialNumberRange":[{"maximumValue":"String","minimumValue":"String"}],"transactionalItemDimensions":[{"measurementUnitCode":"String","depth":"String","height":"String","width":"String"}],"transactionalItemLogisticUnitInformation":{"numberOfLayers":0,"numberOfUnitsPerLayer":0,"numberOfUnitsPerPallet":0,"packagingTerms":"String","packageTypeCode":"String","maximumStackingFactor":0,"returnablePackageTransportCostPayment":"String","dimensionsOfLogisticUnit":[{"measurementUnitCode":"String","depth":"String","height":"String","width":"String"}]},"transactionalItemDataCarrierAndIdentification":{"gs1TransactionalItemIdentificationKey":"String","dataCarrier":"String"},"tradeItemWaste":[{"wasteIdentification":"String","typeOfWaste":[{"code":"String","value":"String"}]}],"transactionalItemOrganicInformation":{"isTradeItemOrganic":false,"organicCertification":"String"},"avpList":[{"code":"String","value":"String"}]}],"colour":[{"colourCode":"String","colourDescription":"String"}],"size":{"descriptiveSize":"String","sizeCode":"String"},"tradeItemClassification":{"gpcCategoryCode":"String","additionalTradeItemClassificationCode":[{"code":"String","value":"String"}],"gpcCategoryName":"String","gpcAttribute":[{"code":"String","value":"String"}]},"avpList":[{"code":"String","value":"String"}]},"consignmentIdentification":{"ginc":"String","additionalConsignmentIdentification":{"text":"String","additionalConsignmentIdentificationTypeCode":"String"}},"avpList":{"code":"String","value":"String"},"contract":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"customerReference":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"deliveryNote":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"despatchAdvice":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"productCertification":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"promotionalDeal":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"purchaseConditions":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"purchaseOrder":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"},"requestedItemIdentification":{"additionalTradeItemIdentification":[{"code":"String","value":"String"}],"gtin":"String"},"specification":{"creationDateTime":"0001-01-01","revisionNumber":0,"lineItemNumber":0,"entityIdentification":"String"}}],"childPackageTypeCode":"String","levelIdentification":0,"packageTypeCode":"String","parentLevelIdentification":0,"quantityOfChildren":0,"quantityOfLogisticUnits":0,"logisticUnitMeasurement":{"dimension":{"depth":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"height":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"width":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"}},"unitMeasurement":{"measurementType":"String","measurementValue":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"}}},"returnablePackaging":[{"currentHolderRegistration":{"authority":"String","text":"String"},"newHolderRegistration":{"authority":"String","text":"String"},"packagingConditionCode":"String","packagingQuantity":0,"individualReturnableAssetIdentification":[{"additionalReturnableAssetIdentification":[{"value":"String","additionalReturnableAssetIdentificationTypeCode":"String"}],"grai":"String"}],"returnableAssetIdentification":{"additionalReturnableAssetIdentification":[{"value":"String","additionalReturnableAssetIdentificationTypeCode":"String"}],"grai":"String"}}],"carrierTrackAndTraceInformation":{"carrierTrackAndTraceURL":"String","packageTrackingNumber":"String"},"avpList":{"code":"String","value":"String"},"individualAssetIdentification":[{"additionalIndividualAssetIdentification":[{"value":0,"additionalIndividualAssetIdentificationTypeCode":"String"}],"giai":"String"}],"logisticUnitIdentification":{"additionalLogisiticUnitIdentification":[{"value":0,"additionalLogisticUnitIdentificationTypeCode":"String"}],"sscc":"String"}}],"currencyCode":"String","documentActionCode":"ADD","documentStatusCode":"ADDITIONAL_TRANSMISSION","documentStructureVersion":"String","lastUpdateDateTime":"0001-01-01","revisionNumber":0,"avpList":[{"code":"String","value":"String"}]}}}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{}