Mercedes.Agency.Orchestration.API

<back to all web services

CreateOneAdminBackOrderRequest

BackOrder
Requires Authentication
The following routes are available for this service:
POST/v1/oneAdmin/backorderCreates a back order with vehicle criteriaCreate Back Order (called from One Admin) It calls the v1/backorder in the Agency API, where the order is created The details of the back order are sent to OneAgent Validation checks are performed on the input request.
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


class Source(IntEnum):
    ONLINE_SHOWROOM = 1
    ONE_ADMIN = 2


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
    property: Optional[str] = None
    street: Optional[str] = None
    town: Optional[str] = None
    county: Optional[str] = None
    locality: Optional[str] = None
    postcode: Optional[str] = None


class CustomerMode(IntEnum):
    PRIVATE = 1
    BUSINESS = 2
    MOTABILITY = 3


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforceCustomer(ICustomer):
    customer_id: Optional[str] = None
    is_ciam: bool = False
    company_name: Optional[str] = None
    title: Optional[str] = None
    firstname: Optional[str] = None
    surname: Optional[str] = None
    email_address: Optional[str] = None
    telephone: Optional[str] = None
    address: Optional[Address] = None
    mode: Optional[CustomerMode] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Preferences:
    optin_email: bool = False
    optin_post: bool = False
    optin_s_m_s: bool = False
    optin_telephone: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Customer(SalesforceCustomer):
    profile_id: Optional[str] = None
    preferences: Optional[Preferences] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JsonVersion(IJsonVersion):
    version: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CriteriaModel:
    description: Optional[str] = None
    id: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CriteriaDifference:
    model: bool = False
    transmission: bool = False
    fuel: bool = False
    upholstery: bool = False
    equipment: bool = False
    line: bool = False
    body_style: bool = False
    colour_group: bool = False
    packages: bool = False
    engine: bool = False
    additional_information: bool = False
    url_referrer: bool = False
    preferred_delivery_date: bool = False
    is_smart: bool = False
    is_specialised: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CriteriaBase(JsonVersion):
    transmission: List[str] = field(default_factory=list)
    fuel: List[str] = field(default_factory=list)
    upholstery: List[str] = field(default_factory=list)
    equipment: List[str] = field(default_factory=list)
    line: List[str] = field(default_factory=list)
    body_style: List[str] = field(default_factory=list)
    colour_group: List[str] = field(default_factory=list)
    packages: List[str] = field(default_factory=list)
    model: List[CriteriaModel] = field(default_factory=list)
    url_referrer: Optional[str] = None
    preferred_delivery_date: Optional[str] = None
    # @ApiMember(ExcludeInSchema=true)
    is_new_model: bool = False

    # @ApiMember(ExcludeInSchema=true)
    is_smart: bool = False

    # @ApiMember(ExcludeInSchema=true)
    is_specialised: bool = False

    # @ApiMember(ExcludeInSchema=true)
    criteria_difference: Optional[CriteriaDifference] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Criteria(CriteriaBase):
    engine: List[str] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class V2EngineCriteria:
    badge: Optional[str] = None
    brand: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class V2Criteria(CriteriaBase):
    engine: List[V2EngineCriteria] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OutrightPurchase:
    is_outright_purchase: bool = False
    reference: Optional[str] = None
    discount_rate: Decimal = decimal.Decimal(0)
    bm7_n_s_t: Optional[str] = None
    is_back_order: bool = False
    is_c_o_p_converter: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateBackOrderBase:
    gssn_id: Optional[str] = None
    additional_information: Optional[str] = None
    config_code: Optional[str] = None
    source: Optional[Source] = None
    tag_url: Optional[str] = None
    customer: Optional[Customer] = None
    customer_criteria: Optional[Criteria] = None
    agent_criteria: Optional[V2Criteria] = None
    outright_purchase: Optional[OutrightPurchase] = None
    gas_id: Optional[str] = None
    motability: bool = False
    motability_pricing_id: Optional[int] = None
    assistance_provider_id: Optional[int] = None
    assistance_detail: Optional[str] = None
    configurator_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateBackOrderResponse:
    guid: Optional[str] = None
    reference: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateOneAdminBackOrderRequest(CreateBackOrderBase, IPost):
    pass

Python CreateOneAdminBackOrderRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/oneAdmin/backorder HTTP/1.1 
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"GssnId":"String","AdditionalInformation":"String","ConfigCode":"String","Source":"OnlineShowroom","TagUrl":"String","Customer":{"ProfileId":"00000000000000000000000000000000","Preferences":{"OptinEmail":false,"OptinPost":false,"OptinSMS":false,"OptinTelephone":false},"CustomerId":"String","IsCiam":false,"CompanyName":"String","Title":"String","Firstname":"String","Surname":"String","EmailAddress":"String","Telephone":"String","Address":{"Property":"String","Street":"String","Town":"String","County":"String","Locality":"String","Postcode":"String"},"Mode":"Private"},"CustomerCriteria":{"Engine":["String"],"Transmission":["String"],"Fuel":["String"],"Upholstery":["String"],"Equipment":["String"],"Line":["String"],"BodyStyle":["String"],"ColourGroup":["String"],"Packages":["String"],"Model":[{"Description":"String","Id":0}],"UrlReferrer":"String","PreferredDeliveryDate":"String","IsNewModel":false,"IsSmart":false,"IsSpecialised":false,"CriteriaDifference":{"Model":false,"Transmission":false,"Fuel":false,"Upholstery":false,"Equipment":false,"Line":false,"BodyStyle":false,"ColourGroup":false,"Packages":false,"Engine":false,"AdditionalInformation":false,"UrlReferrer":false,"PreferredDeliveryDate":false,"IsSmart":false,"IsSpecialised":false},"Version":0},"AgentCriteria":{"Engine":[{"Badge":"String","Brand":"String"}],"Transmission":["String"],"Fuel":["String"],"Upholstery":["String"],"Equipment":["String"],"Line":["String"],"BodyStyle":["String"],"ColourGroup":["String"],"Packages":["String"],"Model":[{"Description":"String","Id":0}],"UrlReferrer":"String","PreferredDeliveryDate":"String","IsNewModel":false,"IsSmart":false,"IsSpecialised":false,"CriteriaDifference":{"Model":false,"Transmission":false,"Fuel":false,"Upholstery":false,"Equipment":false,"Line":false,"BodyStyle":false,"ColourGroup":false,"Packages":false,"Engine":false,"AdditionalInformation":false,"UrlReferrer":false,"PreferredDeliveryDate":false,"IsSmart":false,"IsSpecialised":false},"Version":0},"OutrightPurchase":{"IsOutrightPurchase":false,"Reference":"String","DiscountRate":0,"Bm7NST":"String","IsBackOrder":false,"IsCOPConverter":false},"GasId":"String","Motability":false,"MotabilityPricingId":0,"AssistanceProviderId":0,"AssistanceDetail":"String","ConfiguratorCode":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Guid":"String","Reference":"String"}