| GET | /v4/links | ||
|---|---|---|---|
| GET | /v4/links/{Id} |
<?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};
// @DataContract
class V4BaseRequest implements JsonSerializable
{
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class V4BaseResponse implements JsonSerializable
{
public function __construct(
// @DataMember(Name="status")
/** @var ResponseStatus|null */
public ?ResponseStatus $status=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['status'])) $this->status = JsonConverters::from('ResponseStatus', $o['status']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->status)) $o['status'] = JsonConverters::to('ResponseStatus', $this->status);
return empty($o) ? new class(){} : $o;
}
}
enum LinkType : string
{
case None = 'None';
case Simple = 'Simple';
case Split = 'Split';
case Interstitial = 'Interstitial';
case Advanced = 'Advanced';
case Collection = 'Collection';
}
class RefreshableMetadata implements IRefreshableMetadata, JsonSerializable
{
public function __construct(
/** @var DateTime */
public DateTime $createdDate=new DateTime(),
/** @var DateTime */
public DateTime $updatedDate=new DateTime()
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['createdDate'])) $this->createdDate = JsonConverters::from('DateTime', $o['createdDate']);
if (isset($o['updatedDate'])) $this->updatedDate = JsonConverters::from('DateTime', $o['updatedDate']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->createdDate)) $o['createdDate'] = JsonConverters::to('DateTime', $this->createdDate);
if (isset($this->updatedDate)) $o['updatedDate'] = JsonConverters::to('DateTime', $this->updatedDate);
return empty($o) ? new class(){} : $o;
}
}
class VersionedRefreshableMetadata extends RefreshableMetadata implements JsonSerializable
{
/**
* @param DateTime $createdDate
* @param DateTime $updatedDate
*/
public function __construct(
DateTime $createdDate=new DateTime(),
DateTime $updatedDate=new DateTime(),
/** @var DateTime */
public DateTime $versionCreatedDate=new DateTime()
) {
parent::__construct($createdDate,$updatedDate);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['versionCreatedDate'])) $this->versionCreatedDate = JsonConverters::from('DateTime', $o['versionCreatedDate']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->versionCreatedDate)) $o['versionCreatedDate'] = JsonConverters::to('DateTime', $this->versionCreatedDate);
return empty($o) ? new class(){} : $o;
}
}
/**
* @property string|null $url
* @property string|null $baseCode
* @property LinkType $linkType
* @property string|null $typeDefinitionPublicId
* @property VersionedRefreshableMetadata|null $metadata
*/
interface IUserLink
{
}
// @DataContract
class GetUserLinkResponse extends V4BaseResponse implements IGetUserLinkResponse, JsonSerializable
{
/**
* @param ResponseStatus|null $status
*/
public function __construct(
?ResponseStatus $status=null,
// @DataMember(Name="data")
/** @var IUserLink|null */
public ?IUserLink $data=null
) {
parent::__construct($status);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['data'])) $this->data = JsonConverters::from('IUserLink', $o['data']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->data)) $o['data'] = JsonConverters::to('IUserLink', $this->data);
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class GetUserLinkRequest extends V4BaseRequest implements JsonSerializable
{
public function __construct(
// @DataMember(Name="id")
/** @var string|null */
public ?string $id=null,
// @DataMember(Name="username")
/** @var string|null */
public ?string $username=null,
// @DataMember(Name="groupId")
/** @var int */
public int $groupId=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['username'])) $this->username = $o['username'];
if (isset($o['groupId'])) $this->groupId = $o['groupId'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->username)) $o['username'] = $this->username;
if (isset($this->groupId)) $o['groupId'] = $this->groupId;
return empty($o) ? new class(){} : $o;
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v4/links HTTP/1.1 Host: shortlinks-api.qa.platform.georiot.com Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"status":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}