Mercedes.VehicleManagement.API

<back to all web services

DashboardCsvReportsRequest

Reports
Requires Authentication
The following routes are available for this service:
POST/v1/reports/CsvRetrieve Report by ReportName and Filters and return as CSV
# frozen_string_literal: true
# encoding: utf-8


require 'json'
require 'servicestack'


module ReportFilterType
    LIST = 'list'
    LIST_LIKE = 'list_like'
    DATE = 'date'
    RANGE = 'range'
end

class DashboardReportResult
    include ServiceStack::DTO

    # @return [Integer]
    attr_accessor :total_count
    # @return [IEnumerable]
    attr_accessor :report_result

    def self.properties
        {
            total_count: { name: 'totalCount' },
            report_result: { name: 'reportResult' },
        }
    end

end

class ReportFilter
    include ServiceStack::DTO

    # @return [ReportFilterType]
    attr_accessor :type
    # @return [IEnumerable]
    attr_accessor :values
    # @return [DateTime]
    attr_accessor :start
    # @return [DateTime]
    attr_accessor :end
    # @return [Integer]
    attr_accessor :higher_than
    # @return [Integer]
    attr_accessor :lower_than

    def self.properties
        {
            type: { name: 'type' },
            values: { name: 'values' },
            start: { name: 'start', type: DateTime },
            end: { name: 'end', type: DateTime },
            higher_than: { name: 'higherThan' },
            lower_than: { name: 'lowerThan' },
        }
    end

end

class DashboardCsvReportsRequest
    include ServiceStack::DTO

    # @ApiMember(Description: "Report Name", IsRequired: "true", ParameterType: "body")
    # @return [String]
    attr_accessor :report_name

    # @ApiMember(Description: "Filters", IsRequired: "true", ParameterType: "body")
    # @return [Dictionary]
    attr_accessor :filters

    def self.properties
        {
            report_name: { name: 'reportName' },
            filters: { name: 'filters', type: { String => ReportFilter } },
        }
    end

    def response_type() = DashboardReportResult
    def get_type_name() = 'DashboardCsvReportsRequest'
end

Ruby DashboardCsvReportsRequest 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/Csv 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
		}
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	totalCount: 0
}