ShortlinksAPI

<back to all web services

GetShortLinksMetadataRequest

Requires Authentication
The following routes are available for this service:
GET/v4/links/metadata/list
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 GetShortLinksMetadataResponse implements IGetShortLinksMetadataResponse, IConvertible
{
    // @DataMember(Name="responseStatus")
    ResponseStatus? responseStatus;

    // @DataMember(Name="data")
    List<UserShortLink>? data;

    GetShortLinksMetadataResponse({this.responseStatus,this.data});
    GetShortLinksMetadataResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        data = JsonConverters.fromJson(json['data'],'List<UserShortLink>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!),
        'data': JsonConverters.toJson(data,'List<UserShortLink>',context!)
    };

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

// @DataContract
class GetShortLinksMetadataRequest implements IGetShortLinksMetadataRequest, IConvertible
{
    // @DataMember(Name="ids")
    List<String>? ids;

    GetShortLinksMetadataRequest({this.ids});
    GetShortLinksMetadataRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ids = JsonConverters.fromJson(json['ids'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ids': JsonConverters.toJson(ids,'List<String>',context!)
    };

    getTypeName() => "GetShortLinksMetadataRequest";
    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>[]),
    'GetShortLinksMetadataResponse': TypeInfo(TypeOf.Class, create:() => GetShortLinksMetadataResponse()),
    'List<UserShortLink>': TypeInfo(TypeOf.Class, create:() => <UserShortLink>[]),
    'GetShortLinksMetadataRequest': TypeInfo(TypeOf.Class, create:() => GetShortLinksMetadataRequest()),
});

Dart GetShortLinksMetadataRequest 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.

GET /v4/links/metadata/list 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

{
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	},
	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
		}
	]
}