| Requires any of the roles: | Agent, Administrator |
| POST,OPTIONS | /v1/report/run |
|---|
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
class ReportMeasure implements IConvertible
{
String? FieldCode;
String? Agg;
ReportMeasure({this.FieldCode,this.Agg});
ReportMeasure.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
FieldCode = json['FieldCode'];
Agg = json['Agg'];
return this;
}
Map<String, dynamic> toJson() => {
'FieldCode': FieldCode,
'Agg': Agg
};
getTypeName() => "ReportMeasure";
TypeContext? context = _ctx;
}
class ReportSort implements IConvertible
{
String? FieldCode;
String? Dir;
ReportSort({this.FieldCode,this.Dir});
ReportSort.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
FieldCode = json['FieldCode'];
Dir = json['Dir'];
return this;
}
Map<String, dynamic> toJson() => {
'FieldCode': FieldCode,
'Dir': Dir
};
getTypeName() => "ReportSort";
TypeContext? context = _ctx;
}
class ReportDefinition implements IConvertible
{
String? DatasetCode;
List<String>? Dimensions = [];
List<ReportMeasure>? Measures = [];
List<String>? Joins = [];
String? Filters;
List<ReportSort>? Sorts = [];
int? Limit;
ReportDefinition({this.DatasetCode,this.Dimensions,this.Measures,this.Joins,this.Filters,this.Sorts,this.Limit});
ReportDefinition.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
DatasetCode = json['DatasetCode'];
Dimensions = JsonConverters.fromJson(json['Dimensions'],'List<String>',context!);
Measures = JsonConverters.fromJson(json['Measures'],'List<ReportMeasure>',context!);
Joins = JsonConverters.fromJson(json['Joins'],'List<String>',context!);
Filters = json['Filters'];
Sorts = JsonConverters.fromJson(json['Sorts'],'List<ReportSort>',context!);
Limit = json['Limit'];
return this;
}
Map<String, dynamic> toJson() => {
'DatasetCode': DatasetCode,
'Dimensions': JsonConverters.toJson(Dimensions,'List<String>',context!),
'Measures': JsonConverters.toJson(Measures,'List<ReportMeasure>',context!),
'Joins': JsonConverters.toJson(Joins,'List<String>',context!),
'Filters': Filters,
'Sorts': JsonConverters.toJson(Sorts,'List<ReportSort>',context!),
'Limit': Limit
};
getTypeName() => "ReportDefinition";
TypeContext? context = _ctx;
}
class ReportColumnMeta implements IConvertible
{
String? Code;
String? Name;
String? DataType;
String? FieldKind;
String? Agg;
ReportColumnMeta({this.Code,this.Name,this.DataType,this.FieldKind,this.Agg});
ReportColumnMeta.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Code = json['Code'];
Name = json['Name'];
DataType = json['DataType'];
FieldKind = json['FieldKind'];
Agg = json['Agg'];
return this;
}
Map<String, dynamic> toJson() => {
'Code': Code,
'Name': Name,
'DataType': DataType,
'FieldKind': FieldKind,
'Agg': Agg
};
getTypeName() => "ReportColumnMeta";
TypeContext? context = _ctx;
}
class ReportRunResult implements IConvertible
{
List<ReportColumnMeta>? Columns = [];
List<Map<String,dynamic>>? Rows = [];
int? RowCount;
bool? Truncated;
List<String>? Notes = [];
ReportRunResult({this.Columns,this.Rows,this.RowCount,this.Truncated,this.Notes});
ReportRunResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Columns = JsonConverters.fromJson(json['Columns'],'List<ReportColumnMeta>',context!);
Rows = JsonConverters.fromJson(json['Rows'],'List<Map<String,dynamic>>',context!);
RowCount = json['RowCount'];
Truncated = json['Truncated'];
Notes = JsonConverters.fromJson(json['Notes'],'List<String>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Columns': JsonConverters.toJson(Columns,'List<ReportColumnMeta>',context!),
'Rows': JsonConverters.toJson(Rows,'List<Map<String,dynamic>>',context!),
'RowCount': RowCount,
'Truncated': Truncated,
'Notes': JsonConverters.toJson(Notes,'List<String>',context!)
};
getTypeName() => "ReportRunResult";
TypeContext? context = _ctx;
}
class ReportRunResponse implements IConvertible
{
ResponseStatus? ResponseStatus;
ReportRunResult? Result;
ReportRunResponse({this.ResponseStatus,this.Result});
ReportRunResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
Result = JsonConverters.fromJson(json['Result'],'ReportRunResult',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
'Result': JsonConverters.toJson(Result,'ReportRunResult',context!)
};
getTypeName() => "ReportRunResponse";
TypeContext? context = _ctx;
}
class ReportRunRequest extends ReportDefinition implements IConvertible
{
ReportRunRequest();
ReportRunRequest.fromJson(Map<String, dynamic> json) : super.fromJson(json);
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
return this;
}
Map<String, dynamic> toJson() => super.toJson();
getTypeName() => "ReportRunRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
'ReportMeasure': TypeInfo(TypeOf.Class, create:() => ReportMeasure()),
'ReportSort': TypeInfo(TypeOf.Class, create:() => ReportSort()),
'ReportDefinition': TypeInfo(TypeOf.Class, create:() => ReportDefinition()),
'List<ReportMeasure>': TypeInfo(TypeOf.Class, create:() => <ReportMeasure>[]),
'List<ReportSort>': TypeInfo(TypeOf.Class, create:() => <ReportSort>[]),
'ReportColumnMeta': TypeInfo(TypeOf.Class, create:() => ReportColumnMeta()),
'ReportRunResult': TypeInfo(TypeOf.Class, create:() => ReportRunResult()),
'List<ReportColumnMeta>': TypeInfo(TypeOf.Class, create:() => <ReportColumnMeta>[]),
'List<Map<String,dynamic>>': TypeInfo(TypeOf.Class, create:() => <Map<String,dynamic>>[]),
'Map<String,dynamic>': TypeInfo(TypeOf.Class, create:() => Map<String,dynamic>()),
'ReportRunResponse': TypeInfo(TypeOf.Class, create:() => ReportRunResponse()),
'ReportRunRequest': TypeInfo(TypeOf.Class, create:() => ReportRunRequest()),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/report/run HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
DatasetCode: String,
Dimensions:
[
String
],
Measures:
[
{
FieldCode: String,
Agg: String
}
],
Joins:
[
String
],
Filters: String,
Sorts:
[
{
FieldCode: String,
Dir: String
}
],
Limit: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
},
Result:
{
Columns:
[
{
Code: String,
Name: String,
DataType: String,
FieldKind: String,
Agg: String
}
],
Rows:
[
{
String: {}
}
],
RowCount: 0,
Truncated: False,
Notes:
[
String
]
}
}