| POST | /api/purchaseCondition | Add new PurchaseCondition |
|---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
Object = TypeVar('Object')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TokenDto(ICommandResponse):
token: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentIdentification:
identifier: Optional[str] = None
type: Optional[str] = None
creation_date_and_time: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Identifier:
authority: Optional[str] = None
text: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactInformation:
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Partner:
identifier: Optional[Identifier] = None
contact_information: List[ContactInformation] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Header:
document_identification: Optional[DocumentIdentification] = None
sender: Optional[Partner] = None
receiver: Optional[Partner] = None
class DocumentAction(str, Enum):
ADD = 'ADD'
CHANGE_BY_REFRESH = 'CHANGE_BY_REFRESH'
DELETE = 'DELETE'
REJECTED = 'REJECTED'
class DocumentStatus(str, Enum):
ADDITIONAL_TRANSMISSION = 'ADDITIONAL_TRANSMISSION'
COPY = 'COPY'
ORIGINAL = 'ORIGINAL'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AvpList:
code: Optional[str] = None
value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BaseDocument:
currency_code: Optional[str] = None
creation_date_time: datetime.datetime = datetime.datetime(1, 1, 1)
document_action_code: Optional[DocumentAction] = None
document_status_code: Optional[DocumentStatus] = None
document_structure_version: Optional[str] = None
last_update_date_time: Optional[datetime.datetime] = None
revision_number: Optional[int] = None
avp_list: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Quantity:
value: Optional[Decimal] = None
measurement_unit_code: Optional[str] = None
code_list_version: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TimeMeasurement:
time_measurement_unit_code: Optional[str] = None
value: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditionsCommitmentPeriod:
commitment_period_duration: Optional[TimeMeasurement] = None
purchase_conditions_commitment_type_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QuantityRange:
maximum_quantity: Optional[Quantity] = None
minimum_quantity: Optional[Quantity] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DateTimeRange:
begin_date: datetime.datetime = datetime.datetime(1, 1, 1)
begin_time: Optional[datetime.timedelta] = None
end_date: Optional[datetime.datetime] = None
end_time: Optional[datetime.timedelta] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditionsPriceInformation:
item_price_base_quantity: Optional[Quantity] = None
item_price_exclusive_allowances_charges: Optional[Decimal] = None
quantity_range: Optional[QuantityRange] = None
effective_period: Optional[DateTimeRange] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AllowanceCharge:
allowance_charge_amount: Optional[Decimal] = None
allowance_charge_percentage: Optional[Decimal] = None
allowance_charge_type: Optional[str] = None
allowance_or_charge_type: Optional[str] = None
amount_per_unit: Optional[Decimal] = None
base_amount: Optional[Decimal] = None
base_number_of_units: Optional[str] = None
bracket_identifier: Optional[str] = None
effective_date_type: Optional[datetime.datetime] = None
sequence_number: Optional[str] = None
settlement_type: Optional[str] = None
special_service_type: Optional[str] = None
allowance_charge_description: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItem:
measurement_unit_code: Optional[str] = None
measurement_type: Optional[str] = None
measurement_value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SerialNumberRange:
maximum_value: Optional[str] = None
minimum_value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItemDimension:
measurement_unit_code: Optional[str] = None
depth: Optional[str] = None
height: Optional[str] = None
width: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItemLogisticUnitInformation:
number_of_layers: Optional[int] = None
number_of_units_per_layer: Optional[int] = None
number_of_units_per_pallet: Optional[int] = None
packaging_terms: Optional[str] = None
package_type_code: Optional[str] = None
maximum_stacking_factor: Optional[int] = None
returnable_package_transport_cost_payment: Optional[str] = None
dimensions_of_logistic_unit: List[TransactionalItemDimension] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItemDataCarrierAndIdentification:
gs1_transactional_item_identification_key: Optional[str] = None
data_carrier: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradeItemWaste:
waste_identification: Optional[str] = None
type_of_waste: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItemOrganicInformation:
is_trade_item_organic: Optional[bool] = None
organic_certification: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalItemData:
available_for_sale_date: Optional[datetime.datetime] = None
batch_number: Optional[str] = None
best_before_date: Optional[datetime.datetime] = None
country_of_origin: Optional[str] = None
item_expiration_date: Optional[datetime.datetime] = None
lot_number: Optional[str] = None
packaging_date: Optional[datetime.datetime] = None
production_date: Optional[datetime.datetime] = None
product_quality_indication: Optional[str] = None
sell_by_date: Optional[datetime.datetime] = None
serial_number: List[str] = field(default_factory=list)
shelf_life: Optional[str] = None
trade_item_quantity: Optional[int] = None
item_in_contact_with_food_product: Optional[bool] = None
transactional_item_weight: List[TransactionalItem] = field(default_factory=list)
transactional_item_volume: List[TransactionalItem] = field(default_factory=list)
serial_number_range: List[SerialNumberRange] = field(default_factory=list)
transactional_item_dimensions: List[TransactionalItemDimension] = field(default_factory=list)
transactional_item_logistic_unit_information: Optional[TransactionalItemLogisticUnitInformation] = None
transactional_item_data_carrier_and_identification: Optional[TransactionalItemDataCarrierAndIdentification] = None
trade_item_waste: List[TradeItemWaste] = field(default_factory=list)
transactional_item_organic_information: Optional[TransactionalItemOrganicInformation] = None
avp_list: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Colour:
colour_code: Optional[str] = None
colour_description: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Size:
descriptive_size: Optional[str] = None
size_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradeItemClassification:
gpc_category_code: Optional[str] = None
additional_trade_item_classification_code: List[AvpList] = field(default_factory=list)
gpc_category_name: Optional[str] = None
gpc_attribute: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalTradeItem:
gtin: Optional[str] = None
additional_trade_item_identification: List[AvpList] = field(default_factory=list)
trade_item_quantity: Optional[Decimal] = None
trade_item_description: Optional[str] = None
product_variant_identifier: Optional[str] = None
item_type_code: Optional[str] = None
trade_item_data_owner: Optional[str] = None
butter_fat_reference: Optional[str] = None
transactional_item_data: List[TransactionalItemData] = field(default_factory=list)
colour: List[Colour] = field(default_factory=list)
size: Optional[Size] = None
trade_item_classification: Optional[TradeItemClassification] = None
avp_list: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class LeviedDutyFeeTax:
duty_fee_tax_amount: Optional[Decimal] = None
duty_fee_tax_basis_amount: Optional[Decimal] = None
duty_fee_tax_description: Optional[str] = None
duty_fee_tax_percentage: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentReference:
creation_date_time: Optional[datetime.datetime] = None
revision_number: Optional[int] = None
line_item_number: Optional[int] = None
entity_identification: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditionsLineItem:
discrepancy_tolerance_percentage: Optional[Decimal] = None
line_item_number: Optional[int] = None
packaging_type_code: Optional[str] = None
parent_line_item_number: Optional[int] = None
purchase_conditions_quantity: Optional[Quantity] = None
purchase_conditions_commitment_period: List[PurchaseConditionsCommitmentPeriod] = field(default_factory=list)
purchase_conditions_price_information: List[PurchaseConditionsPriceInformation] = field(default_factory=list)
allowance_charge: List[AllowanceCharge] = field(default_factory=list)
transactional_trade_item: Optional[TransactionalTradeItem] = None
levied_duty_fee_tax: Optional[LeviedDutyFeeTax] = None
avp_list: List[AvpList] = field(default_factory=list)
effective_period: Optional[DateTimeRange] = None
material_specification: Optional[DocumentReference] = None
purchase_conditions_quantity_range: Optional[QuantityRange] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Ecom_PartyIdentificationType:
gln: Optional[str] = None
name: Optional[str] = None
additional_party_identification: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CommunicationChannel:
communication_channel_code: Optional[str] = None
communication_channel_name: Optional[str] = None
communication_value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Contact:
contact_type_code: Optional[str] = None
person_name: Optional[str] = None
department_name: Optional[str] = None
job_title: Optional[str] = None
responsibility: Optional[str] = None
communication_channel: List[CommunicationChannel] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
street_address_one: Optional[str] = None
street_address_two: Optional[str] = None
street_address_three: Optional[str] = None
city: Optional[str] = None
postal_code: Optional[str] = None
province_code: Optional[str] = None
country_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FinancialRoutingNumber:
number: Optional[str] = None
number_type_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FinancialAccount:
number: Optional[str] = None
number_type_code: Optional[str] = None
name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FinancialInstitutionInformation:
financial_institution_branch_name: Optional[str] = None
financial_institution_name: Optional[str] = None
financial_routing_number: Optional[FinancialRoutingNumber] = None
financial_account: Optional[FinancialAccount] = None
swift_code: Optional[str] = None
exporters_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TransactionalParty(Ecom_PartyIdentificationType):
contact: List[Contact] = field(default_factory=list)
address: Optional[Address] = None
communication_channel: List[AvpList] = field(default_factory=list)
financial_institution_information: Optional[FinancialInstitutionInformation] = None
duty_fee_tax_registration: Optional[str] = None
entity_identification: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditionsLocationInformation:
purchase_conditions_line_item: List[PurchaseConditionsLineItem] = field(default_factory=list)
ship_from: Optional[TransactionalParty] = None
ship_to: Optional[TransactionalParty] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CurrencyExchangeRateInformation:
currency_conversion_from_code: Optional[str] = None
currency_conversion_to_code: Optional[str] = None
exchange_rate: Optional[int] = None
exchange_rate_date_time: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditions(BaseDocument):
purchase_conditions_currency_code: Optional[str] = None
purchase_conditions_location_information: List[PurchaseConditionsLocationInformation] = field(default_factory=list)
currency_exchange_rate_information: Optional[CurrencyExchangeRateInformation] = None
buyer: Optional[TransactionalParty] = None
payee: Optional[TransactionalParty] = None
payer: Optional[TransactionalParty] = None
purchase_conditions_identification: Optional[str] = None
remit_to: Optional[TransactionalParty] = None
seller: Optional[TransactionalParty] = None
tax_representative: Optional[TransactionalParty] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseConditionsMessage:
header: Optional[Header] = None
purchase_conditions: Optional[PurchaseConditions] = None
# @Api(Description="Purchase Conditions")
# @ApiResponse(Description="Add Purchase Condition request received", IsDefaultResponse=true, StatusCode=200)
# @ApiResponse(Description="Purchase Condition not accepted, Confirm Sender GLN", ResponseType=typeof(UnauthorizedAccessException), StatusCode=403)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AddPurchaseCondition:
"""
Purchase Conditions
"""
# @ApiMember(Description="Purchase Condition model containing all of the Purchase Condition data", ParameterType="model")
purchase_conditions: Optional[PurchaseConditionsMessage] = None
"""
Purchase Condition model containing all of the Purchase Condition data
"""
Python AddPurchaseCondition 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/purchaseCondition HTTP/1.1
Host: stf-api-uat.data-xchange.co.za
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
purchaseConditions:
{
header:
{
documentIdentification:
{
identifier: String,
type: String
},
sender:
{
identifier:
{
authority: String,
text: String
},
contactInformation:
[
{
}
]
},
receiver:
{
identifier:
{
authority: String,
text: String
},
contactInformation:
[
{
}
]
}
},
purchaseConditions:
{
purchaseConditionsCurrencyCode: String,
purchaseConditionsLocationInformation:
[
{
purchaseConditionsLineItem:
[
{
discrepancyTolerancePercentage: 0,
lineItemNumber: 0,
packagingTypeCode: String,
parentLineItemNumber: 0,
purchaseConditionsQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
},
purchaseConditionsCommitmentPeriod:
[
{
commitmentPeriodDuration:
{
timeMeasurementUnitCode: String,
value: 0
},
purchaseConditionsCommitmentTypeCode: String
}
],
purchaseConditionsPriceInformation:
[
{
itemPriceBaseQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
},
itemPriceExclusiveAllowancesCharges: 0,
quantityRange:
{
maximumQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
},
minimumQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
}
},
effectivePeriod:
{
beginDate: 0001-01-01,
beginTime: PT0S,
endDate: 0001-01-01,
endTime: PT0S
}
}
],
allowanceCharge:
[
{
allowanceChargeAmount: 0,
allowanceChargePercentage: 0,
allowanceChargeType: String,
allowanceOrChargeType: String,
amountPerUnit: 0,
baseAmount: 0,
baseNumberOfUnits: String,
bracketIdentifier: String,
effectiveDateType: 0001-01-01,
sequenceNumber: String,
settlementType: String,
specialServiceType: String,
allowanceChargeDescription: String
}
],
transactionalTradeItem:
{
gtin: String,
additionalTradeItemIdentification:
[
{
code: String,
value: String
}
],
tradeItemQuantity: 0,
tradeItemDescription: String,
productVariantIdentifier: String,
itemTypeCode: String,
tradeItemDataOwner: String,
butterFatReference: String,
transactionalItemData:
[
{
availableForSaleDate: 0001-01-01,
batchNumber: String,
bestBeforeDate: 0001-01-01,
countryOfOrigin: String,
itemExpirationDate: 0001-01-01,
lotNumber: String,
packagingDate: 0001-01-01,
productionDate: 0001-01-01,
productQualityIndication: String,
sellByDate: 0001-01-01,
serialNumber:
[
String
],
shelfLife: String,
tradeItemQuantity: 0,
itemInContactWithFoodProduct: False,
transactionalItemWeight:
[
{
measurementUnitCode: String,
measurementType: String,
measurementValue: String
}
],
transactionalItemVolume:
[
{
measurementUnitCode: String,
measurementType: String,
measurementValue: String
}
],
serialNumberRange:
[
{
maximumValue: String,
minimumValue: String
}
],
transactionalItemDimensions:
[
{
measurementUnitCode: String,
depth: String,
height: String,
width: String
}
],
transactionalItemLogisticUnitInformation:
{
numberOfLayers: 0,
numberOfUnitsPerLayer: 0,
numberOfUnitsPerPallet: 0,
packagingTerms: String,
packageTypeCode: String,
maximumStackingFactor: 0,
returnablePackageTransportCostPayment: String,
dimensionsOfLogisticUnit:
[
{
measurementUnitCode: String,
depth: String,
height: String,
width: String
}
]
},
transactionalItemDataCarrierAndIdentification:
{
gs1TransactionalItemIdentificationKey: String,
dataCarrier: String
},
tradeItemWaste:
[
{
wasteIdentification: String,
typeOfWaste:
[
{
code: String,
value: String
}
]
}
],
transactionalItemOrganicInformation:
{
isTradeItemOrganic: False,
organicCertification: String
},
avpList:
[
{
code: String,
value: String
}
]
}
],
colour:
[
{
colourCode: String,
colourDescription: String
}
],
size:
{
descriptiveSize: String,
sizeCode: String
},
tradeItemClassification:
{
gpcCategoryCode: String,
additionalTradeItemClassificationCode:
[
{
code: String,
value: String
}
],
gpcCategoryName: String,
gpcAttribute:
[
{
code: String,
value: String
}
]
},
avpList:
[
{
code: String,
value: String
}
]
},
leviedDutyFeeTax:
{
dutyFeeTaxAmount: 0,
dutyFeeTaxBasisAmount: 0,
dutyFeeTaxDescription: String,
dutyFeeTaxPercentage: 0
},
avpList:
[
{
code: String,
value: String
}
],
effectivePeriod:
{
beginDate: 0001-01-01,
beginTime: PT0S,
endDate: 0001-01-01,
endTime: PT0S
},
materialSpecification:
{
creationDateTime: 0001-01-01,
revisionNumber: 0,
lineItemNumber: 0,
entityIdentification: String
},
purchaseConditionsQuantityRange:
{
maximumQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
},
minimumQuantity:
{
value: 0,
measurementUnitCode: String,
codeListVersion: String
}
}
}
],
shipFrom:
{
contact:
[
{
contactTypeCode: String,
personName: String,
departmentName: String,
jobTitle: String,
responsibility: String,
communicationChannel:
[
{
communicationChannelCode: String,
communicationChannelName: String,
communicationValue: String
}
]
}
],
address:
{
streetAddressOne: String,
streetAddressTwo: String,
streetAddressThree: String,
city: String,
postalCode: String,
provinceCode: String,
countryCode: String
},
communicationChannel:
[
{
code: String,
value: String
}
],
financialInstitutionInformation:
{
financialInstitutionBranchName: String,
financialInstitutionName: String,
financialRoutingNumber:
{
number: String,
numberTypeCode: String
},
financialAccount:
{
number: String,
numberTypeCode: String,
name: String
},
swiftCode: String,
exportersCode: String
},
dutyFeeTaxRegistration: String,
entityIdentification: String,
gln: String,
name: String,
additionalPartyIdentification:
[
{
code: String,
value: String
}
]
},
shipTo:
{
contact:
[
{
contactTypeCode: String,
personName: String,
departmentName: String,
jobTitle: String,
responsibility: String,
communicationChannel:
[
{
communicationChannelCode: String,
communicationChannelName: String,
communicationValue: String
}
]
}
],
address:
{
streetAddressOne: String,
streetAddressTwo: String,
streetAddressThree: String,
city: String,
postalCode: String,
provinceCode: String,
countryCode: String
},
communicationChannel:
[
{
code: String,
value: String
}
],
financialInstitutionInformation:
{
financialInstitutionBranchName: String,
financialInstitutionName: String,
financialRoutingNumber:
{
number: String,
numberTypeCode: String
},
financialAccount:
{
number: String,
numberTypeCode: String,
name: String
},
swiftCode: String,
exportersCode: String
},
dutyFeeTaxRegistration: String,
entityIdentification: String,
gln: String,
name: String,
additionalPartyIdentification:
[
{
code: String,
value: String
}
]
}
}
],
currencyExchangeRateInformation:
{
currencyConversionFromCode: String,
currencyConversionToCode: String,
exchangeRate: 0,
exchangeRateDateTime: 0001-01-01
},
buyer:
{
contact:
[
{
contactTypeCode: String,
personName: String,
departmentName: String,
jobTitle: String,
responsibility: String,
communicationChannel:
[
{
communicationChannelCode: String,
communicationChannelName: String,
communicationValue: String
}
]
}
],
address:
{
streetAddressOne: String,
streetAddressTwo: String,
streetAddressThree: String,
city: String,
postalCode: String,
provinceCode: String,
countryCode: String
},
communicationChannel:
[
{
code: String,
value: String
}
],
financialInstitutionInformation:
{
financialInstitutionBranchName: String,
financialInstitutionName: String,
financialRoutingNumber:
{
number: String,
numberTypeCode: String
},
financialAccount:
{
number: String,
numberTypeCode: String,
name: String
},
swiftCode: String,
exportersCode: String
},
dutyFeeTaxRegistration: String,
entityIdentification: String,
gln: String,
name: String,
additionalPartyIdentification:
[
{
code: String,
value: String
}
]
},
payee:
{
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
}
]
},
payer:
{
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
}
]
},
purchaseConditionsIdentification: String,
remitTo:
{
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
}
]
},
seller:
{
contact:
[
{
contactTypeCode: String,
personName: String,
departmentName: String,
jobTitle: String,
responsibility: String,
communicationChannel:
[
{
communicationChannelCode: String,
communicationChannelName: String,
communicationValue: String
}
]
}
],
address:
{
streetAddressOne: String,
streetAddressTwo: String,
streetAddressThree: String,
city: String,
postalCode: String,
provinceCode: String,
countryCode: String
},
communicationChannel:
[
{
code: String,
value: String
}
],
financialInstitutionInformation:
{
financialInstitutionBranchName: String,
financialInstitutionName: String,
financialRoutingNumber:
{
number: String,
numberTypeCode: String
},
financialAccount:
{
number: String,
numberTypeCode: String,
name: String
},
swiftCode: String,
exportersCode: String
},
dutyFeeTaxRegistration: String,
entityIdentification: String,
gln: String,
name: String,
additionalPartyIdentification:
[
{
code: String,
value: String
}
]
},
taxRepresentative:
{
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
}
]
},
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
{
}