| GET | /api/orderResponse | Get un-acknowledged OrderResponse, oldest first |
|---|
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')
# @Api(Description="Order Response")
# @ApiResponse(Description="OrderResponse message", IsDefaultResponse=true, StatusCode=200)
# @ApiResponse(Description="No Content", ResponseType=typeof(IReturnVoid), StatusCode=204)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetOrderResponse:
"""
Order Response
"""
pass
@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 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 BillOfLading:
creation_date: datetime.datetime = datetime.datetime(1, 1, 1)
revision_number: int = 0
entity_identification: Optional[str] = None
tag_numbers: List[str] = field(default_factory=list)
total_bags: int = 0
@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 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 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 ClaimsNotificationItemDiscrepancy:
price: Decimal = decimal.Decimal(0)
quantity: Optional[Quantity] = None
transactional_trade_item: Optional[TransactionalTradeItem] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClaimsNotificationDiscrepancyInformation:
claim_amount: Decimal = decimal.Decimal(0)
claim_reason_code: Optional[str] = None
discrepancy_description: Optional[str] = None
actual_received: Optional[ClaimsNotificationItemDiscrepancy] = None
expected_to_receive: Optional[ClaimsNotificationItemDiscrepancy] = None
avp_list: List[AvpList] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClaimTotals:
base_amount: Optional[Decimal] = None
total_tax_amount: Optional[Decimal] = None
total_claim_amount: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClaimExtension:
claim_totals: Optional[ClaimTotals] = None
ship_from: Optional[TransactionalParty] = None
ship_to: Optional[TransactionalParty] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClaimNotification(BaseDocument):
claims_notification_type_code: Optional[str] = None
is_manual_process_needed_for_claims_resolution: bool = False
is_supplemental_message_being_sent: bool = False
supplemental_message_description: Optional[str] = None
claims_notification_identification: Optional[str] = None
buyer: Optional[TransactionalParty] = None
remit_to: Optional[TransactionalParty] = None
seller: Optional[TransactionalParty] = None
bill_of_lading: Optional[BillOfLading] = None
claims_notification: Optional[DocumentReference] = None
dispatch_advice: Optional[DocumentReference] = None
purchase_order: Optional[DocumentReference] = None
invoice: Optional[DocumentReference] = None
claims_notification_discrepancy_information: List[ClaimsNotificationDiscrepancyInformation] = field(default_factory=list)
extension: Optional[ClaimExtension] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClaimMessage:
header: Optional[Header] = None
claim_notification: Optional[ClaimNotification] = None
T = TypeVar('T')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ResultItem(Generic[T], IDocument):
token: Optional[str] = None
item: Optional[ClaimMessage] = None
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.
GET /api/orderResponse HTTP/1.1 Host: stf-api-uat.data-xchange.co.za Accept: text/jsv