| POST | /v4/report/links | ||
|---|---|---|---|
| POST | /v3.5/report/links |
<?php namespace dtos;
use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};
enum GroupBy : string
{
case Default = 'Default';
case Retailer = 'Retailer';
case Date = 'Date';
}
enum ReportType : string
{
case ShortUrl = 'ShortUrl';
case Group = 'Group';
case User = 'User';
}
// @DataContract
class ReportRequest implements JsonSerializable
{
public function __construct(
// @DataMember(Name="items")
/** @var array<string>|null */
public ?array $items=null,
// @DataMember(Name="groupBy")
/** @var array<GroupBy>|null */
public ?array $groupBy=null,
// @DataMember(Name="attribute")
/** @var string|null */
public ?string $attribute=null,
// @DataMember(Name="type")
/** @var ReportType|null */
public ?ReportType $type=null,
// @DataMember(Name="fromStartUtcInclusive")
/** @var DateTime */
public DateTime $fromStartUtcInclusive=new DateTime(),
// @DataMember(Name="fromEndUtcInclusive")
/** @var DateTime */
public DateTime $fromEndUtcInclusive=new DateTime(),
// @DataMember(Name="retailers")
/** @var array<string>|null */
public ?array $retailers=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['items'])) $this->items = JsonConverters::fromArray('string', $o['items']);
if (isset($o['groupBy'])) $this->groupBy = JsonConverters::fromArray('GroupBy', $o['groupBy']);
if (isset($o['attribute'])) $this->attribute = $o['attribute'];
if (isset($o['type'])) $this->type = JsonConverters::from('ReportType', $o['type']);
if (isset($o['fromStartUtcInclusive'])) $this->fromStartUtcInclusive = JsonConverters::from('DateTime', $o['fromStartUtcInclusive']);
if (isset($o['fromEndUtcInclusive'])) $this->fromEndUtcInclusive = JsonConverters::from('DateTime', $o['fromEndUtcInclusive']);
if (isset($o['retailers'])) $this->retailers = JsonConverters::fromArray('string', $o['retailers']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->items)) $o['items'] = JsonConverters::toArray('string', $this->items);
if (isset($this->groupBy)) $o['groupBy'] = JsonConverters::toArray('GroupBy', $this->groupBy);
if (isset($this->attribute)) $o['attribute'] = $this->attribute;
if (isset($this->type)) $o['type'] = JsonConverters::to('ReportType', $this->type);
if (isset($this->fromStartUtcInclusive)) $o['fromStartUtcInclusive'] = JsonConverters::to('DateTime', $this->fromStartUtcInclusive);
if (isset($this->fromEndUtcInclusive)) $o['fromEndUtcInclusive'] = JsonConverters::to('DateTime', $this->fromEndUtcInclusive);
if (isset($this->retailers)) $o['retailers'] = JsonConverters::toArray('string', $this->retailers);
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class PostLinkReportRequest implements JsonSerializable
{
public function __construct(
// @DataMember(Name="reports")
/** @var array<ReportRequest>|null */
public ?array $reports=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['reports'])) $this->reports = JsonConverters::fromArray('ReportRequest', $o['reports']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->reports)) $o['reports'] = JsonConverters::toArray('ReportRequest', $this->reports);
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class Item implements JsonSerializable
{
public function __construct(
// @DataMember(Name="id")
/** @var string|null */
public ?string $id=null,
// @DataMember(Name="displayName")
/** @var string|null */
public ?string $displayName=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['displayName'])) $this->displayName = $o['displayName'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->displayName)) $o['displayName'] = $this->displayName;
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class ReportData implements JsonSerializable
{
public function __construct(
// @DataMember(Name="id")
/** @var string|null */
public ?string $id=null,
// @DataMember(Name="item")
/** @var Item|null */
public ?Item $item=null,
// @DataMember(Name="totalClicks")
/** @var int */
public int $totalClicks=0,
// @DataMember(Name="clicks")
/** @var int */
public int $clicks=0,
// @DataMember(Name="junkClicks")
/** @var int */
public int $junkClicks=0,
// @DataMember(Name="spiderClicks")
/** @var int */
public int $spiderClicks=0,
// @DataMember(Name="dateUtc")
/** @var DateTime */
public DateTime $dateUtc=new DateTime()
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['item'])) $this->item = JsonConverters::from('Item', $o['item']);
if (isset($o['totalClicks'])) $this->totalClicks = $o['totalClicks'];
if (isset($o['clicks'])) $this->clicks = $o['clicks'];
if (isset($o['junkClicks'])) $this->junkClicks = $o['junkClicks'];
if (isset($o['spiderClicks'])) $this->spiderClicks = $o['spiderClicks'];
if (isset($o['dateUtc'])) $this->dateUtc = JsonConverters::from('DateTime', $o['dateUtc']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->item)) $o['item'] = JsonConverters::to('Item', $this->item);
if (isset($this->totalClicks)) $o['totalClicks'] = $this->totalClicks;
if (isset($this->clicks)) $o['clicks'] = $this->clicks;
if (isset($this->junkClicks)) $o['junkClicks'] = $this->junkClicks;
if (isset($this->spiderClicks)) $o['spiderClicks'] = $this->spiderClicks;
if (isset($this->dateUtc)) $o['dateUtc'] = JsonConverters::to('DateTime', $this->dateUtc);
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class Error implements JsonSerializable
{
public function __construct(
// @DataMember(Name="code")
/** @var string|null */
public ?string $code=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['code'])) $this->code = $o['code'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->code)) $o['code'] = $this->code;
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class Report implements JsonSerializable
{
public function __construct(
// @DataMember(Name="data")
/** @var array<ReportData>|null */
public ?array $data=null,
// @DataMember(Name="executionTimeMs")
/** @var int */
public int $executionTimeMs=0,
// @DataMember(Name="totalItems")
/** @var int */
public int $totalItems=0,
// @DataMember(Name="errors")
/** @var array<Error>|null */
public ?array $errors=null,
// @DataMember(Name="request")
/** @var ReportRequest|null */
public ?ReportRequest $request=null,
// @DataMember(Name="totalClicks")
/** @var int */
public int $totalClicks=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['data'])) $this->data = JsonConverters::fromArray('ReportData', $o['data']);
if (isset($o['executionTimeMs'])) $this->executionTimeMs = $o['executionTimeMs'];
if (isset($o['totalItems'])) $this->totalItems = $o['totalItems'];
if (isset($o['errors'])) $this->errors = JsonConverters::fromArray('Error', $o['errors']);
if (isset($o['request'])) $this->request = JsonConverters::from('ReportRequest', $o['request']);
if (isset($o['totalClicks'])) $this->totalClicks = $o['totalClicks'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->data)) $o['data'] = JsonConverters::toArray('ReportData', $this->data);
if (isset($this->executionTimeMs)) $o['executionTimeMs'] = $this->executionTimeMs;
if (isset($this->totalItems)) $o['totalItems'] = $this->totalItems;
if (isset($this->errors)) $o['errors'] = JsonConverters::toArray('Error', $this->errors);
if (isset($this->request)) $o['request'] = JsonConverters::to('ReportRequest', $this->request);
if (isset($this->totalClicks)) $o['totalClicks'] = $this->totalClicks;
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class PostLinkReportResponse implements JsonSerializable
{
public function __construct(
// @DataMember(Name="responseStatus")
/** @var ResponseStatus|null */
public ?ResponseStatus $responseStatus=null,
// @DataMember(Name="reports")
/** @var array<Report>|null */
public ?array $reports=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['responseStatus'])) $this->responseStatus = JsonConverters::from('ResponseStatus', $o['responseStatus']);
if (isset($o['reports'])) $this->reports = JsonConverters::fromArray('Report', $o['reports']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->responseStatus)) $o['responseStatus'] = JsonConverters::to('ResponseStatus', $this->responseStatus);
if (isset($this->reports)) $o['reports'] = JsonConverters::toArray('Report', $this->reports);
return empty($o) ? new class(){} : $o;
}
}
PHP PostLinkReportRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
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: geniuslink-api-zane.dev.platform.georiot.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<PostLinkReportRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Reporting.Requests">
<reports xmlns:d2p1="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Reporting.DTOs" i:nil="true" />
</PostLinkReportRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<PostLinkReportResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Reporting.Responses">
<reports xmlns:d2p1="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Reporting.DTOs" i:nil="true" />
<responseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:Message>String</d2p1:Message>
<d2p1:StackTrace>String</d2p1:StackTrace>
<d2p1:Errors>
<d2p1:ResponseError>
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:FieldName>String</d2p1:FieldName>
<d2p1:Message>String</d2p1:Message>
<d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:KeyValueOfstringstring>
<d5p1:Key>String</d5p1:Key>
<d5p1:Value>String</d5p1:Value>
</d5p1:KeyValueOfstringstring>
</d2p1:Meta>
</d2p1:ResponseError>
</d2p1:Errors>
<d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:KeyValueOfstringstring>
<d3p1:Key>String</d3p1:Key>
<d3p1:Value>String</d3p1:Value>
</d3p1:KeyValueOfstringstring>
</d2p1:Meta>
</responseStatus>
</PostLinkReportResponse>