| GET | /v1/Vehicle/Reject/{vehicleIdentifier} | Get vehicle details and rejections by VIN or Commission Number | Calls Vehicle Data API. Returns vehicle details from the DB if found, otherwise from the Rejects table. |
|---|
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')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleDataBase:
vin: Optional[str] = None
description: Optional[str] = None
model: Optional[str] = None
otr: Optional[str] = None
retail_price_ex_v_a_t: Optional[str] = None
actual_price: Optional[str] = None
p11_d: Optional[str] = None
fuel_type: Optional[str] = None
transmission: Optional[str] = None
transmission_type: Optional[str] = None
colour: Optional[str] = None
colour_code: Optional[str] = None
colour_description: Optional[str] = None
commission_number: Optional[str] = None
offer_available: bool = False
campaign_discount_offer_total: int = 0
campaign_discount_offer_total_current: int = 0
campaign_discount_offer_total_pending: int = 0
campaign_service_offer_total: int = 0
campaign_service_offer_total_current: int = 0
campaign_service_offer_total_pending: int = 0
campaign_custom_offer_total: int = 0
campaign_personalised_offer_total_current: int = 0
campaign_personalised_offer_total_pending: int = 0
campaign_personalised_offer_total: int = 0
campaign_custom_offer_total_current: int = 0
campaign_custom_offer_total_pending: int = 0
campaign_other_offer_total: int = 0
campaign_other_offer_total_current: int = 0
campaign_other_offer_total_pending: int = 0
retailer_discount_offer_total: int = 0
retailer_discount_offer_total_current: int = 0
retailer_discount_offer_total_pending: int = 0
retailer_service_offer_total: int = 0
retailer_service_offer_total_current: int = 0
retailer_service_offer_total_pending: int = 0
retailer_custom_offer_total: int = 0
retailer_custom_offer_total_current: int = 0
retailer_custom_offer_total_pending: int = 0
retailer_warranty_offer_total: int = 0
retailer_warranty_offer_total_current: int = 0
retailer_warranty_offer_total_pending: int = 0
retailer_offer_total: int = 0
retailer_offer_total_current: int = 0
retailer_offer_total_pending: int = 0
campaign_offer_total: int = 0
campaign_offer_total_current: int = 0
campaign_offer_total_pending: int = 0
campaign_and_offer_total: int = 0
campaign_and_offer_total_current: int = 0
campaign_and_offer_total_pending: int = 0
offer_total: int = 0
offer_total_current: int = 0
offer_total_pending: int = 0
creation: Optional[str] = None
modified: Optional[str] = None
electric_range: int = 0
electric_consumption: int = 0
port_arrival_date: Optional[datetime.datetime] = None
days_since_port_arrival: Optional[int] = None
retail_price_inc_v_a_t: Decimal = decimal.Decimal(0)
body_style: Optional[str] = None
upholstery: Optional[str] = None
upholstery_code: Optional[str] = None
upholstery_type: Optional[str] = None
package_names: List[str] = field(default_factory=list)
line: Optional[str] = None
mapped_line: Optional[str] = None
current_retailer_offer_price: Decimal = decimal.Decimal(0)
retail_price: Optional[str] = None
vat_qualifying: bool = False
retailer_id: int = 0
gssn_id: Optional[str] = None
no_image: bool = False
image_url: Optional[str] = None
is_available_online: bool = False
is_back_ordered: bool = False
creation_date: Optional[str] = None
maintenance_date: Optional[str] = None
registration_number: Optional[str] = None
registration_date: Optional[datetime.datetime] = None
mileage: Optional[int] = None
trade_in_date: Optional[datetime.datetime] = None
source: Optional[str] = None
vehicle_type: Optional[str] = None
offer_amount: Optional[str] = None
offer_expiry: Optional[str] = None
active_offers: List[int] = field(default_factory=list)
campaign_messages_total: int = 0
under_offer: bool = False
is_display_stock: bool = False
display_retailer: Optional[str] = None
display_retailer_gssn_id: Optional[str] = None
location: Optional[str] = None
account: Optional[str] = None
account_type: Optional[str] = None
usage_code: Optional[str] = None
bm7_n_s_t: Optional[str] = None
is_sellable: bool = False
secured: bool = False
specialist: bool = False
is_motability_retailer: bool = False
upholstery_description: Optional[str] = None
in_back_order_account: bool = False
full_model_year_code: Optional[str] = None
baumuster: Optional[str] = None
is_motability: bool = False
pip_advance_rental_gross: Optional[Decimal] = None
wpms_advance_rental_gross: Optional[Decimal] = None
isp_vehicle_customer_descriptions: Optional[List[str]] = None
eligible_for_ma_transfer: bool = False
confirmed_production_date: Optional[str] = None
forecasted_arrival_date: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleData(VehicleDataBase):
engine: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Equipment:
id: Optional[int] = None
code: Optional[str] = None
description: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleIdentifierData(VehicleData):
retailer: Optional[str] = None
has_motability_error: bool = False
equipment: List[Equipment] = field(default_factory=list)
vehicle_class: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleRejectionData:
reject_reason: Optional[str] = None
exception: Optional[str] = None
creation_date: Optional[str] = None
active: Optional[bool] = None
data_source: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleSellableCheckData:
check: Optional[str] = None
failure: Optional[str] = None
creation_date: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleRejectDetailsData:
details: Optional[VehicleIdentifierData] = None
rejections: List[VehicleRejectionData] = field(default_factory=list)
sellable_checks: List[VehicleSellableCheckData] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleRejectDetailsResponse:
vehicle: Optional[VehicleRejectDetailsData] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleRejectRequest(IGet):
vehicle_identifier: Optional[str] = None
Python VehicleRejectRequest DTOs
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.
GET /v1/Vehicle/Reject/{vehicleIdentifier} HTTP/1.1
Host: uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<VehicleRejectDetailsResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.VehicleManagement.API.ServiceModel">
<Vehicle>
<Details xmlns:d3p1="http://schemas.datacontract.org/2004/07/Mercedes.VehicleManagement.API.Shared.POCO">
<d3p1:Account>String</d3p1:Account>
<d3p1:AccountType>String</d3p1:AccountType>
<d3p1:ActiveOffers xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:int>0</d4p1:int>
</d3p1:ActiveOffers>
<d3p1:ActualPrice>String</d3p1:ActualPrice>
<d3p1:Baumuster>String</d3p1:Baumuster>
<d3p1:Bm7NST>String</d3p1:Bm7NST>
<d3p1:BodyStyle>String</d3p1:BodyStyle>
<d3p1:CampaignAndOfferTotal>0</d3p1:CampaignAndOfferTotal>
<d3p1:CampaignAndOfferTotalCurrent>0</d3p1:CampaignAndOfferTotalCurrent>
<d3p1:CampaignAndOfferTotalPending>0</d3p1:CampaignAndOfferTotalPending>
<d3p1:CampaignCustomOfferTotal>0</d3p1:CampaignCustomOfferTotal>
<d3p1:CampaignCustomOfferTotalCurrent>0</d3p1:CampaignCustomOfferTotalCurrent>
<d3p1:CampaignCustomOfferTotalPending>0</d3p1:CampaignCustomOfferTotalPending>
<d3p1:CampaignDiscountOfferTotal>0</d3p1:CampaignDiscountOfferTotal>
<d3p1:CampaignDiscountOfferTotalCurrent>0</d3p1:CampaignDiscountOfferTotalCurrent>
<d3p1:CampaignDiscountOfferTotalPending>0</d3p1:CampaignDiscountOfferTotalPending>
<d3p1:CampaignMessagesTotal>0</d3p1:CampaignMessagesTotal>
<d3p1:CampaignOfferTotal>0</d3p1:CampaignOfferTotal>
<d3p1:CampaignOfferTotalCurrent>0</d3p1:CampaignOfferTotalCurrent>
<d3p1:CampaignOfferTotalPending>0</d3p1:CampaignOfferTotalPending>
<d3p1:CampaignOtherOfferTotal>0</d3p1:CampaignOtherOfferTotal>
<d3p1:CampaignOtherOfferTotalCurrent>0</d3p1:CampaignOtherOfferTotalCurrent>
<d3p1:CampaignOtherOfferTotalPending>0</d3p1:CampaignOtherOfferTotalPending>
<d3p1:CampaignPersonalisedOfferTotal>0</d3p1:CampaignPersonalisedOfferTotal>
<d3p1:CampaignPersonalisedOfferTotalCurrent>0</d3p1:CampaignPersonalisedOfferTotalCurrent>
<d3p1:CampaignPersonalisedOfferTotalPending>0</d3p1:CampaignPersonalisedOfferTotalPending>
<d3p1:CampaignServiceOfferTotal>0</d3p1:CampaignServiceOfferTotal>
<d3p1:CampaignServiceOfferTotalCurrent>0</d3p1:CampaignServiceOfferTotalCurrent>
<d3p1:CampaignServiceOfferTotalPending>0</d3p1:CampaignServiceOfferTotalPending>
<d3p1:Colour>String</d3p1:Colour>
<d3p1:ColourCode>String</d3p1:ColourCode>
<d3p1:ColourDescription>String</d3p1:ColourDescription>
<d3p1:CommissionNumber>String</d3p1:CommissionNumber>
<d3p1:ConfirmedProductionDate>String</d3p1:ConfirmedProductionDate>
<d3p1:Creation>String</d3p1:Creation>
<d3p1:CreationDate>String</d3p1:CreationDate>
<d3p1:CurrentRetailerOfferPrice>0</d3p1:CurrentRetailerOfferPrice>
<d3p1:DaysSincePortArrival>0</d3p1:DaysSincePortArrival>
<d3p1:Description>String</d3p1:Description>
<d3p1:DisplayRetailer>String</d3p1:DisplayRetailer>
<d3p1:DisplayRetailerGssnId>String</d3p1:DisplayRetailerGssnId>
<d3p1:ElectricConsumption>0</d3p1:ElectricConsumption>
<d3p1:ElectricRange>0</d3p1:ElectricRange>
<d3p1:EligibleForMaTransfer>false</d3p1:EligibleForMaTransfer>
<d3p1:ForecastedArrivalDate>String</d3p1:ForecastedArrivalDate>
<d3p1:FuelType>String</d3p1:FuelType>
<d3p1:FullModelYearCode>String</d3p1:FullModelYearCode>
<d3p1:GssnId>String</d3p1:GssnId>
<d3p1:ImageUrl>String</d3p1:ImageUrl>
<d3p1:InBackOrderAccount>false</d3p1:InBackOrderAccount>
<d3p1:IsAvailableOnline>false</d3p1:IsAvailableOnline>
<d3p1:IsBackOrdered>false</d3p1:IsBackOrdered>
<d3p1:IsDisplayStock>false</d3p1:IsDisplayStock>
<d3p1:IsMotability>false</d3p1:IsMotability>
<d3p1:IsMotabilityRetailer>false</d3p1:IsMotabilityRetailer>
<d3p1:IsSellable>false</d3p1:IsSellable>
<d3p1:IspVehicleCustomerDescriptions xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string>String</d4p1:string>
</d3p1:IspVehicleCustomerDescriptions>
<d3p1:Line>String</d3p1:Line>
<d3p1:Location>String</d3p1:Location>
<d3p1:MaintenanceDate>String</d3p1:MaintenanceDate>
<d3p1:MappedLine>String</d3p1:MappedLine>
<d3p1:Mileage>0</d3p1:Mileage>
<d3p1:Model>String</d3p1:Model>
<d3p1:Modified>String</d3p1:Modified>
<d3p1:NoImage>false</d3p1:NoImage>
<d3p1:OfferAmount>String</d3p1:OfferAmount>
<d3p1:OfferAvailable>false</d3p1:OfferAvailable>
<d3p1:OfferExpiry>String</d3p1:OfferExpiry>
<d3p1:OfferTotal>0</d3p1:OfferTotal>
<d3p1:OfferTotalCurrent>0</d3p1:OfferTotalCurrent>
<d3p1:OfferTotalPending>0</d3p1:OfferTotalPending>
<d3p1:Otr>String</d3p1:Otr>
<d3p1:P11D>String</d3p1:P11D>
<d3p1:PackageNames xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string>String</d4p1:string>
</d3p1:PackageNames>
<d3p1:PipAdvanceRentalGross>0</d3p1:PipAdvanceRentalGross>
<d3p1:PortArrivalDate>0001-01-01T00:00:00</d3p1:PortArrivalDate>
<d3p1:RegistrationDate>0001-01-01T00:00:00</d3p1:RegistrationDate>
<d3p1:RegistrationNumber>String</d3p1:RegistrationNumber>
<d3p1:RetailPrice>String</d3p1:RetailPrice>
<d3p1:RetailPriceExVAT>String</d3p1:RetailPriceExVAT>
<d3p1:RetailPriceIncVAT>0</d3p1:RetailPriceIncVAT>
<d3p1:RetailerCustomOfferTotal>0</d3p1:RetailerCustomOfferTotal>
<d3p1:RetailerCustomOfferTotalCurrent>0</d3p1:RetailerCustomOfferTotalCurrent>
<d3p1:RetailerCustomOfferTotalPending>0</d3p1:RetailerCustomOfferTotalPending>
<d3p1:RetailerDiscountOfferTotal>0</d3p1:RetailerDiscountOfferTotal>
<d3p1:RetailerDiscountOfferTotalCurrent>0</d3p1:RetailerDiscountOfferTotalCurrent>
<d3p1:RetailerDiscountOfferTotalPending>0</d3p1:RetailerDiscountOfferTotalPending>
<d3p1:RetailerId>0</d3p1:RetailerId>
<d3p1:RetailerOfferTotal>0</d3p1:RetailerOfferTotal>
<d3p1:RetailerOfferTotalCurrent>0</d3p1:RetailerOfferTotalCurrent>
<d3p1:RetailerOfferTotalPending>0</d3p1:RetailerOfferTotalPending>
<d3p1:RetailerServiceOfferTotal>0</d3p1:RetailerServiceOfferTotal>
<d3p1:RetailerServiceOfferTotalCurrent>0</d3p1:RetailerServiceOfferTotalCurrent>
<d3p1:RetailerServiceOfferTotalPending>0</d3p1:RetailerServiceOfferTotalPending>
<d3p1:RetailerWarrantyOfferTotal>0</d3p1:RetailerWarrantyOfferTotal>
<d3p1:RetailerWarrantyOfferTotalCurrent>0</d3p1:RetailerWarrantyOfferTotalCurrent>
<d3p1:RetailerWarrantyOfferTotalPending>0</d3p1:RetailerWarrantyOfferTotalPending>
<d3p1:Secured>false</d3p1:Secured>
<d3p1:Source>String</d3p1:Source>
<d3p1:Specialist>false</d3p1:Specialist>
<d3p1:TradeInDate>0001-01-01T00:00:00</d3p1:TradeInDate>
<d3p1:Transmission>String</d3p1:Transmission>
<d3p1:TransmissionType>String</d3p1:TransmissionType>
<d3p1:UnderOffer>false</d3p1:UnderOffer>
<d3p1:Upholstery>String</d3p1:Upholstery>
<d3p1:UpholsteryCode>String</d3p1:UpholsteryCode>
<d3p1:UpholsteryDescription>String</d3p1:UpholsteryDescription>
<d3p1:UpholsteryType>String</d3p1:UpholsteryType>
<d3p1:UsageCode>String</d3p1:UsageCode>
<d3p1:VATQualifying>false</d3p1:VATQualifying>
<d3p1:VehicleType>String</d3p1:VehicleType>
<d3p1:Vin>String</d3p1:Vin>
<d3p1:WpmsAdvanceRentalGross>0</d3p1:WpmsAdvanceRentalGross>
<d3p1:Engine>String</d3p1:Engine>
<d3p1:Equipment xmlns:d4p1="http://schemas.datacontract.org/2004/07/Mercedes.OS.Vehicle.Shared.POCO">
<d4p1:Equipment>
<d4p1:Code>String</d4p1:Code>
<d4p1:Description>String</d4p1:Description>
<d4p1:Id>0</d4p1:Id>
</d4p1:Equipment>
</d3p1:Equipment>
<d3p1:HasMotabilityError>false</d3p1:HasMotabilityError>
<d3p1:Retailer>String</d3p1:Retailer>
<d3p1:VehicleClass>String</d3p1:VehicleClass>
</Details>
<Rejections xmlns:d3p1="http://schemas.datacontract.org/2004/07/Mercedes.VehicleManagement.API.Shared.POCO">
<d3p1:VehicleRejectionData>
<d3p1:Active>false</d3p1:Active>
<d3p1:CreationDate>String</d3p1:CreationDate>
<d3p1:DataSource>String</d3p1:DataSource>
<d3p1:Exception>String</d3p1:Exception>
<d3p1:RejectReason>String</d3p1:RejectReason>
</d3p1:VehicleRejectionData>
</Rejections>
<SellableChecks xmlns:d3p1="http://schemas.datacontract.org/2004/07/Mercedes.VehicleManagement.API.Shared.POCO">
<d3p1:VehicleSellableCheckData>
<d3p1:Check>String</d3p1:Check>
<d3p1:CreationDate>String</d3p1:CreationDate>
<d3p1:Failure>String</d3p1:Failure>
</d3p1:VehicleSellableCheckData>
</SellableChecks>
</Vehicle>
</VehicleRejectDetailsResponse>