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
# frozen_string_literal: true
# encoding: utf-8


require 'json'
require 'servicestack'


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

module ReportSortType
    ASC = 'asc'
    DESC = 'desc'
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 ReportsPaging
    include ServiceStack::DTO

    # @return [Integer]
    attr_accessor :page
    # @return [Integer]
    attr_accessor :page_size

    def self.properties
        {
            page: { name: 'page' },
            page_size: { name: 'pageSize' },
        }
    end

end

class DashboardReportRequest
    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

    # @ApiMember(Description: "Paging", ParameterType: "body")
    # @return [ReportsPaging]
    attr_accessor :paging

    # @ApiMember(Description: "Sorting", ParameterType: "body")
    # @return [Dictionary]
    attr_accessor :sorting

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

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

Ruby 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
}