ShortlinksAPI

<back to all web services

GetShortLinkMetadataRequest

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

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

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

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

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

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

// @DataContract
class GetShortLinkMetadataRequest implements IGetShortLinkMetadataRequest, IConvertible
{
    // @DataMember(Name="baseCode")
    String? baseCode;

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

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

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

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

Dart GetShortLinkMetadataRequest 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/{baseCode} 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
	}
}