| GET | /v4/links/metadata |
|---|
import 'package:servicestack/servicestack.dart';
// @DataContract
class ShortUrlAlias implements IShortUrlAlias, IConvertible
{
// @DataMember
String? code;
// @DataMember
String? domain;
// @DataMember
String? baseCode;
// @DataMember
DateTime? lastUpdatedUtc;
ShortUrlAlias({this.code,this.domain,this.baseCode,this.lastUpdatedUtc});
ShortUrlAlias.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
code = json['code'];
domain = json['domain'];
baseCode = json['baseCode'];
lastUpdatedUtc = JsonConverters.fromJson(json['lastUpdatedUtc'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'code': code,
'domain': domain,
'baseCode': baseCode,
'lastUpdatedUtc': JsonConverters.toJson(lastUpdatedUtc,'DateTime',context!)
};
getTypeName() => "ShortUrlAlias";
TypeContext? context = _ctx;
}
enum LinkCreatorOption
{
NotSet,
Simple,
Split,
Advanced,
Interstitial,
Other,
}
// @DataContract
class UserShortLink implements IUserShortLink, IConvertible
{
// @DataMember
int? id;
// @DataMember
String? destinationUrl;
// @DataMember
String? shortUrlCode;
// @DataMember
String? domain;
// @DataMember
String? linkType;
// @DataMember
bool? hasOverride;
// @DataMember
String? productUrl;
// @DataMember
String? trackingCode;
// @DataMember
bool? skipAffiliateRedirect;
// @DataMember
DateTime? createdUtc;
// @DataMember
DateTime? updatedUtc;
// @DataMember
String? notes;
// @DataMember
DateTime? createdUserTime;
// @DataMember
DateTime? updatedUserTime;
// @DataMember
int? tsid;
// @DataMember
String? group;
// @DataMember
String? username;
// @DataMember
String? jsonMetadata;
// @DataMember
String? jsonItemMetadata;
// @DataMember
String? jsonPostProcessingRules;
// @DataMember
String? jsonOverrides;
// @DataMember
double? totalClicks;
// @DataMember
String? advertiser;
// @DataMember
int? advertiserId;
// @DataMember
double? percentChangePeriodOverPeriod;
// @DataMember
double? previousPeriodTotalClicks;
// @DataMember
int? isArchived;
// @DataMember
int? isArchivedInt;
// @DataMember
bool? fetchMetadata;
// @DataMember
String? productDisplayName1;
// @DataMember
String? productDisplayName2;
// @DataMember
String? productDisplayName3;
// @DataMember
String? productArtworkThumbnailUrl;
// @DataMember
String? productArtworkThumbnailUrl100;
// @DataMember
String? advertiserIcon;
// @DataMember
String? advertiserIconCssClass;
// @DataMember
bool? isGenius;
// @DataMember
String? advertiserIconTitle;
// @DataMember
String? trackingPixelIds;
// @DataMember
int? applePreference;
// @DataMember
List<ShortUrlAlias>? aliases;
// @DataMember
LinkCreatorOption? linkCreatorSetting;
UserShortLink({this.id,this.destinationUrl,this.shortUrlCode,this.domain,this.linkType,this.hasOverride,this.productUrl,this.trackingCode,this.skipAffiliateRedirect,this.createdUtc,this.updatedUtc,this.notes,this.createdUserTime,this.updatedUserTime,this.tsid,this.group,this.username,this.jsonMetadata,this.jsonItemMetadata,this.jsonPostProcessingRules,this.jsonOverrides,this.totalClicks,this.advertiser,this.advertiserId,this.percentChangePeriodOverPeriod,this.previousPeriodTotalClicks,this.isArchived,this.isArchivedInt,this.fetchMetadata,this.productDisplayName1,this.productDisplayName2,this.productDisplayName3,this.productArtworkThumbnailUrl,this.productArtworkThumbnailUrl100,this.advertiserIcon,this.advertiserIconCssClass,this.isGenius,this.advertiserIconTitle,this.trackingPixelIds,this.applePreference,this.aliases,this.linkCreatorSetting});
UserShortLink.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
id = json['id'];
destinationUrl = json['destinationUrl'];
shortUrlCode = json['shortUrlCode'];
domain = json['domain'];
linkType = json['linkType'];
hasOverride = json['hasOverride'];
productUrl = json['productUrl'];
trackingCode = json['trackingCode'];
skipAffiliateRedirect = json['skipAffiliateRedirect'];
createdUtc = JsonConverters.fromJson(json['createdUtc'],'DateTime',context!);
updatedUtc = JsonConverters.fromJson(json['updatedUtc'],'DateTime',context!);
notes = json['notes'];
createdUserTime = JsonConverters.fromJson(json['createdUserTime'],'DateTime',context!);
updatedUserTime = JsonConverters.fromJson(json['updatedUserTime'],'DateTime',context!);
tsid = json['tsid'];
group = json['group'];
username = json['username'];
jsonMetadata = json['jsonMetadata'];
jsonItemMetadata = json['jsonItemMetadata'];
jsonPostProcessingRules = json['jsonPostProcessingRules'];
jsonOverrides = json['jsonOverrides'];
totalClicks = JsonConverters.toDouble(json['totalClicks']);
advertiser = json['advertiser'];
advertiserId = json['advertiserId'];
percentChangePeriodOverPeriod = JsonConverters.toDouble(json['percentChangePeriodOverPeriod']);
previousPeriodTotalClicks = JsonConverters.toDouble(json['previousPeriodTotalClicks']);
isArchived = json['isArchived'];
isArchivedInt = json['isArchivedInt'];
fetchMetadata = json['fetchMetadata'];
productDisplayName1 = json['productDisplayName1'];
productDisplayName2 = json['productDisplayName2'];
productDisplayName3 = json['productDisplayName3'];
productArtworkThumbnailUrl = json['productArtworkThumbnailUrl'];
productArtworkThumbnailUrl100 = json['productArtworkThumbnailUrl100'];
advertiserIcon = json['advertiserIcon'];
advertiserIconCssClass = json['advertiserIconCssClass'];
isGenius = json['isGenius'];
advertiserIconTitle = json['advertiserIconTitle'];
trackingPixelIds = json['trackingPixelIds'];
applePreference = json['applePreference'];
aliases = JsonConverters.fromJson(json['aliases'],'List<ShortUrlAlias>',context!);
linkCreatorSetting = JsonConverters.fromJson(json['linkCreatorSetting'],'LinkCreatorOption',context!);
return this;
}
Map<String, dynamic> toJson() => {
'id': id,
'destinationUrl': destinationUrl,
'shortUrlCode': shortUrlCode,
'domain': domain,
'linkType': linkType,
'hasOverride': hasOverride,
'productUrl': productUrl,
'trackingCode': trackingCode,
'skipAffiliateRedirect': skipAffiliateRedirect,
'createdUtc': JsonConverters.toJson(createdUtc,'DateTime',context!),
'updatedUtc': JsonConverters.toJson(updatedUtc,'DateTime',context!),
'notes': notes,
'createdUserTime': JsonConverters.toJson(createdUserTime,'DateTime',context!),
'updatedUserTime': JsonConverters.toJson(updatedUserTime,'DateTime',context!),
'tsid': tsid,
'group': group,
'username': username,
'jsonMetadata': jsonMetadata,
'jsonItemMetadata': jsonItemMetadata,
'jsonPostProcessingRules': jsonPostProcessingRules,
'jsonOverrides': jsonOverrides,
'totalClicks': totalClicks,
'advertiser': advertiser,
'advertiserId': advertiserId,
'percentChangePeriodOverPeriod': percentChangePeriodOverPeriod,
'previousPeriodTotalClicks': previousPeriodTotalClicks,
'isArchived': isArchived,
'isArchivedInt': isArchivedInt,
'fetchMetadata': fetchMetadata,
'productDisplayName1': productDisplayName1,
'productDisplayName2': productDisplayName2,
'productDisplayName3': productDisplayName3,
'productArtworkThumbnailUrl': productArtworkThumbnailUrl,
'productArtworkThumbnailUrl100': productArtworkThumbnailUrl100,
'advertiserIcon': advertiserIcon,
'advertiserIconCssClass': advertiserIconCssClass,
'isGenius': isGenius,
'advertiserIconTitle': advertiserIconTitle,
'trackingPixelIds': trackingPixelIds,
'applePreference': applePreference,
'aliases': JsonConverters.toJson(aliases,'List<ShortUrlAlias>',context!),
'linkCreatorSetting': JsonConverters.toJson(linkCreatorSetting,'LinkCreatorOption',context!)
};
getTypeName() => "UserShortLink";
TypeContext? context = _ctx;
}
// @DataContract
class GetLinkMetadataResponse implements IConvertible
{
// @DataMember(Name="data")
UserShortLink? data;
// @DataMember(Name="responseStatus")
ResponseStatus? responseStatus;
GetLinkMetadataResponse({this.data,this.responseStatus});
GetLinkMetadataResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
data = JsonConverters.fromJson(json['data'],'UserShortLink',context!);
responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
return this;
}
Map<String, dynamic> toJson() => {
'data': JsonConverters.toJson(data,'UserShortLink',context!),
'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
};
getTypeName() => "GetLinkMetadataResponse";
TypeContext? context = _ctx;
}
// @DataContract
class GetLinkMetadataRequest implements IConvertible
{
// @DataMember(Name="domain")
String? domain;
// @DataMember(Name="code")
String? code;
GetLinkMetadataRequest({this.domain,this.code});
GetLinkMetadataRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
domain = json['aliasDomain'];
code = json['aliasCode'];
return this;
}
Map<String, dynamic> toJson() => {
'domain': domain,
'code': code
};
getTypeName() => "GetLinkMetadataRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'shortlinks_api.qa.platform.georiot.com', types: <String, TypeInfo> {
'ShortUrlAlias': TypeInfo(TypeOf.Class, create:() => ShortUrlAlias()),
'LinkCreatorOption': TypeInfo(TypeOf.Enum, enumValues:LinkCreatorOption.values),
'UserShortLink': TypeInfo(TypeOf.Class, create:() => UserShortLink()),
'List<ShortUrlAlias>': TypeInfo(TypeOf.Class, create:() => <ShortUrlAlias>[]),
'GetLinkMetadataResponse': TypeInfo(TypeOf.Class, create:() => GetLinkMetadataResponse()),
'GetLinkMetadataRequest': TypeInfo(TypeOf.Class, create:() => GetLinkMetadataRequest()),
});
Dart GetLinkMetadataRequest DTOs
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.
GET /v4/links/metadata HTTP/1.1 Host: shortlinks-api.qa.platform.georiot.com Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
data:
{
id: 0,
destinationUrl: String,
shortUrlCode: String,
domain: String,
linkType: NotSet,
hasOverride: False,
productUrl: String,
trackingCode: String,
skipAffiliateRedirect: False,
createdUtc: 0001-01-01,
updatedUtc: 0001-01-01,
notes: String,
createdUserTime: 0001-01-01,
updatedUserTime: 0001-01-01,
tsid: 0,
group: String,
username: String,
jsonMetadata: String,
jsonItemMetadata: String,
jsonPostProcessingRules: String,
jsonOverrides: String,
totalClicks: 0,
advertiser: String,
advertiserId: 0,
percentChangePeriodOverPeriod: 0,
previousPeriodTotalClicks: 0,
isArchived: 0,
isArchivedInt: 0,
fetchMetadata: False,
productDisplayName1: String,
productDisplayName2: String,
productDisplayName3: String,
productArtworkThumbnailUrl: String,
productArtworkThumbnailUrl100: String,
advertiserIcon: String,
advertiserIconCssClass: String,
isGenius: False,
advertiserIconTitle: String,
trackingPixelIds: String,
applePreference: 0,
aliases:
[
{
code: String,
domain: String,
baseCode: String,
lastUpdatedUtc: 0001-01-01
}
],
linkCreatorSetting: NotSet
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
}