| POST | /purchase/basket | Create Basket |
|---|
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 BasketStrapItem:
# @ApiMember(Description="Article reference")
speaking_article_code: Optional[str] = None
"""
Article reference
"""
# @ApiMember(Description="Buckle type Description")
buckle_type_description: Optional[str] = None
"""
Buckle type Description
"""
# @ApiMember(Description="Buckle type")
buckle_type_code: Optional[str] = None
"""
Buckle type
"""
# @ApiMember(Description="watch 6 Length")
watch6_length: Optional[int] = None
"""
watch 6 Length
"""
# @ApiMember(Description="watch 12 Length")
watch12_length: Optional[int] = None
"""
watch 12 Length
"""
# @ApiMember(Description="Article Material Code")
material_code: Optional[str] = None
"""
Article Material Code
"""
# @ApiMember(Description="Article Material Description")
material_description: Optional[str] = None
"""
Article Material Description
"""
# @ApiMember(Description="Article Color Code")
color_code: Optional[str] = None
"""
Article Color Code
"""
# @ApiMember(Description="Article Color Description")
color_description: Optional[str] = None
"""
Article Color Description
"""
# @ApiMember(Description="Buckle Witdh")
buckle_width: Optional[str] = None
"""
Buckle Witdh
"""
# @ApiMember(Description="Article Lining Code")
lining_code: Optional[str] = None
"""
Article Lining Code
"""
# @ApiMember(Description="Article Lining Description")
lining_description: Optional[str] = None
"""
Article Lining Description
"""
# @ApiMember(Description="Article Stitching Code")
stitching_code: Optional[str] = None
"""
Article Stitching Code
"""
# @ApiMember(Description="Article Stitching Description")
stitching_description: Optional[str] = None
"""
Article Stitching Description
"""
# @ApiMember(Description="Article Edge Code")
edge_code: Optional[str] = None
"""
Article Edge Code
"""
# @ApiMember(Description="Article Edge Description")
edge_description: Optional[str] = None
"""
Article Edge Description
"""
# @ApiMember(Description="Article Padding Code")
padding_code: Optional[str] = None
"""
Article Padding Code
"""
# @ApiMember(Description="Article Padding Description")
padding_description: Optional[str] = None
"""
Article Padding Description
"""
# @ApiMember(Description="Article Speciality Code")
specialty_code: Optional[str] = None
"""
Article Speciality Code
"""
# @ApiMember(Description="Article Speciality Description")
specialty_description: Optional[str] = None
"""
Article Speciality Description
"""
# @ApiMember(Description="Nuancier Code")
nuancier_code: Optional[str] = None
"""
Nuancier Code
"""
# @ApiMember(Description="Strap Vip Order")
is_strap_vip_order: Optional[bool] = None
"""
Strap Vip Order
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BasketItemResponse:
# @ApiMember(Description="Line number of the article")
line: int = 0
"""
Line number of the article
"""
# @ApiMember(Description="Reference ID of the article/product")
article_code: Optional[str] = None
"""
Reference ID of the article/product
"""
# @ApiMember(Description="Old reference ID of the article/product")
old_article_code: Optional[str] = None
"""
Old reference ID of the article/product
"""
# @ApiMember(Description="Quantity of the article")
quantity: int = 0
"""
Quantity of the article
"""
# @ApiMember(Description="Delivery date of the article")
delivery_date: datetime.datetime = datetime.datetime(1, 1, 1)
"""
Delivery date of the article
"""
# @ApiMember(Description="Strap definition")
strap: Optional[BasketStrapItem] = None
"""
Strap definition
"""
# @ApiMember(Description="Errors for the article")
errors: Optional[List[str]] = None
"""
Errors for the article
"""
# @ApiMember(Description="Warnings for the article")
warnings: Optional[List[str]] = None
"""
Warnings for the article
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateBasketResponse:
# @ApiMember(Description="ID of the newly created Purchase Order / Basket", IsRequired=true)
purchase_order_id: int = 0
"""
ID of the newly created Purchase Order / Basket
"""
# @ApiMember(Description="Validation results of each basket item")
validation_results: Optional[List[BasketItemResponse]] = None
"""
Validation results of each basket item
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BasketItem:
# @ApiMember(Description="Reference ID of the article/product", IsRequired=true)
article_code: Optional[str] = None
"""
Reference ID of the article/product
"""
# @ApiMember(Description="Desired quantity of the article")
quantity: int = 0
"""
Desired quantity of the article
"""
# @ApiMember(Description="Strap definition")
strap: Optional[BasketStrapItem] = None
"""
Strap definition
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateBasket:
# @ApiMember(Description="Brand Trigram of the intended order", IsRequired=true)
brand: Optional[str] = None
"""
Brand Trigram of the intended order
"""
# @ApiMember(Description="Pos Code for the intended order e.g. ES03-10415-01", IsRequired=true)
pos_code: Optional[str] = None
"""
Pos Code for the intended order e.g. ES03-10415-01
"""
# @ApiMember(Description="Customer Reference", IsRequired=true)
customer_reference: Optional[str] = None
"""
Customer Reference
"""
# @ApiMember(Description="Additional Notes regarding the order", IsRequired=true)
notes: Optional[str] = None
"""
Additional Notes regarding the order
"""
# @ApiMember(Description="List of Articles to be added in the basket")
order_items: Optional[List[BasketItem]] = None
"""
List of Articles to be added in the basket
"""
# @ApiMember(Description="Brand Context ID")
booster_context_id: Optional[str] = None
"""
Brand Context ID
"""
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /purchase/basket HTTP/1.1
Host: dev-api-booster.richemont.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CreateBasket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Richemont.Booster2.PublicApi.Purchase.ServiceModel">
<boosterContextId>String</boosterContextId>
<brand>String</brand>
<customerReference>String</customerReference>
<notes>String</notes>
<orderItems>
<BasketItem>
<articleCode>String</articleCode>
<quantity>0</quantity>
<strap xmlns:d4p1="http://schemas.datacontract.org/2004/07/Richemont.Booster2.PublicApi.Purchase.ServiceModel.SharedModels">
<d4p1:buckleTypeCode>String</d4p1:buckleTypeCode>
<d4p1:buckleTypeDescription>String</d4p1:buckleTypeDescription>
<d4p1:buckleWidth>String</d4p1:buckleWidth>
<d4p1:colorCode>String</d4p1:colorCode>
<d4p1:colorDescription>String</d4p1:colorDescription>
<d4p1:edgeCode>String</d4p1:edgeCode>
<d4p1:edgeDescription>String</d4p1:edgeDescription>
<d4p1:isStrapVipOrder>false</d4p1:isStrapVipOrder>
<d4p1:liningCode>String</d4p1:liningCode>
<d4p1:liningDescription>String</d4p1:liningDescription>
<d4p1:materialCode>String</d4p1:materialCode>
<d4p1:materialDescription>String</d4p1:materialDescription>
<d4p1:nuancierCode>String</d4p1:nuancierCode>
<d4p1:paddingCode>String</d4p1:paddingCode>
<d4p1:paddingDescription>String</d4p1:paddingDescription>
<d4p1:speakingArticleCode>String</d4p1:speakingArticleCode>
<d4p1:specialtyCode>String</d4p1:specialtyCode>
<d4p1:specialtyDescription>String</d4p1:specialtyDescription>
<d4p1:stitchingCode>String</d4p1:stitchingCode>
<d4p1:stitchingDescription>String</d4p1:stitchingDescription>
<d4p1:watch12Length>0</d4p1:watch12Length>
<d4p1:watch6Length>0</d4p1:watch6Length>
</strap>
</BasketItem>
</orderItems>
<posCode>String</posCode>
</CreateBasket>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<CreateBasketResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Richemont.Booster2.PublicApi.Purchase.ServiceModel">
<purchaseOrderId>0</purchaseOrderId>
<validationResults>
<BasketItemResponse>
<articleCode>String</articleCode>
<deliveryDate>0001-01-01T00:00:00</deliveryDate>
<errors xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string>String</d4p1:string>
</errors>
<line>0</line>
<oldArticleCode>String</oldArticleCode>
<quantity>0</quantity>
<strap xmlns:d4p1="http://schemas.datacontract.org/2004/07/Richemont.Booster2.PublicApi.Purchase.ServiceModel.SharedModels">
<d4p1:buckleTypeCode>String</d4p1:buckleTypeCode>
<d4p1:buckleTypeDescription>String</d4p1:buckleTypeDescription>
<d4p1:buckleWidth>String</d4p1:buckleWidth>
<d4p1:colorCode>String</d4p1:colorCode>
<d4p1:colorDescription>String</d4p1:colorDescription>
<d4p1:edgeCode>String</d4p1:edgeCode>
<d4p1:edgeDescription>String</d4p1:edgeDescription>
<d4p1:isStrapVipOrder>false</d4p1:isStrapVipOrder>
<d4p1:liningCode>String</d4p1:liningCode>
<d4p1:liningDescription>String</d4p1:liningDescription>
<d4p1:materialCode>String</d4p1:materialCode>
<d4p1:materialDescription>String</d4p1:materialDescription>
<d4p1:nuancierCode>String</d4p1:nuancierCode>
<d4p1:paddingCode>String</d4p1:paddingCode>
<d4p1:paddingDescription>String</d4p1:paddingDescription>
<d4p1:speakingArticleCode>String</d4p1:speakingArticleCode>
<d4p1:specialtyCode>String</d4p1:specialtyCode>
<d4p1:specialtyDescription>String</d4p1:specialtyDescription>
<d4p1:stitchingCode>String</d4p1:stitchingCode>
<d4p1:stitchingDescription>String</d4p1:stitchingDescription>
<d4p1:watch12Length>0</d4p1:watch12Length>
<d4p1:watch6Length>0</d4p1:watch6Length>
</strap>
<warnings xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string>String</d4p1:string>
</warnings>
</BasketItemResponse>
</validationResults>
</CreateBasketResponse>