Requires any of the roles: | SystemAdministrator, Manager, Customer |
POST | /notifications/{notificationId}/resend |
---|
<?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};
class EntityInfo implements JsonSerializable
{
public function __construct(
/** @description The ID of the object */
// @ApiMember(Description="The ID of the object")
/** @var string|null */
public ?string $id=null,
/** @description The date the object was created */
// @ApiMember(Description="The date the object was created")
/** @var string|null */
public ?string $dateCreated=null,
/** @description The date the object was last modified */
// @ApiMember(Description="The date the object was last modified")
/** @var string|null */
public ?string $dateLastModified=null,
/** @description The user that created this object */
// @ApiMember(Description="The user that created this object")
/** @var string|null */
public ?string $createdBy=null,
/** @description The user that last modified this object */
// @ApiMember(Description="The user that last modified this object")
/** @var string|null */
public ?string $lastModifiedBy=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['dateCreated'])) $this->dateCreated = $o['dateCreated'];
if (isset($o['dateLastModified'])) $this->dateLastModified = $o['dateLastModified'];
if (isset($o['createdBy'])) $this->createdBy = $o['createdBy'];
if (isset($o['lastModifiedBy'])) $this->lastModifiedBy = $o['lastModifiedBy'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->dateCreated)) $o['dateCreated'] = $this->dateCreated;
if (isset($this->dateLastModified)) $o['dateLastModified'] = $this->dateLastModified;
if (isset($this->createdBy)) $o['createdBy'] = $this->createdBy;
if (isset($this->lastModifiedBy)) $o['lastModifiedBy'] = $this->lastModifiedBy;
return empty($o) ? new class(){} : $o;
}
}
class CustomerBreadcrumb implements JsonSerializable
{
public function __construct(
/** @var string|null */
public ?string $id=null,
/** @var string|null */
public ?string $name=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['name'])) $this->name = $o['name'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->name)) $o['name'] = $this->name;
return empty($o) ? new class(){} : $o;
}
}
enum NotificationTypes : string
{
case Email = 'Email';
case Sms = 'Sms';
case Push = 'Push';
case IncomingCall = 'IncomingCall';
case OutgoingCall = 'OutgoingCall';
}
class NotificationRecipientInfo implements JsonSerializable
{
public function __construct(
/** @description The address of the recipient */
// @ApiMember(Description="The address of the recipient")
/** @var string|null */
public ?string $address=null,
/** @description Extra info about the recipient e.g. CC, BCC */
// @ApiMember(Description="Extra info about the recipient e.g. CC, BCC")
/** @var string|null */
public ?string $extra=null,
/** @description The name of the recipient */
// @ApiMember(Description="The name of the recipient")
/** @var string|null */
public ?string $name=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['address'])) $this->address = $o['address'];
if (isset($o['extra'])) $this->extra = $o['extra'];
if (isset($o['name'])) $this->name = $o['name'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->address)) $o['address'] = $this->address;
if (isset($this->extra)) $o['extra'] = $this->extra;
if (isset($this->name)) $o['name'] = $this->name;
return empty($o) ? new class(){} : $o;
}
}
enum FileTypes : string
{
case Upload = 'Upload';
case VoiceMessage = 'VoiceMessage';
case CallRecording = 'CallRecording';
case Fax = 'Fax';
case Attachment = 'Attachment';
case FaxOutgoing = 'FaxOutgoing';
}
class FileInfo extends EntityInfo implements JsonSerializable
{
/**
* @param string|null $id
* @param string|null $dateCreated
* @param string|null $dateLastModified
* @param string|null $createdBy
* @param string|null $lastModifiedBy
*/
public function __construct(
?string $id=null,
?string $dateCreated=null,
?string $dateLastModified=null,
?string $createdBy=null,
?string $lastModifiedBy=null,
/** @description The type of file this is */
// @ApiMember(Description="The type of file this is")
/** @var FileTypes|null */
public ?FileTypes $type=null,
/** @description The account ID this file is associated with */
// @ApiMember(Description="The account ID this file is associated with")
/** @var string|null */
public ?string $accountId=null,
/** @description The name of the account this file is associated with */
// @ApiMember(Description="The name of the account this file is associated with")
/** @var string|null */
public ?string $accountName=null,
/** @description The ID of the customer this file is associated with */
// @ApiMember(Description="The ID of the customer this file is associated with")
/** @var string|null */
public ?string $customerId=null,
/** @description The name of the customer this file is associated with */
// @ApiMember(Description="The name of the customer this file is associated with")
/** @var string|null */
public ?string $customerName=null,
/** @description The breadcrumb to the customer for this file */
// @ApiMember(Description="The breadcrumb to the customer for this file")
/** @var array<CustomerBreadcrumb>|null */
public ?array $customerBreadcrumb=null,
/** @description The ID of the user this file is assocaited with */
// @ApiMember(Description="The ID of the user this file is assocaited with")
/** @var string|null */
public ?string $userId=null,
/** @description The name of the user this file is associated with */
// @ApiMember(Description="The name of the user this file is associated with")
/** @var string|null */
public ?string $userName=null,
/** @description The original file name for the file */
// @ApiMember(Description="The original file name for the file")
/** @var string|null */
public ?string $fileName=null,
/** @description The URI of the file */
// @ApiMember(Description="The URI of the file")
/** @var string|null */
public ?string $uri=null,
/** @description The Content type of the file */
// @ApiMember(Description="The Content type of the file")
/** @var string|null */
public ?string $contentType=null,
/** @description The size of the file */
// @ApiMember(Description="The size of the file")
/** @var int */
public int $contentLength=0,
/** @description The Twilio ID of the recording */
// @ApiMember(Description="The Twilio ID of the recording")
/** @var string|null */
public ?string $recordingSid=null,
/** @description The duration of the recording in seconds */
// @ApiMember(Description="The duration of the recording in seconds")
/** @var int */
public int $recordingDuration=0,
/** @description Who is the recording from? */
// @ApiMember(Description="Who is the recording from?")
/** @var string|null */
public ?string $recordingFrom=null,
/** @description Transcription (if available) */
// @ApiMember(Description="Transcription (if available)")
/** @var string|null */
public ?string $transcription=null,
/** @description From Address (e.g. caller ID) for incoming calls */
// @ApiMember(Description="From Address (e.g. caller ID) for incoming calls")
/** @var string|null */
public ?string $fromAddress=null,
/** @description To Address (e.g. dialed number) for outgoing calls */
// @ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")
/** @var string|null */
public ?string $toAddress=null,
/** @description The AI transcription for this call */
// @ApiMember(Description="The AI transcription for this call")
/** @var string|null */
public ?string $aiTranscription=null
) {
parent::__construct($id,$dateCreated,$dateLastModified,$createdBy,$lastModifiedBy);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['type'])) $this->type = JsonConverters::from('FileTypes', $o['type']);
if (isset($o['accountId'])) $this->accountId = $o['accountId'];
if (isset($o['accountName'])) $this->accountName = $o['accountName'];
if (isset($o['customerId'])) $this->customerId = $o['customerId'];
if (isset($o['customerName'])) $this->customerName = $o['customerName'];
if (isset($o['customerBreadcrumb'])) $this->customerBreadcrumb = JsonConverters::fromArray('CustomerBreadcrumb', $o['customerBreadcrumb']);
if (isset($o['userId'])) $this->userId = $o['userId'];
if (isset($o['userName'])) $this->userName = $o['userName'];
if (isset($o['fileName'])) $this->fileName = $o['fileName'];
if (isset($o['uri'])) $this->uri = $o['uri'];
if (isset($o['contentType'])) $this->contentType = $o['contentType'];
if (isset($o['contentLength'])) $this->contentLength = $o['contentLength'];
if (isset($o['recordingSid'])) $this->recordingSid = $o['recordingSid'];
if (isset($o['recordingDuration'])) $this->recordingDuration = $o['recordingDuration'];
if (isset($o['recordingFrom'])) $this->recordingFrom = $o['recordingFrom'];
if (isset($o['transcription'])) $this->transcription = $o['transcription'];
if (isset($o['fromAddress'])) $this->fromAddress = $o['fromAddress'];
if (isset($o['toAddress'])) $this->toAddress = $o['toAddress'];
if (isset($o['aiTranscription'])) $this->aiTranscription = $o['aiTranscription'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->type)) $o['type'] = JsonConverters::to('FileTypes', $this->type);
if (isset($this->accountId)) $o['accountId'] = $this->accountId;
if (isset($this->accountName)) $o['accountName'] = $this->accountName;
if (isset($this->customerId)) $o['customerId'] = $this->customerId;
if (isset($this->customerName)) $o['customerName'] = $this->customerName;
if (isset($this->customerBreadcrumb)) $o['customerBreadcrumb'] = JsonConverters::toArray('CustomerBreadcrumb', $this->customerBreadcrumb);
if (isset($this->userId)) $o['userId'] = $this->userId;
if (isset($this->userName)) $o['userName'] = $this->userName;
if (isset($this->fileName)) $o['fileName'] = $this->fileName;
if (isset($this->uri)) $o['uri'] = $this->uri;
if (isset($this->contentType)) $o['contentType'] = $this->contentType;
if (isset($this->contentLength)) $o['contentLength'] = $this->contentLength;
if (isset($this->recordingSid)) $o['recordingSid'] = $this->recordingSid;
if (isset($this->recordingDuration)) $o['recordingDuration'] = $this->recordingDuration;
if (isset($this->recordingFrom)) $o['recordingFrom'] = $this->recordingFrom;
if (isset($this->transcription)) $o['transcription'] = $this->transcription;
if (isset($this->fromAddress)) $o['fromAddress'] = $this->fromAddress;
if (isset($this->toAddress)) $o['toAddress'] = $this->toAddress;
if (isset($this->aiTranscription)) $o['aiTranscription'] = $this->aiTranscription;
return empty($o) ? new class(){} : $o;
}
}
class NotificationInfo extends EntityInfo implements JsonSerializable
{
/**
* @param string|null $id
* @param string|null $dateCreated
* @param string|null $dateLastModified
* @param string|null $createdBy
* @param string|null $lastModifiedBy
*/
public function __construct(
?string $id=null,
?string $dateCreated=null,
?string $dateLastModified=null,
?string $createdBy=null,
?string $lastModifiedBy=null,
/** @description The account ID this endpoint is associated with */
// @ApiMember(Description="The account ID this endpoint is associated with")
/** @var string|null */
public ?string $accountId=null,
/** @description The name of the account this endpoint is associated with */
// @ApiMember(Description="The name of the account this endpoint is associated with")
/** @var string|null */
public ?string $accountName=null,
/** @description The ID of the customer this endpoint is associated with */
// @ApiMember(Description="The ID of the customer this endpoint is associated with")
/** @var string|null */
public ?string $customerId=null,
/** @description The name of the customer this endpoint is associated with */
// @ApiMember(Description="The name of the customer this endpoint is associated with")
/** @var string|null */
public ?string $customerName=null,
/** @description The breadcrumb to the customer for this endpoint */
// @ApiMember(Description="The breadcrumb to the customer for this endpoint")
/** @var array<CustomerBreadcrumb>|null */
public ?array $customerBreadcrumb=null,
/** @description The type of notification */
// @ApiMember(Description="The type of notification")
/** @var NotificationTypes|null */
public ?NotificationTypes $type=null,
/** @description The subject of the notification */
// @ApiMember(Description="The subject of the notification")
/** @var string|null */
public ?string $subject=null,
/** @description The body of the notification */
// @ApiMember(Description="The body of the notification")
/** @var string|null */
public ?string $body=null,
/** @description The recipients of this notification */
// @ApiMember(Description="The recipients of this notification")
/** @var array<NotificationRecipientInfo>|null */
public ?array $recipients=null,
/** @description The list of attachments */
// @ApiMember(Description="The list of attachments")
/** @var array<FileInfo>|null */
public ?array $attachments=null,
/** @description The original from for the session */
// @ApiMember(Description="The original from for the session")
/** @var string|null */
public ?string $from=null,
/** @description The original To for the session */
// @ApiMember(Description="The original To for the session")
/** @var string|null */
public ?string $to=null,
/** @description Was there an error? */
// @ApiMember(Description="Was there an error?")
/** @var bool|null */
public ?bool $error=null,
/** @description The error message */
// @ApiMember(Description="The error message")
/** @var string|null */
public ?string $errorMessage=null
) {
parent::__construct($id,$dateCreated,$dateLastModified,$createdBy,$lastModifiedBy);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['accountId'])) $this->accountId = $o['accountId'];
if (isset($o['accountName'])) $this->accountName = $o['accountName'];
if (isset($o['customerId'])) $this->customerId = $o['customerId'];
if (isset($o['customerName'])) $this->customerName = $o['customerName'];
if (isset($o['customerBreadcrumb'])) $this->customerBreadcrumb = JsonConverters::fromArray('CustomerBreadcrumb', $o['customerBreadcrumb']);
if (isset($o['type'])) $this->type = JsonConverters::from('NotificationTypes', $o['type']);
if (isset($o['subject'])) $this->subject = $o['subject'];
if (isset($o['body'])) $this->body = $o['body'];
if (isset($o['recipients'])) $this->recipients = JsonConverters::fromArray('NotificationRecipientInfo', $o['recipients']);
if (isset($o['attachments'])) $this->attachments = JsonConverters::fromArray('FileInfo', $o['attachments']);
if (isset($o['from'])) $this->from = $o['from'];
if (isset($o['to'])) $this->to = $o['to'];
if (isset($o['error'])) $this->error = $o['error'];
if (isset($o['errorMessage'])) $this->errorMessage = $o['errorMessage'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->accountId)) $o['accountId'] = $this->accountId;
if (isset($this->accountName)) $o['accountName'] = $this->accountName;
if (isset($this->customerId)) $o['customerId'] = $this->customerId;
if (isset($this->customerName)) $o['customerName'] = $this->customerName;
if (isset($this->customerBreadcrumb)) $o['customerBreadcrumb'] = JsonConverters::toArray('CustomerBreadcrumb', $this->customerBreadcrumb);
if (isset($this->type)) $o['type'] = JsonConverters::to('NotificationTypes', $this->type);
if (isset($this->subject)) $o['subject'] = $this->subject;
if (isset($this->body)) $o['body'] = $this->body;
if (isset($this->recipients)) $o['recipients'] = JsonConverters::toArray('NotificationRecipientInfo', $this->recipients);
if (isset($this->attachments)) $o['attachments'] = JsonConverters::toArray('FileInfo', $this->attachments);
if (isset($this->from)) $o['from'] = $this->from;
if (isset($this->to)) $o['to'] = $this->to;
if (isset($this->error)) $o['error'] = $this->error;
if (isset($this->errorMessage)) $o['errorMessage'] = $this->errorMessage;
return empty($o) ? new class(){} : $o;
}
}
class ResendNotification implements JsonSerializable
{
public function __construct(
/** @description The ID of the notification to resend */
// @ApiMember(Description="The ID of the notification to resend")
/** @var string|null */
public ?string $notificationId=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['notificationId'])) $this->notificationId = $o['notificationId'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->notificationId)) $o['notificationId'] = $this->notificationId;
return empty($o) ? new class(){} : $o;
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /notifications/{notificationId}/resend HTTP/1.1
Host: team.evovoice.io
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
notificationId: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { accountId: String, accountName: String, customerId: String, customerName: String, customerBreadcrumb: [ { id: String, name: String } ], type: Email, subject: String, body: String, recipients: [ { address: String, extra: String, name: String } ], attachments: [ { type: Upload, accountId: String, accountName: String, customerId: String, customerName: String, customerBreadcrumb: [ { id: String, name: String } ], userId: String, userName: String, fileName: String, uri: String, contentType: String, contentLength: 0, recordingSid: String, recordingDuration: 0, recordingFrom: String, transcription: String, fromAddress: String, toAddress: String, aiTranscription: String, id: String, dateCreated: String, dateLastModified: String, createdBy: String, lastModifiedBy: String } ], from: String, to: String, error: False, errorMessage: String, id: String, dateCreated: String, dateLastModified: String, createdBy: String, lastModifiedBy: String }