| GET | /v1/links/report |
|---|
import 'package:servicestack/servicestack.dart';
// @DataContract
class Item implements IConvertible
{
// @DataMember(Name="id")
String? id;
// @DataMember(Name="displayName")
String? displayName;
Item({this.id,this.displayName});
Item.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
id = json['id'];
displayName = json['displayName'];
return this;
}
Map<String, dynamic> toJson() => {
'id': id,
'displayName': displayName
};
getTypeName() => "Item";
TypeContext? context = _ctx;
}
// @DataContract
class ReportData implements IConvertible
{
// @DataMember(Name="id")
String? id;
// @DataMember(Name="item")
Item? item;
// @DataMember(Name="totalClicks")
int? totalClicks;
// @DataMember(Name="clicks")
int? clicks;
// @DataMember(Name="junkClicks")
int? junkClicks;
// @DataMember(Name="spiderClicks")
int? spiderClicks;
// @DataMember(Name="dateUtc")
DateTime? dateUtc;
ReportData({this.id,this.item,this.totalClicks,this.clicks,this.junkClicks,this.spiderClicks,this.dateUtc});
ReportData.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
id = json['id'];
item = JsonConverters.fromJson(json['item'],'Item',context!);
totalClicks = json['totalClicks'];
clicks = json['actualClicks'];
junkClicks = json['junkClicks'];
spiderClicks = json['spiderClicks'];
dateUtc = JsonConverters.fromJson(json['dateUtc'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'id': id,
'item': JsonConverters.toJson(item,'Item',context!),
'totalClicks': totalClicks,
'clicks': clicks,
'junkClicks': junkClicks,
'spiderClicks': spiderClicks,
'dateUtc': JsonConverters.toJson(dateUtc,'DateTime',context!)
};
getTypeName() => "ReportData";
TypeContext? context = _ctx;
}
// @DataContract
class Error implements IConvertible
{
// @DataMember(Name="code")
String? code;
Error({this.code});
Error.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
code = json['code'];
return this;
}
Map<String, dynamic> toJson() => {
'code': code
};
getTypeName() => "Error";
TypeContext? context = _ctx;
}
enum GroupBy
{
Default,
Retailer,
Date,
}
enum ReportType
{
ShortUrl,
Group,
User,
}
// @DataContract
class ReportRequest implements IConvertible
{
// @DataMember(Name="items")
List<String>? items;
// @DataMember(Name="groupBy")
List<GroupBy>? groupBy;
// @DataMember(Name="attribute")
String? attribute;
// @DataMember(Name="type")
ReportType? type;
// @DataMember(Name="fromStartUtcInclusive")
DateTime? fromStartUtcInclusive;
// @DataMember(Name="fromEndUtcInclusive")
DateTime? fromEndUtcInclusive;
// @DataMember(Name="retailers")
List<String>? retailers;
ReportRequest({this.items,this.groupBy,this.attribute,this.type,this.fromStartUtcInclusive,this.fromEndUtcInclusive,this.retailers});
ReportRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
items = JsonConverters.fromJson(json['items'],'List<String>',context!);
groupBy = JsonConverters.fromJson(json['groupBy'],'List<GroupBy>',context!);
attribute = json['attribute'];
type = JsonConverters.fromJson(json['type'],'ReportType',context!);
fromStartUtcInclusive = JsonConverters.fromJson(json['fromStartUtcInclusive'],'DateTime',context!);
fromEndUtcInclusive = JsonConverters.fromJson(json['fromEndUtcInclusive'],'DateTime',context!);
retailers = JsonConverters.fromJson(json['retailers'],'List<String>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'items': JsonConverters.toJson(items,'List<String>',context!),
'groupBy': JsonConverters.toJson(groupBy,'List<GroupBy>',context!),
'attribute': attribute,
'type': JsonConverters.toJson(type,'ReportType',context!),
'fromStartUtcInclusive': JsonConverters.toJson(fromStartUtcInclusive,'DateTime',context!),
'fromEndUtcInclusive': JsonConverters.toJson(fromEndUtcInclusive,'DateTime',context!),
'retailers': JsonConverters.toJson(retailers,'List<String>',context!)
};
getTypeName() => "ReportRequest";
TypeContext? context = _ctx;
}
// @DataContract
class Report extends Report implements IConvertible
{
Report();
Report.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() => "Report";
TypeContext? context = _ctx;
}
// @DataContract
class ClickReport implements IConvertible
{
// @DataMember(Name="code")
String? code;
// @DataMember(Name="reports")
Map<String,Report?>? reports;
// @DataMember(Name="totalClicks")
int? totalClicks;
ClickReport({this.code,this.reports,this.totalClicks});
ClickReport.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
code = json['code'];
reports = JsonConverters.fromJson(json['reports'],'Map<String,Report?>',context!);
totalClicks = json['totalClicks'];
return this;
}
Map<String, dynamic> toJson() => {
'code': code,
'reports': JsonConverters.toJson(reports,'Map<String,Report?>',context!),
'totalClicks': totalClicks
};
getTypeName() => "ClickReport";
TypeContext? context = _ctx;
}
// @DataContract
class GetLinkReportResponse implements IConvertible
{
// @DataMember(Name="reports")
ClickReport? reports;
// @DataMember(Name="responseStatus")
ResponseStatus? responseStatus;
GetLinkReportResponse({this.reports,this.responseStatus});
GetLinkReportResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
reports = JsonConverters.fromJson(json['report'],'ClickReport',context!);
responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
return this;
}
Map<String, dynamic> toJson() => {
'reports': JsonConverters.toJson(reports,'ClickReport',context!),
'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
};
getTypeName() => "GetLinkReportResponse";
TypeContext? context = _ctx;
}
// @DataContract
class GetLinkReportRequest implements IConvertible
{
// @DataMember(Name="baseCode")
String? baseCode;
GetLinkReportRequest({this.baseCode});
GetLinkReportRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
baseCode = json['baseCode'];
return this;
}
Map<String, dynamic> toJson() => {
'baseCode': baseCode
};
getTypeName() => "GetLinkReportRequest";
TypeContext? context = _ctx;
}
// @DataContract
class Report implements IConvertible
{
// @DataMember(Name="data")
List<ReportData>? data;
// @DataMember(Name="executionTimeMs")
int? executionTimeMs;
// @DataMember(Name="totalItems")
int? totalItems;
// @DataMember(Name="errors")
List<Error>? errors;
// @DataMember(Name="request")
ReportRequest? request;
// @DataMember(Name="totalClicks")
int? totalClicks;
Report({this.data,this.executionTimeMs,this.totalItems,this.errors,this.request,this.totalClicks});
Report.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
data = JsonConverters.fromJson(json['data'],'List<ReportData>',context!);
executionTimeMs = json['executionTimeMs'];
totalItems = json['totalItems'];
errors = JsonConverters.fromJson(json['errors'],'List<Error>',context!);
request = JsonConverters.fromJson(json['request'],'ReportRequest',context!);
totalClicks = json['totalClicks'];
return this;
}
Map<String, dynamic> toJson() => {
'data': JsonConverters.toJson(data,'List<ReportData>',context!),
'executionTimeMs': executionTimeMs,
'totalItems': totalItems,
'errors': JsonConverters.toJson(errors,'List<Error>',context!),
'request': JsonConverters.toJson(request,'ReportRequest',context!),
'totalClicks': totalClicks
};
getTypeName() => "Report";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.booklinker.com', types: <String, TypeInfo> {
'Item': TypeInfo(TypeOf.Class, create:() => Item()),
'ReportData': TypeInfo(TypeOf.Class, create:() => ReportData()),
'Error': TypeInfo(TypeOf.Class, create:() => Error()),
'GroupBy': TypeInfo(TypeOf.Enum, enumValues:GroupBy.values),
'ReportType': TypeInfo(TypeOf.Enum, enumValues:ReportType.values),
'ReportRequest': TypeInfo(TypeOf.Class, create:() => ReportRequest()),
'List<GroupBy>': TypeInfo(TypeOf.Class, create:() => <GroupBy>[]),
'Report': TypeInfo(TypeOf.Class, create:() => Report()),
'ClickReport': TypeInfo(TypeOf.Class, create:() => ClickReport()),
'Map<String,Report?>': TypeInfo(TypeOf.Class, create:() => Map<String,Report?>()),
'GetLinkReportResponse': TypeInfo(TypeOf.Class, create:() => GetLinkReportResponse()),
'GetLinkReportRequest': TypeInfo(TypeOf.Class, create:() => GetLinkReportRequest()),
'List<ReportData>': TypeInfo(TypeOf.Class, create:() => <ReportData>[]),
'List<Error>': TypeInfo(TypeOf.Class, create:() => <Error>[]),
});
Dart GetLinkReportRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/links/report HTTP/1.1 Host: api.booklinker.com Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"reports":{"code":"String","reports":{"String":{"data":[{"id":"String","item":{"id":"String","displayName":"String"},"totalClicks":0,"clicks":0,"junkClicks":0,"spiderClicks":0,"dateUtc":"0001-01-01T00:00:00.0000000"}],"executionTimeMs":0,"totalItems":1,"errors":[{}],"request":{"attribute":"String","type":"ShortUrl","fromStartUtcInclusive":"0001-01-01T00:00:00.0000000","fromEndUtcInclusive":"0001-01-01T00:00:00.0000000"},"totalClicks":0}},"totalClicks":0},"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}