| POST | /api/itemDataNotification | Add new ItemDataNotification |
|---|
export class TokenDto implements ICommandResponse
{
public token: string;
public constructor(init?: Partial<TokenDto>) { (Object as any).assign(this, init); }
}
export enum DocumentAction
{
ADD = 'ADD',
CHANGE_BY_REFRESH = 'CHANGE_BY_REFRESH',
DELETE = 'DELETE',
REJECTED = 'REJECTED',
}
export enum DocumentStatus
{
ADDITIONAL_TRANSMISSION = 'ADDITIONAL_TRANSMISSION',
COPY = 'COPY',
ORIGINAL = 'ORIGINAL',
}
export class AvpList
{
public code: string;
public value: string;
public constructor(init?: Partial<AvpList>) { (Object as any).assign(this, init); }
}
export class BaseDocument
{
public currencyCode: string;
public creationDateTime: string;
public documentActionCode: DocumentAction;
public documentStatusCode: DocumentStatus;
public documentStructureVersion: string;
public lastUpdateDateTime?: string;
public revisionNumber?: number;
public avpList: AvpList[] = [];
public constructor(init?: Partial<BaseDocument>) { (Object as any).assign(this, init); }
}
export class Ecom_PartyIdentificationType
{
public gln: string;
public name: string;
public additionalPartyIdentification: AvpList[] = [];
public constructor(init?: Partial<Ecom_PartyIdentificationType>) { (Object as any).assign(this, init); }
}
export class CommunicationChannel
{
public communicationChannelCode: string;
public communicationChannelName: string;
public communicationValue: string;
public constructor(init?: Partial<CommunicationChannel>) { (Object as any).assign(this, init); }
}
export class Contact
{
public contactTypeCode: string;
public personName: string;
public departmentName: string;
public jobTitle: string;
public responsibility: string;
public communicationChannel: CommunicationChannel[] = [];
public constructor(init?: Partial<Contact>) { (Object as any).assign(this, init); }
}
export class Address
{
public streetAddressOne: string;
public streetAddressTwo: string;
public streetAddressThree: string;
public city: string;
public postalCode: string;
public provinceCode: string;
public countryCode: string;
public constructor(init?: Partial<Address>) { (Object as any).assign(this, init); }
}
export class FinancialRoutingNumber
{
public number: string;
public numberTypeCode: string;
public constructor(init?: Partial<FinancialRoutingNumber>) { (Object as any).assign(this, init); }
}
export class FinancialAccount
{
public number: string;
public numberTypeCode: string;
public name: string;
public constructor(init?: Partial<FinancialAccount>) { (Object as any).assign(this, init); }
}
export class FinancialInstitutionInformation
{
public financialInstitutionBranchName: string;
public financialInstitutionName: string;
public financialRoutingNumber: FinancialRoutingNumber;
public financialAccount: FinancialAccount;
public swiftCode: string;
public exportersCode: string;
public constructor(init?: Partial<FinancialInstitutionInformation>) { (Object as any).assign(this, init); }
}
export class TransactionalParty extends Ecom_PartyIdentificationType
{
public contact: Contact[] = [];
public address: Address;
public communicationChannel: AvpList[] = [];
public financialInstitutionInformation: FinancialInstitutionInformation;
public dutyFeeTaxRegistration: string;
public entityIdentification: string;
public constructor(init?: Partial<TransactionalParty>) { super(init); (Object as any).assign(this, init); }
}
export class AdditionalTradeItemIdentification
{
public value: string;
public code: string;
public constructor(init?: Partial<AdditionalTradeItemIdentification>) { (Object as any).assign(this, init); }
}
export class Ecom_TradeItemIdentification
{
public additionalTradeItemIdentification: AdditionalTradeItemIdentification[] = [];
public gtin: string;
public constructor(init?: Partial<Ecom_TradeItemIdentification>) { (Object as any).assign(this, init); }
}
export class IdentifierType
{
public value: string;
public identificationSchemeAgencyCodeCodeListVersion: string;
public identificationSchemeAgencyName: string;
public identificationSchemeName: string;
public constructor(init?: Partial<IdentifierType>) { (Object as any).assign(this, init); }
}
export class AdditionalTradeItemClassificationCode
{
public value: string;
public additionalTradeItemClassificationCodeListCode: string;
public additionalTradeItemClassificationCodeListVersion: string;
public codeDescription: string;
public constructor(init?: Partial<AdditionalTradeItemClassificationCode>) { (Object as any).assign(this, init); }
}
export class Measurement
{
public value?: number;
public codeListVersion: string;
public measurementUnitCode: string;
public constructor(init?: Partial<Measurement>) { (Object as any).assign(this, init); }
}
export class ItemDataWeightAndDimension
{
public depth: Measurement;
public diameter: Measurement;
public grossWeight: Measurement;
public height: Measurement;
public netWeight: Measurement;
public width: Measurement;
public constructor(init?: Partial<ItemDataWeightAndDimension>) { (Object as any).assign(this, init); }
}
export class TemperatureMeasurement
{
public value?: number;
public temperatureMeasurementUnitCode: string;
public constructor(init?: Partial<TemperatureMeasurement>) { (Object as any).assign(this, init); }
}
export class TemperatureRange
{
public maximumTemperature: TemperatureMeasurement;
public minimumTemperature: TemperatureMeasurement;
public constructor(init?: Partial<TemperatureRange>) { (Object as any).assign(this, init); }
}
export class HandlingInstruction
{
public handlingInstructionCode: string;
public handlingInstructionText: string;
public printingInstructionCode: string[] = [];
public storageTemperature: TemperatureRange;
public transportTemperature: TemperatureRange;
public constructor(init?: Partial<HandlingInstruction>) { (Object as any).assign(this, init); }
}
// @DataContract
export class Identifier
{
// @DataMember(Name="authority")
public authority: string;
// @DataMember(Name="text")
public text: string;
public constructor(init?: Partial<Identifier>) { (Object as any).assign(this, init); }
}
export class DangerousGoodsInformation
{
public dangerousGoodsDescription: string;
public dangerousGoodsShippingName: string;
public dangerousGoodsTechnicalName: string;
public dangerousGoodsUNIdentifier: Identifier;
public contact: Contact[] = [];
public constructor(init?: Partial<DangerousGoodsInformation>) { (Object as any).assign(this, init); }
}
export class AdministrativeUnit
{
public typeCode: string;
public gln: string;
public internalIdentification: string;
public constructor(init?: Partial<AdministrativeUnit>) { (Object as any).assign(this, init); }
}
export class ItemDataTradingPartnerNeutral
{
public cancelledDateTime?: string;
public discontinuedDateTime?: string;
public effectiveDateTime: string;
public endAvailabilityDateTime?: string;
public maximumStackingFactor?: number;
public startAvailabilityDateTime: string;
public tradeItemBaseUnitOfMeasure: string;
public tradeItemClassificationCode: AdditionalTradeItemClassificationCode[] = [];
public warehouseABCClassificationCode: string;
public itemDataWeightAndDimension: ItemDataWeightAndDimension;
public handlingInstruction: HandlingInstruction[] = [];
public dangerousGoodsInformation: DangerousGoodsInformation[] = [];
public administrativeUnitOfLogisticServiceBuyer: AdministrativeUnit;
public avpList: AvpList[] = [];
public constructor(init?: Partial<ItemDataTradingPartnerNeutral>) { (Object as any).assign(this, init); }
}
export class TimeMeasurement
{
public timeMeasurementUnitCode: string;
public value?: number;
public constructor(init?: Partial<TimeMeasurement>) { (Object as any).assign(this, init); }
}
export class Quantity
{
public value?: number;
public measurementUnitCode: string;
public codeListVersion: string;
public constructor(init?: Partial<Quantity>) { (Object as any).assign(this, init); }
}
export class Dimension
{
public depth: Measurement;
public height: Measurement;
public width: Measurement;
public constructor(init?: Partial<Dimension>) { (Object as any).assign(this, init); }
}
export class ItemDataLogisticUnitInformation
{
public grossWeight: Measurement;
public maximumStackingFactor?: number;
public netWeight: Measurement;
public numberOfLayers?: number;
public packageLevelCode: string;
public packageTypeCode: string;
public tradeItemQuantity: Quantity;
public tradeItemQuantityPerLayer: Quantity;
public avpList: AvpList;
public dimensionsOfLogisticUnit: Dimension[] = [];
public constructor(init?: Partial<ItemDataLogisticUnitInformation>) { (Object as any).assign(this, init); }
}
export class ItemDataStockRequirements
{
public requiredStockLevel: Quantity;
public requiredStockLevelValidityDateTime?: string;
public stockRequirementTypeCode: string;
public constructor(init?: Partial<ItemDataStockRequirements>) { (Object as any).assign(this, init); }
}
export class TransactionalPartyInRole
{
public partyRoleCode: string;
public transactionalParty: TransactionalParty;
public constructor(init?: Partial<TransactionalPartyInRole>) { (Object as any).assign(this, init); }
}
export class ItemDataTradingPartnerDependent
{
public countryOfOrigin: string;
public minimumRemainingShelfLifeInbound: TimeMeasurement;
public minimumRemainingShelfLifeOutbound: TimeMeasurement;
public orderQuantityMaximum: Quantity;
public orderQuantityMinimum: Quantity;
public orderQuantityMultiple: Quantity;
public qualityControlCode: string;
public quarantinePeriod: TimeMeasurement;
public tradeItemProductionLeadTime: TimeMeasurement;
public tradeItemShipmentLeadTime: TimeMeasurement;
public tradeItemSpecificUnitOfMeasure: string;
public tradeItemSubstitutionDateTime?: string;
public itemDataLogisticUnitInformation: ItemDataLogisticUnitInformation[] = [];
public itemDataStockRequirements: ItemDataStockRequirements[] = [];
public administrativeUnitOfReceiver: AdministrativeUnit[] = [];
public avpList: AvpList;
public originatingParty: TransactionalPartyInRole[] = [];
public receiver: TransactionalParty;
public shipper: TransactionalParty;
public substituteItem: Ecom_TradeItemIdentification;
public constructor(init?: Partial<ItemDataTradingPartnerDependent>) { (Object as any).assign(this, init); }
}
export class LowerLevelTradeItem extends Ecom_TradeItemIdentification
{
public quantityOfLowerLevelTradeItem?: number;
public constructor(init?: Partial<LowerLevelTradeItem>) { super(init); (Object as any).assign(this, init); }
}
export class ItemDataNotificationLineItem extends Ecom_TradeItemIdentification
{
public brandName: string;
public gpcCategoryCode: string;
public isTheProductVariantPreferred?: boolean;
public lineItemNumber?: number;
public parentLineItemNumber?: number;
public productVariantIdentifier: IdentifierType;
public quantityOfItemTypes?: number;
public quantityOfItemUnits?: number;
public tradeItemDescription: string[] = [];
public tradeItemUnitDescriptorCode: string;
public itemDataTradingPartnerNeutral: ItemDataTradingPartnerNeutral;
public itemDataTradingPartnerDependent: ItemDataTradingPartnerDependent[] = [];
public lowerLevelTradeItem: LowerLevelTradeItem[] = [];
public avpList: AvpList[] = [];
public constructor(init?: Partial<ItemDataNotificationLineItem>) { super(init); (Object as any).assign(this, init); }
}
export class ItemDataNotificationMessage extends BaseDocument
{
public dataRecipient: TransactionalParty;
public dataSource: TransactionalParty;
public itemDataNotificationIdentification: string;
public itemDataNotificationLineItem: ItemDataNotificationLineItem[] = [];
public constructor(init?: Partial<ItemDataNotificationMessage>) { super(init); (Object as any).assign(this, init); }
}
/** @description Item Data Notification */
// @Api(Description="Item Data Notification")
// @ApiResponse(Description="Add ItemDataNotification request received", IsDefaultResponse=true, StatusCode=200)
// @ApiResponse(Description="ItemDataNotification not accepted, Confirm Sender GLN", ResponseType="typeof(System.UnauthorizedAccessException)", StatusCode=403)
export class AddItemDataNotification
{
/** @description ItemDataNotification model containing all of the ItemDataNotification data */
// @ApiMember(Description="ItemDataNotification model containing all of the ItemDataNotification data", ParameterType="model")
public itemDataNotification: ItemDataNotificationMessage;
public constructor(init?: Partial<AddItemDataNotification>) { (Object as any).assign(this, init); }
}
TypeScript AddItemDataNotification DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /api/itemDataNotification HTTP/1.1
Host: stf-api-uat.data-xchange.co.za
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
itemDataNotification:
{
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
}
]
}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
}