DX STF Client API

<back to all web services

GetItemDataNotificationByIdentifier

Item Data Notification Requests

Item Data Notification

Requires Authentication
The following routes are available for this service:
GET/api/itemDataNotification/{OwnerGln}/{ItemDataNotificationIdentification}Get specific ItemDataNotification by ItemDataNotificationIdentification
<?php namespace dtos;

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


enum 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 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 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 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 AdditionalTradeItemIdentification implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $value='',
        /** @var string */
        public string $code=''
    ) {
    }

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

class Ecom_TradeItemIdentification implements JsonSerializable
{
    public function __construct(
        /** @var array<AdditionalTradeItemIdentification>|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('AdditionalTradeItemIdentification', $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('AdditionalTradeItemIdentification', $this->additionalTradeItemIdentification);
        if (isset($this->gtin)) $o['gtin'] = $this->gtin;
        return empty($o) ? new class(){} : $o;
    }
}

class IdentifierType implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $value='',
        /** @var string */
        public string $identificationSchemeAgencyCodeCodeListVersion='',
        /** @var string */
        public string $identificationSchemeAgencyName='',
        /** @var string */
        public string $identificationSchemeName=''
    ) {
    }

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

class AdditionalTradeItemClassificationCode implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $value='',
        /** @var string */
        public string $additionalTradeItemClassificationCodeListCode='',
        /** @var string */
        public string $additionalTradeItemClassificationCodeListVersion='',
        /** @var string */
        public string $codeDescription=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['value'])) $this->value = $o['value'];
        if (isset($o['additionalTradeItemClassificationCodeListCode'])) $this->additionalTradeItemClassificationCodeListCode = $o['additionalTradeItemClassificationCodeListCode'];
        if (isset($o['additionalTradeItemClassificationCodeListVersion'])) $this->additionalTradeItemClassificationCodeListVersion = $o['additionalTradeItemClassificationCodeListVersion'];
        if (isset($o['codeDescription'])) $this->codeDescription = $o['codeDescription'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->value)) $o['value'] = $this->value;
        if (isset($this->additionalTradeItemClassificationCodeListCode)) $o['additionalTradeItemClassificationCodeListCode'] = $this->additionalTradeItemClassificationCodeListCode;
        if (isset($this->additionalTradeItemClassificationCodeListVersion)) $o['additionalTradeItemClassificationCodeListVersion'] = $this->additionalTradeItemClassificationCodeListVersion;
        if (isset($this->codeDescription)) $o['codeDescription'] = $this->codeDescription;
        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 ItemDataWeightAndDimension implements JsonSerializable
{
    public function __construct(
        /** @var Measurement|null */
        public ?Measurement $depth=null,
        /** @var Measurement|null */
        public ?Measurement $diameter=null,
        /** @var Measurement|null */
        public ?Measurement $grossWeight=null,
        /** @var Measurement|null */
        public ?Measurement $height=null,
        /** @var Measurement|null */
        public ?Measurement $netWeight=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['diameter'])) $this->diameter = JsonConverters::from('Measurement', $o['diameter']);
        if (isset($o['grossWeight'])) $this->grossWeight = JsonConverters::from('Measurement', $o['grossWeight']);
        if (isset($o['height'])) $this->height = JsonConverters::from('Measurement', $o['height']);
        if (isset($o['netWeight'])) $this->netWeight = JsonConverters::from('Measurement', $o['netWeight']);
        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->diameter)) $o['diameter'] = JsonConverters::to('Measurement', $this->diameter);
        if (isset($this->grossWeight)) $o['grossWeight'] = JsonConverters::to('Measurement', $this->grossWeight);
        if (isset($this->height)) $o['height'] = JsonConverters::to('Measurement', $this->height);
        if (isset($this->netWeight)) $o['netWeight'] = JsonConverters::to('Measurement', $this->netWeight);
        if (isset($this->width)) $o['width'] = JsonConverters::to('Measurement', $this->width);
        return empty($o) ? new class(){} : $o;
    }
}

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

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

class TemperatureRange implements JsonSerializable
{
    public function __construct(
        /** @var TemperatureMeasurement|null */
        public ?TemperatureMeasurement $maximumTemperature=null,
        /** @var TemperatureMeasurement|null */
        public ?TemperatureMeasurement $minimumTemperature=null
    ) {
    }

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

class HandlingInstruction implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $handlingInstructionCode='',
        /** @var string */
        public string $handlingInstructionText='',
        /** @var array<string>|null */
        public ?array $printingInstructionCode=null,
        /** @var TemperatureRange|null */
        public ?TemperatureRange $storageTemperature=null,
        /** @var TemperatureRange|null */
        public ?TemperatureRange $transportTemperature=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['handlingInstructionCode'])) $this->handlingInstructionCode = $o['handlingInstructionCode'];
        if (isset($o['handlingInstructionText'])) $this->handlingInstructionText = $o['handlingInstructionText'];
        if (isset($o['printingInstructionCode'])) $this->printingInstructionCode = JsonConverters::fromArray('string', $o['printingInstructionCode']);
        if (isset($o['storageTemperature'])) $this->storageTemperature = JsonConverters::from('TemperatureRange', $o['storageTemperature']);
        if (isset($o['transportTemperature'])) $this->transportTemperature = JsonConverters::from('TemperatureRange', $o['transportTemperature']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->handlingInstructionCode)) $o['handlingInstructionCode'] = $this->handlingInstructionCode;
        if (isset($this->handlingInstructionText)) $o['handlingInstructionText'] = $this->handlingInstructionText;
        if (isset($this->printingInstructionCode)) $o['printingInstructionCode'] = JsonConverters::toArray('string', $this->printingInstructionCode);
        if (isset($this->storageTemperature)) $o['storageTemperature'] = JsonConverters::to('TemperatureRange', $this->storageTemperature);
        if (isset($this->transportTemperature)) $o['transportTemperature'] = JsonConverters::to('TemperatureRange', $this->transportTemperature);
        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;
    }
}

class DangerousGoodsInformation implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $dangerousGoodsDescription='',
        /** @var string */
        public string $dangerousGoodsShippingName='',
        /** @var string */
        public string $dangerousGoodsTechnicalName='',
        /** @var Identifier|null */
        public ?Identifier $dangerousGoodsUNIdentifier=null,
        /** @var array<Contact>|null */
        public ?array $contact=null
    ) {
    }

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

class AdministrativeUnit implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $typeCode='',
        /** @var string */
        public string $gln='',
        /** @var string */
        public string $internalIdentification=''
    ) {
    }

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

class ItemDataTradingPartnerNeutral implements JsonSerializable
{
    public function __construct(
        /** @var DateTime|null */
        public ?DateTime $cancelledDateTime=null,
        /** @var DateTime|null */
        public ?DateTime $discontinuedDateTime=null,
        /** @var DateTime */
        public DateTime $effectiveDateTime=new DateTime(),
        /** @var DateTime|null */
        public ?DateTime $endAvailabilityDateTime=null,
        /** @var int|null */
        public ?int $maximumStackingFactor=null,
        /** @var DateTime */
        public DateTime $startAvailabilityDateTime=new DateTime(),
        /** @var string */
        public string $tradeItemBaseUnitOfMeasure='',
        /** @var array<AdditionalTradeItemClassificationCode>|null */
        public ?array $tradeItemClassificationCode=null,
        /** @var string */
        public string $warehouseABCClassificationCode='',
        /** @var ItemDataWeightAndDimension|null */
        public ?ItemDataWeightAndDimension $itemDataWeightAndDimension=null,
        /** @var array<HandlingInstruction>|null */
        public ?array $handlingInstruction=null,
        /** @var array<DangerousGoodsInformation>|null */
        public ?array $dangerousGoodsInformation=null,
        /** @var AdministrativeUnit|null */
        public ?AdministrativeUnit $administrativeUnitOfLogisticServiceBuyer=null,
        /** @var array<AvpList>|null */
        public ?array $avpList=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['cancelledDateTime'])) $this->cancelledDateTime = JsonConverters::from('DateTime', $o['cancelledDateTime']);
        if (isset($o['discontinuedDateTime'])) $this->discontinuedDateTime = JsonConverters::from('DateTime', $o['discontinuedDateTime']);
        if (isset($o['effectiveDateTime'])) $this->effectiveDateTime = JsonConverters::from('DateTime', $o['effectiveDateTime']);
        if (isset($o['endAvailabilityDateTime'])) $this->endAvailabilityDateTime = JsonConverters::from('DateTime', $o['endAvailabilityDateTime']);
        if (isset($o['maximumStackingFactor'])) $this->maximumStackingFactor = $o['maximumStackingFactor'];
        if (isset($o['startAvailabilityDateTime'])) $this->startAvailabilityDateTime = JsonConverters::from('DateTime', $o['startAvailabilityDateTime']);
        if (isset($o['tradeItemBaseUnitOfMeasure'])) $this->tradeItemBaseUnitOfMeasure = $o['tradeItemBaseUnitOfMeasure'];
        if (isset($o['tradeItemClassificationCode'])) $this->tradeItemClassificationCode = JsonConverters::fromArray('AdditionalTradeItemClassificationCode', $o['tradeItemClassificationCode']);
        if (isset($o['warehouseABCClassificationCode'])) $this->warehouseABCClassificationCode = $o['warehouseABCClassificationCode'];
        if (isset($o['itemDataWeightAndDimension'])) $this->itemDataWeightAndDimension = JsonConverters::from('ItemDataWeightAndDimension', $o['itemDataWeightAndDimension']);
        if (isset($o['handlingInstruction'])) $this->handlingInstruction = JsonConverters::fromArray('HandlingInstruction', $o['handlingInstruction']);
        if (isset($o['dangerousGoodsInformation'])) $this->dangerousGoodsInformation = JsonConverters::fromArray('DangerousGoodsInformation', $o['dangerousGoodsInformation']);
        if (isset($o['administrativeUnitOfLogisticServiceBuyer'])) $this->administrativeUnitOfLogisticServiceBuyer = JsonConverters::from('AdministrativeUnit', $o['administrativeUnitOfLogisticServiceBuyer']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::fromArray('AvpList', $o['avpList']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->cancelledDateTime)) $o['cancelledDateTime'] = JsonConverters::to('DateTime', $this->cancelledDateTime);
        if (isset($this->discontinuedDateTime)) $o['discontinuedDateTime'] = JsonConverters::to('DateTime', $this->discontinuedDateTime);
        if (isset($this->effectiveDateTime)) $o['effectiveDateTime'] = JsonConverters::to('DateTime', $this->effectiveDateTime);
        if (isset($this->endAvailabilityDateTime)) $o['endAvailabilityDateTime'] = JsonConverters::to('DateTime', $this->endAvailabilityDateTime);
        if (isset($this->maximumStackingFactor)) $o['maximumStackingFactor'] = $this->maximumStackingFactor;
        if (isset($this->startAvailabilityDateTime)) $o['startAvailabilityDateTime'] = JsonConverters::to('DateTime', $this->startAvailabilityDateTime);
        if (isset($this->tradeItemBaseUnitOfMeasure)) $o['tradeItemBaseUnitOfMeasure'] = $this->tradeItemBaseUnitOfMeasure;
        if (isset($this->tradeItemClassificationCode)) $o['tradeItemClassificationCode'] = JsonConverters::toArray('AdditionalTradeItemClassificationCode', $this->tradeItemClassificationCode);
        if (isset($this->warehouseABCClassificationCode)) $o['warehouseABCClassificationCode'] = $this->warehouseABCClassificationCode;
        if (isset($this->itemDataWeightAndDimension)) $o['itemDataWeightAndDimension'] = JsonConverters::to('ItemDataWeightAndDimension', $this->itemDataWeightAndDimension);
        if (isset($this->handlingInstruction)) $o['handlingInstruction'] = JsonConverters::toArray('HandlingInstruction', $this->handlingInstruction);
        if (isset($this->dangerousGoodsInformation)) $o['dangerousGoodsInformation'] = JsonConverters::toArray('DangerousGoodsInformation', $this->dangerousGoodsInformation);
        if (isset($this->administrativeUnitOfLogisticServiceBuyer)) $o['administrativeUnitOfLogisticServiceBuyer'] = JsonConverters::to('AdministrativeUnit', $this->administrativeUnitOfLogisticServiceBuyer);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::toArray('AvpList', $this->avpList);
        return empty($o) ? new class(){} : $o;
    }
}

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

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['timeMeasurementUnitCode'])) $this->timeMeasurementUnitCode = $o['timeMeasurementUnitCode'];
        if (isset($o['value'])) $this->value = $o['value'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->timeMeasurementUnitCode)) $o['timeMeasurementUnitCode'] = $this->timeMeasurementUnitCode;
        if (isset($this->value)) $o['value'] = $this->value;
        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 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 ItemDataLogisticUnitInformation implements JsonSerializable
{
    public function __construct(
        /** @var Measurement|null */
        public ?Measurement $grossWeight=null,
        /** @var int|null */
        public ?int $maximumStackingFactor=null,
        /** @var Measurement|null */
        public ?Measurement $netWeight=null,
        /** @var int|null */
        public ?int $numberOfLayers=null,
        /** @var string */
        public string $packageLevelCode='',
        /** @var string */
        public string $packageTypeCode='',
        /** @var Quantity|null */
        public ?Quantity $tradeItemQuantity=null,
        /** @var Quantity|null */
        public ?Quantity $tradeItemQuantityPerLayer=null,
        /** @var AvpList|null */
        public ?AvpList $avpList=null,
        /** @var array<Dimension>|null */
        public ?array $dimensionsOfLogisticUnit=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['grossWeight'])) $this->grossWeight = JsonConverters::from('Measurement', $o['grossWeight']);
        if (isset($o['maximumStackingFactor'])) $this->maximumStackingFactor = $o['maximumStackingFactor'];
        if (isset($o['netWeight'])) $this->netWeight = JsonConverters::from('Measurement', $o['netWeight']);
        if (isset($o['numberOfLayers'])) $this->numberOfLayers = $o['numberOfLayers'];
        if (isset($o['packageLevelCode'])) $this->packageLevelCode = $o['packageLevelCode'];
        if (isset($o['packageTypeCode'])) $this->packageTypeCode = $o['packageTypeCode'];
        if (isset($o['tradeItemQuantity'])) $this->tradeItemQuantity = JsonConverters::from('Quantity', $o['tradeItemQuantity']);
        if (isset($o['tradeItemQuantityPerLayer'])) $this->tradeItemQuantityPerLayer = JsonConverters::from('Quantity', $o['tradeItemQuantityPerLayer']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::from('AvpList', $o['avpList']);
        if (isset($o['dimensionsOfLogisticUnit'])) $this->dimensionsOfLogisticUnit = JsonConverters::fromArray('Dimension', $o['dimensionsOfLogisticUnit']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->grossWeight)) $o['grossWeight'] = JsonConverters::to('Measurement', $this->grossWeight);
        if (isset($this->maximumStackingFactor)) $o['maximumStackingFactor'] = $this->maximumStackingFactor;
        if (isset($this->netWeight)) $o['netWeight'] = JsonConverters::to('Measurement', $this->netWeight);
        if (isset($this->numberOfLayers)) $o['numberOfLayers'] = $this->numberOfLayers;
        if (isset($this->packageLevelCode)) $o['packageLevelCode'] = $this->packageLevelCode;
        if (isset($this->packageTypeCode)) $o['packageTypeCode'] = $this->packageTypeCode;
        if (isset($this->tradeItemQuantity)) $o['tradeItemQuantity'] = JsonConverters::to('Quantity', $this->tradeItemQuantity);
        if (isset($this->tradeItemQuantityPerLayer)) $o['tradeItemQuantityPerLayer'] = JsonConverters::to('Quantity', $this->tradeItemQuantityPerLayer);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::to('AvpList', $this->avpList);
        if (isset($this->dimensionsOfLogisticUnit)) $o['dimensionsOfLogisticUnit'] = JsonConverters::toArray('Dimension', $this->dimensionsOfLogisticUnit);
        return empty($o) ? new class(){} : $o;
    }
}

class ItemDataStockRequirements implements JsonSerializable
{
    public function __construct(
        /** @var Quantity|null */
        public ?Quantity $requiredStockLevel=null,
        /** @var DateTime|null */
        public ?DateTime $requiredStockLevelValidityDateTime=null,
        /** @var string */
        public string $stockRequirementTypeCode=''
    ) {
    }

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

class TransactionalPartyInRole implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $partyRoleCode='',
        /** @var TransactionalParty|null */
        public ?TransactionalParty $transactionalParty=null
    ) {
    }

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

class ItemDataTradingPartnerDependent implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $countryOfOrigin='',
        /** @var TimeMeasurement|null */
        public ?TimeMeasurement $minimumRemainingShelfLifeInbound=null,
        /** @var TimeMeasurement|null */
        public ?TimeMeasurement $minimumRemainingShelfLifeOutbound=null,
        /** @var Quantity|null */
        public ?Quantity $orderQuantityMaximum=null,
        /** @var Quantity|null */
        public ?Quantity $orderQuantityMinimum=null,
        /** @var Quantity|null */
        public ?Quantity $orderQuantityMultiple=null,
        /** @var string */
        public string $qualityControlCode='',
        /** @var TimeMeasurement|null */
        public ?TimeMeasurement $quarantinePeriod=null,
        /** @var TimeMeasurement|null */
        public ?TimeMeasurement $tradeItemProductionLeadTime=null,
        /** @var TimeMeasurement|null */
        public ?TimeMeasurement $tradeItemShipmentLeadTime=null,
        /** @var string */
        public string $tradeItemSpecificUnitOfMeasure='',
        /** @var DateTime|null */
        public ?DateTime $tradeItemSubstitutionDateTime=null,
        /** @var array<ItemDataLogisticUnitInformation>|null */
        public ?array $itemDataLogisticUnitInformation=null,
        /** @var array<ItemDataStockRequirements>|null */
        public ?array $itemDataStockRequirements=null,
        /** @var array<AdministrativeUnit>|null */
        public ?array $administrativeUnitOfReceiver=null,
        /** @var AvpList|null */
        public ?AvpList $avpList=null,
        /** @var array<TransactionalPartyInRole>|null */
        public ?array $originatingParty=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $receiver=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $shipper=null,
        /** @var Ecom_TradeItemIdentification|null */
        public ?Ecom_TradeItemIdentification $substituteItem=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['countryOfOrigin'])) $this->countryOfOrigin = $o['countryOfOrigin'];
        if (isset($o['minimumRemainingShelfLifeInbound'])) $this->minimumRemainingShelfLifeInbound = JsonConverters::from('TimeMeasurement', $o['minimumRemainingShelfLifeInbound']);
        if (isset($o['minimumRemainingShelfLifeOutbound'])) $this->minimumRemainingShelfLifeOutbound = JsonConverters::from('TimeMeasurement', $o['minimumRemainingShelfLifeOutbound']);
        if (isset($o['orderQuantityMaximum'])) $this->orderQuantityMaximum = JsonConverters::from('Quantity', $o['orderQuantityMaximum']);
        if (isset($o['orderQuantityMinimum'])) $this->orderQuantityMinimum = JsonConverters::from('Quantity', $o['orderQuantityMinimum']);
        if (isset($o['orderQuantityMultiple'])) $this->orderQuantityMultiple = JsonConverters::from('Quantity', $o['orderQuantityMultiple']);
        if (isset($o['qualityControlCode'])) $this->qualityControlCode = $o['qualityControlCode'];
        if (isset($o['quarantinePeriod'])) $this->quarantinePeriod = JsonConverters::from('TimeMeasurement', $o['quarantinePeriod']);
        if (isset($o['tradeItemProductionLeadTime'])) $this->tradeItemProductionLeadTime = JsonConverters::from('TimeMeasurement', $o['tradeItemProductionLeadTime']);
        if (isset($o['tradeItemShipmentLeadTime'])) $this->tradeItemShipmentLeadTime = JsonConverters::from('TimeMeasurement', $o['tradeItemShipmentLeadTime']);
        if (isset($o['tradeItemSpecificUnitOfMeasure'])) $this->tradeItemSpecificUnitOfMeasure = $o['tradeItemSpecificUnitOfMeasure'];
        if (isset($o['tradeItemSubstitutionDateTime'])) $this->tradeItemSubstitutionDateTime = JsonConverters::from('DateTime', $o['tradeItemSubstitutionDateTime']);
        if (isset($o['itemDataLogisticUnitInformation'])) $this->itemDataLogisticUnitInformation = JsonConverters::fromArray('ItemDataLogisticUnitInformation', $o['itemDataLogisticUnitInformation']);
        if (isset($o['itemDataStockRequirements'])) $this->itemDataStockRequirements = JsonConverters::fromArray('ItemDataStockRequirements', $o['itemDataStockRequirements']);
        if (isset($o['administrativeUnitOfReceiver'])) $this->administrativeUnitOfReceiver = JsonConverters::fromArray('AdministrativeUnit', $o['administrativeUnitOfReceiver']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::from('AvpList', $o['avpList']);
        if (isset($o['originatingParty'])) $this->originatingParty = JsonConverters::fromArray('TransactionalPartyInRole', $o['originatingParty']);
        if (isset($o['receiver'])) $this->receiver = JsonConverters::from('TransactionalParty', $o['receiver']);
        if (isset($o['shipper'])) $this->shipper = JsonConverters::from('TransactionalParty', $o['shipper']);
        if (isset($o['substituteItem'])) $this->substituteItem = JsonConverters::from('Ecom_TradeItemIdentification', $o['substituteItem']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->countryOfOrigin)) $o['countryOfOrigin'] = $this->countryOfOrigin;
        if (isset($this->minimumRemainingShelfLifeInbound)) $o['minimumRemainingShelfLifeInbound'] = JsonConverters::to('TimeMeasurement', $this->minimumRemainingShelfLifeInbound);
        if (isset($this->minimumRemainingShelfLifeOutbound)) $o['minimumRemainingShelfLifeOutbound'] = JsonConverters::to('TimeMeasurement', $this->minimumRemainingShelfLifeOutbound);
        if (isset($this->orderQuantityMaximum)) $o['orderQuantityMaximum'] = JsonConverters::to('Quantity', $this->orderQuantityMaximum);
        if (isset($this->orderQuantityMinimum)) $o['orderQuantityMinimum'] = JsonConverters::to('Quantity', $this->orderQuantityMinimum);
        if (isset($this->orderQuantityMultiple)) $o['orderQuantityMultiple'] = JsonConverters::to('Quantity', $this->orderQuantityMultiple);
        if (isset($this->qualityControlCode)) $o['qualityControlCode'] = $this->qualityControlCode;
        if (isset($this->quarantinePeriod)) $o['quarantinePeriod'] = JsonConverters::to('TimeMeasurement', $this->quarantinePeriod);
        if (isset($this->tradeItemProductionLeadTime)) $o['tradeItemProductionLeadTime'] = JsonConverters::to('TimeMeasurement', $this->tradeItemProductionLeadTime);
        if (isset($this->tradeItemShipmentLeadTime)) $o['tradeItemShipmentLeadTime'] = JsonConverters::to('TimeMeasurement', $this->tradeItemShipmentLeadTime);
        if (isset($this->tradeItemSpecificUnitOfMeasure)) $o['tradeItemSpecificUnitOfMeasure'] = $this->tradeItemSpecificUnitOfMeasure;
        if (isset($this->tradeItemSubstitutionDateTime)) $o['tradeItemSubstitutionDateTime'] = JsonConverters::to('DateTime', $this->tradeItemSubstitutionDateTime);
        if (isset($this->itemDataLogisticUnitInformation)) $o['itemDataLogisticUnitInformation'] = JsonConverters::toArray('ItemDataLogisticUnitInformation', $this->itemDataLogisticUnitInformation);
        if (isset($this->itemDataStockRequirements)) $o['itemDataStockRequirements'] = JsonConverters::toArray('ItemDataStockRequirements', $this->itemDataStockRequirements);
        if (isset($this->administrativeUnitOfReceiver)) $o['administrativeUnitOfReceiver'] = JsonConverters::toArray('AdministrativeUnit', $this->administrativeUnitOfReceiver);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::to('AvpList', $this->avpList);
        if (isset($this->originatingParty)) $o['originatingParty'] = JsonConverters::toArray('TransactionalPartyInRole', $this->originatingParty);
        if (isset($this->receiver)) $o['receiver'] = JsonConverters::to('TransactionalParty', $this->receiver);
        if (isset($this->shipper)) $o['shipper'] = JsonConverters::to('TransactionalParty', $this->shipper);
        if (isset($this->substituteItem)) $o['substituteItem'] = JsonConverters::to('Ecom_TradeItemIdentification', $this->substituteItem);
        return empty($o) ? new class(){} : $o;
    }
}

class LowerLevelTradeItem extends Ecom_TradeItemIdentification implements JsonSerializable
{
    /**
     * @param array<AdditionalTradeItemIdentification>|null $additionalTradeItemIdentification
     * @param string $gtin
     */
    public function __construct(
        ?array $additionalTradeItemIdentification=null,
        string $gtin='',
        /** @var float|null */
        public ?float $quantityOfLowerLevelTradeItem=null
    ) {
        parent::__construct($additionalTradeItemIdentification,$gtin);
    }

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

class ItemDataNotificationLineItem extends Ecom_TradeItemIdentification implements JsonSerializable
{
    /**
     * @param array<AdditionalTradeItemIdentification>|null $additionalTradeItemIdentification
     * @param string $gtin
     */
    public function __construct(
        ?array $additionalTradeItemIdentification=null,
        string $gtin='',
        /** @var string */
        public string $brandName='',
        /** @var string */
        public string $gpcCategoryCode='',
        /** @var bool|null */
        public ?bool $isTheProductVariantPreferred=null,
        /** @var int|null */
        public ?int $lineItemNumber=null,
        /** @var int|null */
        public ?int $parentLineItemNumber=null,
        /** @var IdentifierType|null */
        public ?IdentifierType $productVariantIdentifier=null,
        /** @var float|null */
        public ?float $quantityOfItemTypes=null,
        /** @var float|null */
        public ?float $quantityOfItemUnits=null,
        /** @var array<string>|null */
        public ?array $tradeItemDescription=null,
        /** @var string */
        public string $tradeItemUnitDescriptorCode='',
        /** @var ItemDataTradingPartnerNeutral|null */
        public ?ItemDataTradingPartnerNeutral $itemDataTradingPartnerNeutral=null,
        /** @var array<ItemDataTradingPartnerDependent>|null */
        public ?array $itemDataTradingPartnerDependent=null,
        /** @var array<LowerLevelTradeItem>|null */
        public ?array $lowerLevelTradeItem=null,
        /** @var array<AvpList>|null */
        public ?array $avpList=null
    ) {
        parent::__construct($additionalTradeItemIdentification,$gtin);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['brandName'])) $this->brandName = $o['brandName'];
        if (isset($o['gpcCategoryCode'])) $this->gpcCategoryCode = $o['gpcCategoryCode'];
        if (isset($o['isTheProductVariantPreferred'])) $this->isTheProductVariantPreferred = $o['isTheProductVariantPreferred'];
        if (isset($o['lineItemNumber'])) $this->lineItemNumber = $o['lineItemNumber'];
        if (isset($o['parentLineItemNumber'])) $this->parentLineItemNumber = $o['parentLineItemNumber'];
        if (isset($o['productVariantIdentifier'])) $this->productVariantIdentifier = JsonConverters::from('IdentifierType', $o['productVariantIdentifier']);
        if (isset($o['quantityOfItemTypes'])) $this->quantityOfItemTypes = $o['quantityOfItemTypes'];
        if (isset($o['quantityOfItemUnits'])) $this->quantityOfItemUnits = $o['quantityOfItemUnits'];
        if (isset($o['tradeItemDescription'])) $this->tradeItemDescription = JsonConverters::fromArray('string', $o['tradeItemDescription']);
        if (isset($o['tradeItemUnitDescriptorCode'])) $this->tradeItemUnitDescriptorCode = $o['tradeItemUnitDescriptorCode'];
        if (isset($o['itemDataTradingPartnerNeutral'])) $this->itemDataTradingPartnerNeutral = JsonConverters::from('ItemDataTradingPartnerNeutral', $o['itemDataTradingPartnerNeutral']);
        if (isset($o['itemDataTradingPartnerDependent'])) $this->itemDataTradingPartnerDependent = JsonConverters::fromArray('ItemDataTradingPartnerDependent', $o['itemDataTradingPartnerDependent']);
        if (isset($o['lowerLevelTradeItem'])) $this->lowerLevelTradeItem = JsonConverters::fromArray('LowerLevelTradeItem', $o['lowerLevelTradeItem']);
        if (isset($o['avpList'])) $this->avpList = JsonConverters::fromArray('AvpList', $o['avpList']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->brandName)) $o['brandName'] = $this->brandName;
        if (isset($this->gpcCategoryCode)) $o['gpcCategoryCode'] = $this->gpcCategoryCode;
        if (isset($this->isTheProductVariantPreferred)) $o['isTheProductVariantPreferred'] = $this->isTheProductVariantPreferred;
        if (isset($this->lineItemNumber)) $o['lineItemNumber'] = $this->lineItemNumber;
        if (isset($this->parentLineItemNumber)) $o['parentLineItemNumber'] = $this->parentLineItemNumber;
        if (isset($this->productVariantIdentifier)) $o['productVariantIdentifier'] = JsonConverters::to('IdentifierType', $this->productVariantIdentifier);
        if (isset($this->quantityOfItemTypes)) $o['quantityOfItemTypes'] = $this->quantityOfItemTypes;
        if (isset($this->quantityOfItemUnits)) $o['quantityOfItemUnits'] = $this->quantityOfItemUnits;
        if (isset($this->tradeItemDescription)) $o['tradeItemDescription'] = JsonConverters::toArray('string', $this->tradeItemDescription);
        if (isset($this->tradeItemUnitDescriptorCode)) $o['tradeItemUnitDescriptorCode'] = $this->tradeItemUnitDescriptorCode;
        if (isset($this->itemDataTradingPartnerNeutral)) $o['itemDataTradingPartnerNeutral'] = JsonConverters::to('ItemDataTradingPartnerNeutral', $this->itemDataTradingPartnerNeutral);
        if (isset($this->itemDataTradingPartnerDependent)) $o['itemDataTradingPartnerDependent'] = JsonConverters::toArray('ItemDataTradingPartnerDependent', $this->itemDataTradingPartnerDependent);
        if (isset($this->lowerLevelTradeItem)) $o['lowerLevelTradeItem'] = JsonConverters::toArray('LowerLevelTradeItem', $this->lowerLevelTradeItem);
        if (isset($this->avpList)) $o['avpList'] = JsonConverters::toArray('AvpList', $this->avpList);
        return empty($o) ? new class(){} : $o;
    }
}

class ItemDataNotificationMessage 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 TransactionalParty|null */
        public ?TransactionalParty $dataRecipient=null,
        /** @var TransactionalParty|null */
        public ?TransactionalParty $dataSource=null,
        /** @var string */
        public string $itemDataNotificationIdentification='',
        /** @var array<ItemDataNotificationLineItem>|null */
        public ?array $itemDataNotificationLineItem=null
    ) {
        parent::__construct($currencyCode,$creationDateTime,$documentActionCode,$documentStatusCode,$documentStructureVersion,$lastUpdateDateTime,$revisionNumber,$avpList);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['dataRecipient'])) $this->dataRecipient = JsonConverters::from('TransactionalParty', $o['dataRecipient']);
        if (isset($o['dataSource'])) $this->dataSource = JsonConverters::from('TransactionalParty', $o['dataSource']);
        if (isset($o['itemDataNotificationIdentification'])) $this->itemDataNotificationIdentification = $o['itemDataNotificationIdentification'];
        if (isset($o['itemDataNotificationLineItem'])) $this->itemDataNotificationLineItem = JsonConverters::fromArray('ItemDataNotificationLineItem', $o['itemDataNotificationLineItem']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->dataRecipient)) $o['dataRecipient'] = JsonConverters::to('TransactionalParty', $this->dataRecipient);
        if (isset($this->dataSource)) $o['dataSource'] = JsonConverters::to('TransactionalParty', $this->dataSource);
        if (isset($this->itemDataNotificationIdentification)) $o['itemDataNotificationIdentification'] = $this->itemDataNotificationIdentification;
        if (isset($this->itemDataNotificationLineItem)) $o['itemDataNotificationLineItem'] = JsonConverters::toArray('ItemDataNotificationLineItem', $this->itemDataNotificationLineItem);
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Item Data Notification */
// @Api(Description="Item Data Notification")
// @ApiResponse(Description="ItemDataNotification data", IsDefaultResponse=true, StatusCode=200)
// @ApiResponse(Description="No Content", ResponseType="typeof(ServiceStack.IReturnVoid)", StatusCode=204)
// @ApiResponse(Description="Specified argument was out of the range of valid values.", ResponseType="typeof(System.ArgumentOutOfRangeException)", StatusCode=400)
class GetItemDataNotificationByIdentifier implements JsonSerializable
{
    public function __construct(
        /** @description Owner GLN */
        // @ApiMember(Description="Owner GLN", ExcludeInSchema=true, ParameterType="path")
        /** @var string */
        public string $ownerGln='',

        /** @description ItemDataNotification ID or Token */
        // @ApiMember(Description="ItemDataNotification ID or Token", ExcludeInSchema=true, ParameterType="path")
        /** @var string */
        public string $itemDataNotificationIdentification=''
    ) {
    }

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

PHP GetItemDataNotificationByIdentifier 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.

GET /api/itemDataNotification/{OwnerGln}/{ItemDataNotificationIdentification} HTTP/1.1 
Host: stf-api-uat.data-xchange.co.za 
Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"dataRecipient":{"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"}]},"dataSource":{"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"}]},"itemDataNotificationIdentification":"String","itemDataNotificationLineItem":[{"brandName":"String","gpcCategoryCode":"String","isTheProductVariantPreferred":false,"lineItemNumber":0,"parentLineItemNumber":0,"productVariantIdentifier":{"value":"String","identificationSchemeAgencyCodeCodeListVersion":"String","identificationSchemeAgencyName":"String","identificationSchemeName":"String"},"quantityOfItemTypes":0,"quantityOfItemUnits":0,"tradeItemDescription":["String"],"tradeItemUnitDescriptorCode":"String","itemDataTradingPartnerNeutral":{"cancelledDateTime":"0001-01-01","discontinuedDateTime":"0001-01-01","endAvailabilityDateTime":"0001-01-01","maximumStackingFactor":0,"tradeItemBaseUnitOfMeasure":"String","tradeItemClassificationCode":[{"value":"String","additionalTradeItemClassificationCodeListCode":"String","additionalTradeItemClassificationCodeListVersion":"String","codeDescription":"String"}],"warehouseABCClassificationCode":"String","itemDataWeightAndDimension":{"depth":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"diameter":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"grossWeight":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"height":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"netWeight":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"width":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"}},"handlingInstruction":[{"handlingInstructionCode":"String","handlingInstructionText":"String","printingInstructionCode":["String"],"storageTemperature":{"maximumTemperature":{"value":0,"temperatureMeasurementUnitCode":"String"},"minimumTemperature":{"value":0,"temperatureMeasurementUnitCode":"String"}},"transportTemperature":{"maximumTemperature":{"value":0,"temperatureMeasurementUnitCode":"String"},"minimumTemperature":{"value":0,"temperatureMeasurementUnitCode":"String"}}}],"dangerousGoodsInformation":[{"dangerousGoodsDescription":"String","dangerousGoodsShippingName":"String","dangerousGoodsTechnicalName":"String","dangerousGoodsUNIdentifier":{"authority":"String","text":"String"},"contact":[{"contactTypeCode":"String","personName":"String","departmentName":"String","jobTitle":"String","responsibility":"String","communicationChannel":[{"communicationChannelCode":"String","communicationChannelName":"String","communicationValue":"String"}]}]}],"administrativeUnitOfLogisticServiceBuyer":{"typeCode":"String","gln":"String","internalIdentification":"String"},"avpList":[{"code":"String","value":"String"}]},"itemDataTradingPartnerDependent":[{"countryOfOrigin":"String","minimumRemainingShelfLifeInbound":{"timeMeasurementUnitCode":"String","value":0},"minimumRemainingShelfLifeOutbound":{"timeMeasurementUnitCode":"String","value":0},"orderQuantityMaximum":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"orderQuantityMinimum":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"orderQuantityMultiple":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"qualityControlCode":"String","quarantinePeriod":{"timeMeasurementUnitCode":"String","value":0},"tradeItemProductionLeadTime":{"timeMeasurementUnitCode":"String","value":0},"tradeItemShipmentLeadTime":{"timeMeasurementUnitCode":"String","value":0},"tradeItemSpecificUnitOfMeasure":"String","tradeItemSubstitutionDateTime":"0001-01-01","itemDataLogisticUnitInformation":[{"grossWeight":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"maximumStackingFactor":0,"netWeight":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"numberOfLayers":0,"packageLevelCode":"String","packageTypeCode":"String","tradeItemQuantity":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"tradeItemQuantityPerLayer":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"avpList":{"code":"String","value":"String"},"dimensionsOfLogisticUnit":[{"depth":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"height":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"},"width":{"value":0,"codeListVersion":"String","measurementUnitCode":"String"}}]}],"itemDataStockRequirements":[{"requiredStockLevel":{"value":0,"measurementUnitCode":"String","codeListVersion":"String"},"requiredStockLevelValidityDateTime":"0001-01-01","stockRequirementTypeCode":"String"}],"administrativeUnitOfReceiver":[{"typeCode":"String","gln":"String","internalIdentification":"String"}],"avpList":{"code":"String","value":"String"},"originatingParty":[{"partyRoleCode":"String","transactionalParty":{"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"}]}}],"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"}]},"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"}]},"substituteItem":{"additionalTradeItemIdentification":[{"value":"String","code":"String"}],"gtin":"String"}}],"lowerLevelTradeItem":[{"quantityOfLowerLevelTradeItem":0,"additionalTradeItemIdentification":[{"value":"String","code":"String"}],"gtin":"String"}],"avpList":[{"code":"String","value":"String"}],"additionalTradeItemIdentification":[{"value":"String","code":"String"}],"gtin":"String"}],"currencyCode":"String","documentActionCode":"ADD","documentStatusCode":"ADDITIONAL_TRANSMISSION","documentStructureVersion":"String","lastUpdateDateTime":"0001-01-01","revisionNumber":0,"avpList":[{"code":"String","value":"String"}]}