ReportingAPI

<back to all web services

PostLinkReportRequest

Requires Authentication
The following routes are available for this service:
POST/v4/report/links

// @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
{
    // @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); }
}

// @DataContract
export class PostLinkReportResponse implements IPostLinkReportResponse
{
    // @DataMember(Name="reports")
    public reports: Report[];

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

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

// @DataContract
export class PostLinkReportRequest implements IPostLinkReportRequest
{
    // @DataMember(Name="reports")
    public reports: ReportRequest[];

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

TypeScript PostLinkReportRequest 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.

POST /v4/report/links HTTP/1.1 
Host: reporting-api-zane.dev.platform.georiot.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	
}
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
		}
	}
}