Mercedes.VehicleManagement.API

<back to all web services

DashboardReportRequest

Reports
Requires Authentication
The following routes are available for this service:
POST/v1/reportsRetrieve Report by ReportName and Filters
#![allow(
    dead_code,
    non_camel_case_types,
    non_snake_case,
    clippy::upper_case_acronyms
)]

use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct DashboardReportResult {
    #[serde(rename = "totalCount")]
    pub total_count: i32,
    #[serde(rename = "reportResult")]
    pub report_result: Vec<Value>,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum ReportFilterType {
    #[default]
    #[serde(rename = "list")]
    list,
    #[serde(rename = "list_like")]
    list_like,
    #[serde(rename = "date")]
    date,
    #[serde(rename = "range")]
    range,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct ReportFilter {
    pub r#type: ReportFilterType,
    pub values: Vec<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub start: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub end: Option<String>,
    #[serde(rename = "higherThan")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub higher_than: Option<i32>,
    #[serde(rename = "lowerThan")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub lower_than: Option<i32>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct ReportsPaging {
    pub page: i32,
    #[serde(rename = "pageSize")]
    pub page_size: i32,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum ReportSortType {
    #[default]
    #[serde(rename = "asc")]
    asc,
    #[serde(rename = "desc")]
    desc,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct DashboardReportRequest {
    /// Report Name
    // ApiMember(Description="Report Name", IsRequired=true, ParameterType="body")
    #[serde(rename = "reportName")]
    pub report_name: String,
    /// Filters
    // ApiMember(Description="Filters", IsRequired=true, ParameterType="body")
    pub filters: HashMap<String, ReportFilter>,
    /// Paging
    // ApiMember(Description="Paging", ParameterType="body")
    pub paging: ReportsPaging,
    /// Sorting
    // ApiMember(Description="Sorting", ParameterType="body")
    pub sorting: HashMap<String, ReportSortType>,
}

Rust DashboardReportRequest DTOs

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

HTTP + JSV

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

POST /v1/reports HTTP/1.1 
Host: uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	reportName: String,
	filters: 
	{
		String: 
		{
			type: list,
			start: 0001-01-01,
			end: 0001-01-01,
			higherThan: 0,
			lowerThan: 0
		}
	},
	paging: 
	{
		page: 0,
		pageSize: 0
	},
	sorting: 
	{
		String: asc
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	totalCount: 0
}