Mercedes.Agency.Orchestration.API

<back to all web services

MotabilityInflightPricingRequest

InFlightPricing
Requires Authentication
The following routes are available for this service:
POST/v1/motabilityinflightpricingMotability Pricing Inflight Pricing for supplied Order GuidsThis endpoint is used for fetch motability orders only for inflight pricing. The original request is being made on Agency API and a list of orders from database is passed to agency orch. This is to fetch addditional information such as the vehicles details e.g Prices and Offers data
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 OrderOffer:
    id: int = 0
    offer_type_id: int = 0
    offer_type_description: Optional[str] = None
    offer_id: Optional[str] = None
    offer_description: Optional[str] = None
    net: Decimal = decimal.Decimal(0)
    vat: Decimal = decimal.Decimal(0)
    gross: Decimal = decimal.Decimal(0)
    government_grant: bool = False
    promo_code: Optional[str] = None
    expiry: Optional[str] = None
    affects_price: bool = False
    product: Optional[int] = None
    parent_id: Optional[str] = None
    creation_date: datetime.datetime = datetime.datetime(1, 1, 1)
    product_type_description: Optional[str] = None
    product_type_negative_description: Optional[str] = None
    certificate_required: Optional[bool] = None


@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 MotabilityAdvancePayment:
    advance_payment_rental_type: Optional[str] = None
    advance_payment_value_gross: Decimal = decimal.Decimal(0)
    advance_payment_value_v_a_t: Decimal = decimal.Decimal(0)
    advance_payment_value_net: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InflightPricingOrder:
    guid: Optional[str] = None
    vin: Optional[str] = None
    advance_rental_payment_type: int = 0
    offer: List[OrderOffer] = field(default_factory=list)
    outright_purchase: Optional[OutrightPurchase] = None
    motability_advance_payment: Optional[MotabilityAdvancePayment] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InflightPricingOrderRequest:
    invalid_format_guids: List[str] = field(default_factory=list)
    order_not_found_guids: List[str] = field(default_factory=list)
    inflight_pricing_orders: List[InflightPricingOrder] = field(default_factory=list)
    is_motability: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MotabilityInflightPricingOrderRequest(InflightPricingOrderRequest):
    order_vehicle_with_no_motability_discount: List[str] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforcePrice:
    id: Optional[str] = None
    description: Optional[str] = None
    net: Decimal = decimal.Decimal(0)
    vat: Decimal = decimal.Decimal(0)
    gross: Decimal = decimal.Decimal(0)
    product: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforceTotalPrice:
    net: Decimal = decimal.Decimal(0)
    vat: Decimal = decimal.Decimal(0)
    gross: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforceOffer:
    id: Optional[str] = None
    description: Optional[str] = None
    net: Decimal = decimal.Decimal(0)
    vat: Decimal = decimal.Decimal(0)
    gross: Decimal = decimal.Decimal(0)
    expiry: Optional[str] = None
    product: Optional[str] = None
    requires_certification: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforceOffers:
    personalised: List[SalesforceOffer] = field(default_factory=list)
    non_discretionary: List[SalesforceOffer] = field(default_factory=list)
    non_campaign: List[SalesforceOffer] = field(default_factory=list)
    outright_purchase_discount: List[SalesforceOffer] = field(default_factory=list)
    motability_discount: List[SalesforceOffer] = field(default_factory=list)
    integrated_products: List[SalesforceOffer] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesforceOutrightPurchase:
    is_outright_purchase: bool = False
    reference: Optional[str] = None
    discount_percentage: Decimal = decimal.Decimal(0)
    model_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleInflightPrice:
    guid: Optional[str] = None
    status: Optional[str] = None
    success: bool = False
    prices: List[SalesforcePrice] = field(default_factory=list)
    total_o_t_r_fees: Optional[SalesforceTotalPrice] = None
    total_o_t_r_price: Optional[SalesforceTotalPrice] = None
    total_actual_price: Optional[SalesforceTotalPrice] = None
    offers: Optional[SalesforceOffers] = None
    outright_purchase: Optional[SalesforceOutrightPurchase] = None
    motability: Optional[MotabilityAdvancePayment] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InflightPricingResponse:
    vehicles_inflight_prices: List[VehicleInflightPrice] = field(default_factory=list)


# @ApiResponse(Description="In Flight pricing generated", StatusCode=200)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MotabilityInflightPricingRequest(MotabilityInflightPricingOrderRequest, IPost):
    pass

Python MotabilityInflightPricingRequest DTOs

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

HTTP + OTHER

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

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

{"OrderVehicleWithNoMotabilityDiscount":["00000000000000000000000000000000"],"InvalidFormatGuids":["String"],"OrderNotFoundGuids":["00000000000000000000000000000000"],"InflightPricingOrders":[{"Guid":"00000000000000000000000000000000","Vin":"String","AdvanceRentalPaymentType":0,"Offer":[{"Id":0,"OfferTypeId":0,"OfferTypeDescription":"String","OfferId":"String","OfferDescription":"String","Net":0,"VAT":0,"Gross":0,"GovernmentGrant":false,"PromoCode":"String","Expiry":"String","AffectsPrice":false,"Product":0,"ParentId":"String","CreationDate":"\/Date(-62135596800000-0000)\/","ProductTypeDescription":"String","ProductTypeNegativeDescription":"String","CertificateRequired":false}],"OutrightPurchase":{"IsOutrightPurchase":false,"Reference":"String","DiscountRate":0,"Bm7NST":"String","IsBackOrder":false,"IsCOPConverter":false},"MotabilityAdvancePayment":{"AdvancePaymentRentalType":"String","AdvancePaymentValueGross":0,"AdvancePaymentValueVAT":0,"AdvancePaymentValueNet":0}}],"IsMotability":false}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"VehiclesInflightPrices":[{"Guid":"String","Status":"String","Success":false,"Prices":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Product":"String"}],"TotalOTRFees":{"Net":0,"VAT":0,"Gross":0},"TotalOTRPrice":{"Net":0,"VAT":0,"Gross":0},"TotalActualPrice":{"Net":0,"VAT":0,"Gross":0},"Offers":{"Personalised":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}],"NonDiscretionary":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}],"NonCampaign":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}],"OutrightPurchaseDiscount":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}],"MotabilityDiscount":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}],"IntegratedProducts":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Expiry":"String","Product":"String","RequiresCertification":false}]},"OutrightPurchase":{"IsOutrightPurchase":false,"Reference":"String","DiscountPercentage":0,"ModelId":"String"},"Motability":{"AdvancePaymentRentalType":"String","AdvancePaymentValueGross":0,"AdvancePaymentValueVAT":0,"AdvancePaymentValueNet":0}}]}