POST | /orders |
---|
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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportResponse:
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportAddress:
first_name: Optional[str] = None
last_name: Optional[str] = None
address_line1: Optional[str] = None
address_line2: Optional[str] = None
address_line3: Optional[str] = None
address_line4: Optional[str] = None
address_line5: Optional[str] = None
city: Optional[str] = None
state_province_code: Optional[str] = None
postal_code: Optional[str] = None
county: Optional[str] = None
country_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportSkuComponent:
parent_order_line_number: Optional[int] = None
order_line_number: Optional[int] = None
sku_code: Optional[str] = None
quantity: Optional[int] = None
price_paid_per_unit: Optional[Decimal] = None
retail_price_per_unit: Optional[Decimal] = None
net_price: Optional[Decimal] = None
tax_amount: Optional[Decimal] = None
tax_percentage: Optional[Decimal] = None
version_number: Optional[str] = None
version_year: Optional[str] = None
vehicle_id: Optional[str] = None
offer_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportSku:
sku_code: Optional[str] = None
order_line_number: Optional[int] = None
quantity: Optional[int] = None
is_auto_ship: Optional[bool] = None
order_sku_components: Optional[List[NAVOrderImportSkuComponent]] = None
price_paid_per_unit: Optional[Decimal] = None
retail_price_per_unit: Optional[Decimal] = None
net_price: Optional[Decimal] = None
net_sales: Optional[Decimal] = None
submitted_net_price: Optional[Decimal] = None
submitted_net_sales: Optional[Decimal] = None
manual_discount_amount: Optional[Decimal] = None
item_discount_percent: Optional[Decimal] = None
tax_amount: Optional[Decimal] = None
tax_percentage: Optional[Decimal] = None
commissionable_value_earned: Optional[Decimal] = None
qualifying_value_earned: Optional[Decimal] = None
qualifying_value_earned_submitted: Optional[Decimal] = None
override_c_v_earned: Optional[Decimal] = None
override_c_v_earned_submitted: Optional[Decimal] = None
override_q_v_earned: Optional[Decimal] = None
group_c_v_earned: Optional[Decimal] = None
group_q_v_earned: Optional[Decimal] = None
upline_c_v_earned: Optional[Decimal] = None
upline_q_v_earned: Optional[Decimal] = None
version_number: Optional[str] = None
version_year: Optional[str] = None
coupon_code: Optional[str] = None
substitute_indicator: Optional[str] = None
fulfillment_indicator: Optional[str] = None
substitute_sku_code: Optional[str] = None
vehicle_id: Optional[str] = None
offer_id: Optional[str] = None
parent_s_k_u_code: Optional[str] = None
buying_discount: Optional[Decimal] = None
original_order_qty: Optional[Decimal] = None
closed_quantity: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportPayment:
payment_type: Optional[str] = None
payment_identifier1: Optional[str] = None
payment_identifier2: Optional[str] = None
payment_identifier3: Optional[str] = None
payment_identifier4: Optional[str] = None
payment_identifier5: Optional[str] = None
payment_token: Optional[str] = None
authorization_time: Optional[datetime.datetime] = None
authorization_code: Optional[str] = None
transaction_id: Optional[str] = None
amount_charged: Optional[Decimal] = None
billing_address: Optional[NAVOrderImportAddress] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImportFee:
fee_system_keyword: Optional[str] = None
fee_amount: Optional[Decimal] = None
tax_amount: Optional[Decimal] = None
fee_total: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderImport(IPost):
external_order_id: Optional[str] = None
order_type_id: Optional[str] = None
created_date_u_t_c: Optional[datetime.datetime] = None
submitted_date_u_t_c: Optional[datetime.datetime] = None
bee_number_customer: Optional[Decimal] = None
bee_number_payee: Optional[Decimal] = None
order_source: Optional[str] = None
shipping_method: Optional[str] = None
gift_message: Optional[str] = None
gift_message_from: Optional[str] = None
gift_message_to: Optional[str] = None
shipping_comment: Optional[str] = None
shipping_address: Optional[NAVOrderImportAddress] = None
order_skus: Optional[List[NAVOrderImportSku]] = None
order_payments: Optional[List[NAVOrderImportPayment]] = None
order_fees: Optional[List[NAVOrderImportFee]] = None
sub_total: Optional[Decimal] = None
order_total: Optional[Decimal] = None
shipping_cost: Optional[Decimal] = None
tax: Optional[Decimal] = None
shipping_tax: Optional[Decimal] = None
external_discount_reason: Optional[str] = None
pc_level: Optional[Decimal] = None
agent_id: Optional[str] = None
number_of_customers_served: Optional[Decimal] = None
version_number: Optional[str] = None
version_year: Optional[str] = None
additional_code: Optional[str] = None
discount_percent: Optional[str] = None
tax_rate_percent: Optional[str] = None
order_within_time_period: Optional[Decimal] = None
tax_area_code: Optional[str] = None
geocode: Optional[str] = None
fundraiser_id: Optional[str] = None
warehouse_code: Optional[str] = None
original_reship_external_order_id: Optional[str] = None
shipped_version_number: Optional[str] = None
shipped_version_year: Optional[str] = None
master_order_id: Optional[str] = None
coupon_value: Optional[str] = None
sales_center_id: Optional[str] = None
premier_level: Optional[str] = None
pc_level_current_cycle: Optional[Decimal] = None
premier_level_current_cycle: Optional[str] = None
email_address: Optional[str] = None
phone_number: Optional[str] = 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.
POST /orders HTTP/1.1
Host: extensions.avon.ca
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
externalOrderId: String,
orderTypeId: String,
createdDateUTC: 0001-01-01T00:00:00,
submittedDateUTC: 0001-01-01T00:00:00,
beeNumberCustomer: 0,
beeNumberPayee: 0,
orderSource: String,
shippingMethod: String,
giftMessage: String,
giftMessageFrom: String,
giftMessageTo: String,
shippingComment: String,
shippingAddress:
{
firstName: String,
lastName: String,
addressLine1: String,
addressLine2: String,
addressLine3: String,
addressLine4: String,
addressLine5: String,
city: String,
stateProvinceCode: String,
postalCode: String,
county: String,
countryCode: String
},
orderSkus:
[
{
skuCode: String,
orderLineNumber: 0,
quantity: 0,
isAutoShip: False,
orderSkuComponents:
[
{
parentOrderLineNumber: 0,
orderLineNumber: 0,
skuCode: String,
quantity: 0,
pricePaidPerUnit: 0,
retailPricePerUnit: 0,
netPrice: 0,
taxAmount: 0,
taxPercentage: 0,
versionNumber: String,
versionYear: String,
vehicleId: String,
offerId: String
}
],
pricePaidPerUnit: 0,
retailPricePerUnit: 0,
netPrice: 0,
netSales: 0,
submittedNetPrice: 0,
submittedNetSales: 0,
manualDiscountAmount: 0,
itemDiscountPercent: 0,
taxAmount: 0,
taxPercentage: 0,
commissionableValueEarned: 0,
qualifyingValueEarned: 0,
qualifyingValueEarnedSubmitted: 0,
overrideCVEarned: 0,
overrideCVEarnedSubmitted: 0,
overrideQVEarned: 0,
groupCVEarned: 0,
groupQVEarned: 0,
uplineCVEarned: 0,
uplineQVEarned: 0,
versionNumber: String,
versionYear: String,
couponCode: String,
substituteIndicator: String,
fulfillmentIndicator: String,
substituteSkuCode: String,
vehicleId: String,
offerId: String,
parentSKUCode: String,
buyingDiscount: 0,
originalOrderQty: 0,
closedQuantity: 0
}
],
orderPayments:
[
{
paymentType: String,
paymentIdentifier1: String,
paymentIdentifier2: String,
paymentIdentifier3: String,
paymentIdentifier4: String,
paymentIdentifier5: String,
paymentToken: String,
authorizationTime: 0001-01-01T00:00:00,
authorizationCode: String,
transactionId: String,
amountCharged: 0,
billingAddress:
{
firstName: String,
lastName: String,
addressLine1: String,
addressLine2: String,
addressLine3: String,
addressLine4: String,
addressLine5: String,
city: String,
stateProvinceCode: String,
postalCode: String,
county: String,
countryCode: String
}
}
],
orderFees:
[
{
feeSystemKeyword: String,
feeAmount: 0,
taxAmount: 0,
feeTotal: 0
}
],
subTotal: 0,
orderTotal: 0,
shippingCost: 0,
tax: 0,
shippingTax: 0,
externalDiscountReason: String,
pcLevel: 0,
agentId: String,
numberOfCustomersServed: 0,
versionNumber: String,
versionYear: String,
additionalCode: String,
discountPercent: String,
taxRatePercent: String,
orderWithinTimePeriod: 0,
taxAreaCode: String,
geocode: String,
fundraiserId: String,
warehouseCode: String,
originalReshipExternalOrderId: String,
shippedVersionNumber: String,
shippedVersionYear: String,
masterOrderId: String,
couponValue: String,
salesCenterId: String,
premierLevel: String,
pcLevelCurrentCycle: 0,
premierLevelCurrentCycle: String,
emailAddress: String,
phoneNumber: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { responseStatus: { errorCode: String, message: String, stackTrace: String, errors: [ { errorCode: String, fieldName: String, message: String, meta: { String: String } } ], meta: { String: String } } }