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 .csv suffix or ?format=csv

HTTP + CSV

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/csv
HTTP/1.1 200 OK
Content-Type: text/csv
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"}}}