Booklinker.API

<back to all web services

GetLinkReportRequest

Requires Authentication
The following routes are available for this service:
GET/v1/links/report

// @DataContract
export class Item
{
    // @DataMember(Name="id")
    public id: string;

    // @DataMember(Name="displayName")
    public displayName: string;

    public constructor(init?: Partial<Item>) { (Object as any).assign(this, init); }
}

// @DataContract
export class ReportData
{
    // @DataMember(Name="id")
    public id: string;

    // @DataMember(Name="item")
    public item: Item;

    // @DataMember(Name="totalClicks")
    public totalClicks: number;

    // @DataMember(Name="clicks")
    public clicks: number;

    // @DataMember(Name="junkClicks")
    public junkClicks: number;

    // @DataMember(Name="spiderClicks")
    public spiderClicks: number;

    // @DataMember(Name="dateUtc")
    public dateUtc: string;

    public constructor(init?: Partial<ReportData>) { (Object as any).assign(this, init); }
}

// @DataContract
export class Error
{
    // @DataMember(Name="code")
    public code: string;

    public constructor(init?: Partial<Error>) { (Object as any).assign(this, init); }
}

export enum GroupBy
{
    Default = 'Default',
    Retailer = 'Retailer',
    Date = 'Date',
}

export enum ReportType
{
    ShortUrl = 'ShortUrl',
    Group = 'Group',
    User = 'User',
}

// @DataContract
export class ReportRequest
{
    // @DataMember(Name="items")
    public items: string[];

    // @DataMember(Name="groupBy")
    public groupBy: GroupBy[];

    // @DataMember(Name="attribute")
    public attribute: string;

    // @DataMember(Name="type")
    public type: ReportType;

    // @DataMember(Name="fromStartUtcInclusive")
    public fromStartUtcInclusive: string;

    // @DataMember(Name="fromEndUtcInclusive")
    public fromEndUtcInclusive: string;

    // @DataMember(Name="retailers")
    public retailers: string[];

    public constructor(init?: Partial<ReportRequest>) { (Object as any).assign(this, init); }
}

// @DataContract
export class Report extends Report
{

    public constructor(init?: Partial<Report>) { super(init); (Object as any).assign(this, init); }
}

// @DataContract
export class ClickReport
{
    // @DataMember(Name="code")
    public code: string;

    // @DataMember(Name="reports")
    public reports: { [index:string]: Report; };

    // @DataMember(Name="totalClicks")
    public totalClicks: number;

    public constructor(init?: Partial<ClickReport>) { (Object as any).assign(this, init); }
}

// @DataContract
export class GetLinkReportResponse
{
    // @DataMember(Name="reports")
    public reports: ClickReport;

    // @DataMember(Name="responseStatus")
    public responseStatus: ResponseStatus;

    public constructor(init?: Partial<GetLinkReportResponse>) { (Object as any).assign(this, init); }
}

// @DataContract
export class GetLinkReportRequest
{
    // @DataMember(Name="baseCode")
    public baseCode: string;

    public constructor(init?: Partial<GetLinkReportRequest>) { (Object as any).assign(this, init); }
}

// @DataContract
export class Report
{
    // @DataMember(Name="data")
    public data: ReportData[];

    // @DataMember(Name="executionTimeMs")
    public executionTimeMs: number;

    // @DataMember(Name="totalItems")
    public totalItems: number;

    // @DataMember(Name="errors")
    public errors: Error[];

    // @DataMember(Name="request")
    public request: ReportRequest;

    // @DataMember(Name="totalClicks")
    public totalClicks: number;

    public constructor(init?: Partial<Report>) { (Object as any).assign(this, init); }
}

TypeScript GetLinkReportRequest 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 /v1/links/report HTTP/1.1 
Host: api.booklinker.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
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-01
					}
				],
				executionTimeMs: 0,
				totalItems: 1,
				errors: 
				[
					{
						
					}
				],
				request: 
				{
					attribute: String,
					type: ShortUrl,
					fromStartUtcInclusive: 0001-01-01,
					fromEndUtcInclusive: 0001-01-01
				},
				totalClicks: 0
			}
		},
		totalClicks: 0
	},
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}