<back to all web services

GetDashboardDataMessage

The following routes are available for this service:
All Verbs/RestApi/Sitefinity/Analytics/GetDashboardData
All Verbs/RestApi/GetDashboardData
import 'package:servicestack/servicestack.dart';

class GetDashboardDataMessage implements IConvertible
{
    String? DashboardId;
    String? jsStartDate;
    String? jsEndDate;
    Map<String,String?>? QueryStringFilters;
    DateTime? StartDate;
    DateTime? EndDate;
    String? GroupBy;
    Map<String,String?>? Dimensions;
    String? MaxValue;
    String? SiteId;

    GetDashboardDataMessage({this.DashboardId,this.jsStartDate,this.jsEndDate,this.QueryStringFilters,this.StartDate,this.EndDate,this.GroupBy,this.Dimensions,this.MaxValue,this.SiteId});
    GetDashboardDataMessage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DashboardId = json['DashboardId'];
        jsStartDate = json['jsStartDate'];
        jsEndDate = json['jsEndDate'];
        QueryStringFilters = JsonConverters.toStringMap(json['QueryStringFilters']);
        StartDate = JsonConverters.fromJson(json['StartDate'],'DateTime',context!);
        EndDate = JsonConverters.fromJson(json['EndDate'],'DateTime',context!);
        GroupBy = json['GroupBy'];
        Dimensions = JsonConverters.toStringMap(json['Dimensions']);
        MaxValue = json['MaxValue'];
        SiteId = json['SiteId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DashboardId': DashboardId,
        'jsStartDate': jsStartDate,
        'jsEndDate': jsEndDate,
        'QueryStringFilters': QueryStringFilters,
        'StartDate': JsonConverters.toJson(StartDate,'DateTime',context!),
        'EndDate': JsonConverters.toJson(EndDate,'DateTime',context!),
        'GroupBy': GroupBy,
        'Dimensions': Dimensions,
        'MaxValue': MaxValue,
        'SiteId': SiteId
    };

    getTypeName() => "GetDashboardDataMessage";
    TypeContext? context = _ctx;
}

class MetricItemDTO implements IConvertible
{
    String? Name;
    String? DisplayName;
    double? Value;
    String? Unit;
    String? DenominatorMetricName;
    String? NominatorMetricName;
    bool? ShowInSelector;

    MetricItemDTO({this.Name,this.DisplayName,this.Value,this.Unit,this.DenominatorMetricName,this.NominatorMetricName,this.ShowInSelector});
    MetricItemDTO.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        DisplayName = json['DisplayName'];
        Value = JsonConverters.toDouble(json['Value']);
        Unit = json['Unit'];
        DenominatorMetricName = json['DenominatorMetricName'];
        NominatorMetricName = json['NominatorMetricName'];
        ShowInSelector = json['ShowInSelector'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'DisplayName': DisplayName,
        'Value': Value,
        'Unit': Unit,
        'DenominatorMetricName': DenominatorMetricName,
        'NominatorMetricName': NominatorMetricName,
        'ShowInSelector': ShowInSelector
    };

    getTypeName() => "MetricItemDTO";
    TypeContext? context = _ctx;
}

// @DataContract
class DimensionItem implements IConvertible
{
    // @DataMember
    String? Value;

    // @DataMember
    String? Name;

    DimensionItem({this.Value,this.Name});
    DimensionItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Value = json['Value'];
        Name = json['Name'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Value': Value,
        'Name': Name
    };

    getTypeName() => "DimensionItem";
    TypeContext? context = _ctx;
}

class SingleSerie implements IConvertible
{
    MetricItemDTO? MainMetric;
    String? CategoryFormat;
    bool? Batch;
    bool? IsCategory;
    String? SeriesName;
    List<DimensionItem>? SeriesDimensions;
    String? RelatedDimension;

    SingleSerie({this.MainMetric,this.CategoryFormat,this.Batch,this.IsCategory,this.SeriesName,this.SeriesDimensions,this.RelatedDimension});
    SingleSerie.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        MainMetric = JsonConverters.fromJson(json['MainMetric'],'MetricItemDTO',context!);
        CategoryFormat = json['CategoryFormat'];
        Batch = json['Batch'];
        IsCategory = json['IsCategory'];
        SeriesName = json['SeriesName'];
        SeriesDimensions = JsonConverters.fromJson(json['SeriesDimensions'],'List<DimensionItem>',context!);
        RelatedDimension = json['RelatedDimension'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'MainMetric': JsonConverters.toJson(MainMetric,'MetricItemDTO',context!),
        'CategoryFormat': CategoryFormat,
        'Batch': Batch,
        'IsCategory': IsCategory,
        'SeriesName': SeriesName,
        'SeriesDimensions': JsonConverters.toJson(SeriesDimensions,'List<DimensionItem>',context!),
        'RelatedDimension': RelatedDimension
    };

    getTypeName() => "SingleSerie";
    TypeContext? context = _ctx;
}

class DashBoardControl implements IConvertible
{
    String? ControlType;
    Map<String,String?>? attributes;
    String? PlaceholderId;
    String? DisplayName;
    List<SingleSerie>? Series;
    String? DimensionName;
    List<String>? RelatedDimension;
    String? SortbyField;
    bool? SortAsc;

    DashBoardControl({this.ControlType,this.attributes,this.PlaceholderId,this.DisplayName,this.Series,this.DimensionName,this.RelatedDimension,this.SortbyField,this.SortAsc});
    DashBoardControl.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ControlType = json['ControlType'];
        attributes = JsonConverters.toStringMap(json['attributes']);
        PlaceholderId = json['PlaceholderId'];
        DisplayName = json['DisplayName'];
        Series = JsonConverters.fromJson(json['Series'],'List<SingleSerie>',context!);
        DimensionName = json['DimensionName'];
        RelatedDimension = JsonConverters.fromJson(json['RelatedDimension'],'List<String>',context!);
        SortbyField = json['SortbyField'];
        SortAsc = json['SortAsc'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ControlType': ControlType,
        'attributes': attributes,
        'PlaceholderId': PlaceholderId,
        'DisplayName': DisplayName,
        'Series': JsonConverters.toJson(Series,'List<SingleSerie>',context!),
        'DimensionName': DimensionName,
        'RelatedDimension': JsonConverters.toJson(RelatedDimension,'List<String>',context!),
        'SortbyField': SortbyField,
        'SortAsc': SortAsc
    };

    getTypeName() => "DashBoardControl";
    TypeContext? context = _ctx;
}

class KendoItem implements IConvertible
{
    String? category;
    Map<String,double?>? values;
    String? group;
    String? tooltip;
    Map<String,String?>? Dimensions;

    KendoItem({this.category,this.values,this.group,this.tooltip,this.Dimensions});
    KendoItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        category = json['category'];
        values = JsonConverters.fromJson(json['values'],'Map<String,double?>',context!);
        group = json['group'];
        tooltip = json['tooltip'];
        Dimensions = JsonConverters.toStringMap(json['Dimensions']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'category': category,
        'values': JsonConverters.toJson(values,'Map<String,double?>',context!),
        'group': group,
        'tooltip': tooltip,
        'Dimensions': Dimensions
    };

    getTypeName() => "KendoItem";
    TypeContext? context = _ctx;
}

class GetDashboardData implements IConvertible
{
    List<DashBoardControl>? Controls;
    String? LayoutTemplateName;
    String? GroupBy;
    List<MetricItemDTO>? MetricNames;
    String? ErrorMessage;
    bool? NeedsGrouping;
    bool? IsDrillDown;
    List<KendoItem>? DateItems;
    List<KendoItem>? NonDateItems;
    KendoItem? TotalsItem;
    List<String>? MapDataTable;
    bool? IsMapRequest;
    Map<String,List<String>?>? SeriesSources;
    int? StatusCode;
    bool? SuppressMultipleSeries;

    GetDashboardData({this.Controls,this.LayoutTemplateName,this.GroupBy,this.MetricNames,this.ErrorMessage,this.NeedsGrouping,this.IsDrillDown,this.DateItems,this.NonDateItems,this.TotalsItem,this.MapDataTable,this.IsMapRequest,this.SeriesSources,this.StatusCode,this.SuppressMultipleSeries});
    GetDashboardData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Controls = JsonConverters.fromJson(json['Controls'],'List<DashBoardControl>',context!);
        LayoutTemplateName = json['LayoutTemplateName'];
        GroupBy = json['GroupBy'];
        MetricNames = JsonConverters.fromJson(json['MetricNames'],'List<MetricItemDTO>',context!);
        ErrorMessage = json['ErrorMessage'];
        NeedsGrouping = json['NeedsGrouping'];
        IsDrillDown = json['IsDrillDown'];
        DateItems = JsonConverters.fromJson(json['DateItems'],'List<KendoItem>',context!);
        NonDateItems = JsonConverters.fromJson(json['NonDateItems'],'List<KendoItem>',context!);
        TotalsItem = JsonConverters.fromJson(json['TotalsItem'],'KendoItem',context!);
        MapDataTable = JsonConverters.fromJson(json['MapDataTable'],'List<String>',context!);
        IsMapRequest = json['IsMapRequest'];
        SeriesSources = JsonConverters.fromJson(json['SeriesSources'],'Map<String,List<String>?>',context!);
        StatusCode = json['StatusCode'];
        SuppressMultipleSeries = json['SuppressMultipleSeries'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Controls': JsonConverters.toJson(Controls,'List<DashBoardControl>',context!),
        'LayoutTemplateName': LayoutTemplateName,
        'GroupBy': GroupBy,
        'MetricNames': JsonConverters.toJson(MetricNames,'List<MetricItemDTO>',context!),
        'ErrorMessage': ErrorMessage,
        'NeedsGrouping': NeedsGrouping,
        'IsDrillDown': IsDrillDown,
        'DateItems': JsonConverters.toJson(DateItems,'List<KendoItem>',context!),
        'NonDateItems': JsonConverters.toJson(NonDateItems,'List<KendoItem>',context!),
        'TotalsItem': JsonConverters.toJson(TotalsItem,'KendoItem',context!),
        'MapDataTable': JsonConverters.toJson(MapDataTable,'List<String>',context!),
        'IsMapRequest': IsMapRequest,
        'SeriesSources': JsonConverters.toJson(SeriesSources,'Map<String,List<String>?>',context!),
        'StatusCode': StatusCode,
        'SuppressMultipleSeries': SuppressMultipleSeries
    };

    getTypeName() => "GetDashboardData";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'www.asg.com.au', types: <String, TypeInfo> {
    'GetDashboardDataMessage': TypeInfo(TypeOf.Class, create:() => GetDashboardDataMessage()),
    'MetricItemDTO': TypeInfo(TypeOf.Class, create:() => MetricItemDTO()),
    'DimensionItem': TypeInfo(TypeOf.Class, create:() => DimensionItem()),
    'SingleSerie': TypeInfo(TypeOf.Class, create:() => SingleSerie()),
    'List<DimensionItem>': TypeInfo(TypeOf.Class, create:() => <DimensionItem>[]),
    'DashBoardControl': TypeInfo(TypeOf.Class, create:() => DashBoardControl()),
    'List<SingleSerie>': TypeInfo(TypeOf.Class, create:() => <SingleSerie>[]),
    'KendoItem': TypeInfo(TypeOf.Class, create:() => KendoItem()),
    'Map<String,double?>': TypeInfo(TypeOf.Class, create:() => Map<String,double?>()),
    'GetDashboardData': TypeInfo(TypeOf.Class, create:() => GetDashboardData()),
    'List<DashBoardControl>': TypeInfo(TypeOf.Class, create:() => <DashBoardControl>[]),
    'List<MetricItemDTO>': TypeInfo(TypeOf.Class, create:() => <MetricItemDTO>[]),
    'List<KendoItem>': TypeInfo(TypeOf.Class, create:() => <KendoItem>[]),
    'Map<String,List<String>?>': TypeInfo(TypeOf.Class, create:() => Map<String,List<String>?>()),
});

Dart GetDashboardDataMessage DTOs

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

HTTP + CSV

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

POST /RestApi/Sitefinity/Analytics/GetDashboardData HTTP/1.1 
Host: www.asg.com.au 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{Unable to show example output for type 'GetDashboardDataMessage' using the custom 'csv' filter}One or more errors occurred.
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Controls":[{"ControlType":"String","attributes":{"String":"String"},"PlaceholderId":"String","DisplayName":"String","Series":[{"MainMetric":{"Name":"String","DisplayName":"String","Value":0,"Unit":"String","DenominatorMetricName":"String","NominatorMetricName":"String","ShowInSelector":false},"CategoryFormat":"String","Batch":false,"IsCategory":false,"SeriesName":"String","SeriesDimensions":[{}],"RelatedDimension":"String"}],"DimensionName":"String","RelatedDimension":["String"],"SortbyField":"String","SortAsc":false}],"LayoutTemplateName":"String","GroupBy":"String","MetricNames":[{"Name":"String","DisplayName":"String","Value":0,"Unit":"String","DenominatorMetricName":"String","NominatorMetricName":"String","ShowInSelector":false}],"ErrorMessage":"String","NeedsGrouping":false,"IsDrillDown":false,"DateItems":[{"category":"String","values":{"String":0},"group":"String","tooltip":"String","Dimensions":{"String":"String"}}],"NonDateItems":[{"category":"String","values":{"String":0},"group":"String","tooltip":"String","Dimensions":{"String":"String"}}],"TotalsItem":{"category":"String","values":{"String":0},"group":"String","tooltip":"String","Dimensions":{"String":"String"}},"MapDataTable":[["String"]],"IsMapRequest":false,"SeriesSources":{"String":["String"]},"StatusCode":0,"SuppressMultipleSeries":false}