| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid} | ||
|---|---|---|---|
| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid}/page/{PageNumber} | ||
| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*} | ||
| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/page/{PageNumber} | ||
| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/search/{SearchTerm} | ||
| GET | /{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/search/{SearchTerm}/page/{PageNumber} |
<?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 Brand : string
{
case Desktop = 'Desktop';
case Hp = 'Hp';
case Kyocera = 'Kyocera';
case NeaScan = 'NeaScan';
case Samsung = 'Samsung';
case FujiXerox = 'FujiXerox';
case Ta = 'Ta';
case Utax = 'Utax';
case Epson = 'Epson';
case ScanFront400 = 'ScanFront400';
case Sharp = 'Sharp';
case Ricoh = 'Ricoh';
case FujiFilm = 'FujiFilm';
}
class DtoBase implements JsonSerializable
{
public function __construct(
/** @var Brand|null */
public ?Brand $Brand=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Brand'])) $this->Brand = JsonConverters::from('Brand', $o['Brand']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Brand)) $o['Brand'] = JsonConverters::to('Brand', $this->Brand);
return empty($o) ? new class(){} : $o;
}
}
class RequestBase extends DtoBase implements JsonSerializable
{
/**
* @param Brand|null $Brand
*/
public function __construct(
?Brand $Brand=null
) {
parent::__construct($Brand);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
return empty($o) ? new class(){} : $o;
}
}
class QuestionRequestDto extends RequestBase implements JsonSerializable
{
/**
* @param Brand|null $Brand
*/
public function __construct(
?Brand $Brand=null,
/** @var string|null */
public ?string $TemplateGuid=null,
/** @var string|null */
public ?string $QuestionGuid=null,
/** @var string|null */
public ?string $Parent=null,
/** @var string|null */
public ?string $FolderBrowser=null
) {
parent::__construct($Brand);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['TemplateGuid'])) $this->TemplateGuid = $o['TemplateGuid'];
if (isset($o['QuestionGuid'])) $this->QuestionGuid = $o['QuestionGuid'];
if (isset($o['Parent'])) $this->Parent = $o['Parent'];
if (isset($o['FolderBrowser'])) $this->FolderBrowser = $o['FolderBrowser'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->TemplateGuid)) $o['TemplateGuid'] = $this->TemplateGuid;
if (isset($this->QuestionGuid)) $o['QuestionGuid'] = $this->QuestionGuid;
if (isset($this->Parent)) $o['Parent'] = $this->Parent;
if (isset($this->FolderBrowser)) $o['FolderBrowser'] = $this->FolderBrowser;
return empty($o) ? new class(){} : $o;
}
}
class GetQuestion extends QuestionRequestDto implements JsonSerializable
{
/**
* @param Brand|null $Brand
* @param string|null $TemplateGuid
* @param string|null $QuestionGuid
* @param string|null $Parent
* @param string|null $FolderBrowser
*/
public function __construct(
?Brand $Brand=null,
?string $TemplateGuid=null,
?string $QuestionGuid=null,
?string $Parent=null,
?string $FolderBrowser=null,
/** @var string|null */
public ?string $ParsedRoot=null,
/** @var string|null */
public ?string $SearchTerm=null,
/** @var int */
public int $PageNumber=0
) {
parent::__construct($Brand,$TemplateGuid,$QuestionGuid,$Parent,$FolderBrowser);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['ParsedRoot'])) $this->ParsedRoot = $o['ParsedRoot'];
if (isset($o['SearchTerm'])) $this->SearchTerm = $o['SearchTerm'];
if (isset($o['PageNumber'])) $this->PageNumber = $o['PageNumber'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->ParsedRoot)) $o['ParsedRoot'] = $this->ParsedRoot;
if (isset($this->SearchTerm)) $o['SearchTerm'] = $this->SearchTerm;
if (isset($this->PageNumber)) $o['PageNumber'] = $this->PageNumber;
return empty($o) ? new class(){} : $o;
}
}
class ResponseBase extends DtoBase implements JsonSerializable
{
/**
* @param Brand|null $Brand
*/
public function __construct(
?Brand $Brand=null,
/** @var string|null */
public ?string $SelectedUiLanguage=null,
/** @var string|null */
public ?string $svSession=null,
/** @var string|null */
public ?string $Title=null,
/** @var string|null */
public ?string $PageTip=null,
/** @var bool|null */
public ?bool $NewBrowser=null,
/** @var bool|null */
public ?bool $ScanFront400TA=null,
/** @var bool|null */
public ?bool $ScanFront400UTAX=null
) {
parent::__construct($Brand);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['SelectedUiLanguage'])) $this->SelectedUiLanguage = $o['SelectedUiLanguage'];
if (isset($o['svSession'])) $this->svSession = $o['svSession'];
if (isset($o['Title'])) $this->Title = $o['Title'];
if (isset($o['PageTip'])) $this->PageTip = $o['PageTip'];
if (isset($o['NewBrowser'])) $this->NewBrowser = $o['NewBrowser'];
if (isset($o['ScanFront400TA'])) $this->ScanFront400TA = $o['ScanFront400TA'];
if (isset($o['ScanFront400UTAX'])) $this->ScanFront400UTAX = $o['ScanFront400UTAX'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->SelectedUiLanguage)) $o['SelectedUiLanguage'] = $this->SelectedUiLanguage;
if (isset($this->svSession)) $o['svSession'] = $this->svSession;
if (isset($this->Title)) $o['Title'] = $this->Title;
if (isset($this->PageTip)) $o['PageTip'] = $this->PageTip;
if (isset($this->NewBrowser)) $o['NewBrowser'] = $this->NewBrowser;
if (isset($this->ScanFront400TA)) $o['ScanFront400TA'] = $this->ScanFront400TA;
if (isset($this->ScanFront400UTAX)) $o['ScanFront400UTAX'] = $this->ScanFront400UTAX;
return empty($o) ? new class(){} : $o;
}
}
/**
* @property string|null $Guid
* @property DateTime $TemplateModificationDateTime
* @property DateTime $IconModificationDateTime
*/
interface ITemplateModificationInfo
{
}
/**
* @property string|null $QuestionGuid
* @property string|null $ValueDisplayed
* @property string|null $ValueReturned
* @property bool $Answered
* @property bool $RegexMatches
* @property string|null $RegexHint
*/
interface IClientQuestion extends ITemplateQuestion
{
}
enum TemplateType : string
{
case Workflow = 'Workflow';
case FreeForm = 'FreeForm';
}
enum TemplateScheduleType : string
{
case Interval = 'Interval';
case Fixed = 'Fixed';
}
/**
* @property DateInterval|null $Time
* @property DateInterval|null $EndTime
* @property bool|null $NoEndTime
* @property TemplateScheduleType|null $Type
*/
interface ITemplateSchedule extends IInterface
{
}
/**
* @property string|null $Username
* @property string|null $Password
*/
interface ICredentials extends IInterface
{
}
/**
* @property int|null $RejectAfter
* @property string|null $RejectionPath
* @property ICredentials|null $ShareCredentials
*/
interface IRejection
{
}
/**
* @property string|null $RejectionPath
* @property ICredentials|null $ShareCredentials
*/
interface IBadDocumentRejection extends IStatus
{
}
enum PdfLoadResolution : string
{
case Default = 'Default';
case Dpi100 = 'Dpi100';
case Dpi150 = 'Dpi150';
case Dpi200 = 'Dpi200';
case Dpi300 = 'Dpi300';
case Dpi400 = 'Dpi400';
case Dpi500 = 'Dpi500';
case Dpi600 = 'Dpi600';
}
/**
* @property string|null $Name
* @property string|null $Description
* @property string|null $Icon
* @property ITemplateSchedule|null $Schedule
* @property IRejection|null $Rejection
* @property IBadDocumentRejection|null $BadDocumentRejection
* @property PdfLoadResolution|null $PdfLoadResolution
*/
interface IGeneral extends IInterface
{
}
interface ICaptureSource extends IStatus
{
}
/**
* @property ReadOnlyCollection<ICaptureSource>|null $CaptureSources
*/
interface ICapture extends IInterface
{
}
/**
* @property bool|null $IsSecure
* @property string|null $SampleValue
* @property string|null $Value
*/
interface IStringMetadata extends IMetadata
{
}
/**
* @property string|null $XPathExpression
* @property IStringMetadata|null $Metadata
*/
interface IXmlMetadataImportTagMapping extends IInterface
{
}
/**
* @property string|null $Prefix
* @property string|null $Name
*/
interface IXmlMetadataImportNamespaceMapping extends IInterface
{
}
/**
* @property string|null $SampleDocumentName
* @property ReadOnlyCollection<IXmlMetadataImportTagMapping>|null $TagMappings
* @property ReadOnlyCollection<IXmlMetadataImportNamespaceMapping>|null $NamespaceMappings
*/
interface IXmlMetadataImport extends IStatus
{
}
enum NotificationType : string
{
case FailureOnly = 'FailureOnly';
case SuccessOnly = 'SuccessOnly';
case Always = 'Always';
}
/**
* @property string|null $Description
* @property string|null $To
* @property string|null $Subject
* @property string|null $Body
* @property string|null $Cc
* @property string|null $Bcc
* @property NotificationType|null $NotificationType
*/
interface INotification extends IStatus
{
}
/**
* @property ReadOnlyCollection<INotification>|null $Notifications
*/
interface INotifications extends IStatus
{
}
/**
* @property string|null $Property
* @property string|null $ErrorMessage
*/
interface IValidationError
{
}
/**
* @property ReadOnlyCollection<IValidationError>|null $Errors
*/
interface IValidationErrors
{
}
/**
* @property IValidationErrors|null $ValidationErrors
* @property bool $IsValid
*/
interface IValidator
{
}
/**
* @property string|null $TemplateVersion
* @property string|null $ScannerVisionVersion
* @property string|null $Guid
* @property string|null $BeginScript
* @property string|null $EndScript
* @property TemplateType $TemplateType
* @property IGeneral|null $General
* @property ICapture|null $Capture
* @property IXmlMetadataImport|null $XmlMetadataImport
* @property INotifications|null $Notifications
* @property IValidator|null $Validator
*/
interface ITemplate extends IStatus
{
}
/**
* @property string|null $Description
* @property ByteArray|null $Icon
* @property ITemplateModificationInfo|null $ModificationInfo
* @property string|null $Name
* @property array<IClientQuestion>|null $Questions
* @property ITemplate|null $Template
* @property string|null $TemplateGuid
*/
interface IClientTemplate
{
}
class ScanResponseBase extends ResponseBase implements JsonSerializable
{
/**
* @param Brand|null $Brand
* @param string|null $SelectedUiLanguage
* @param string|null $svSession
* @param string|null $Title
* @param string|null $PageTip
* @param bool|null $NewBrowser
* @param bool|null $ScanFront400TA
* @param bool|null $ScanFront400UTAX
*/
public function __construct(
?Brand $Brand=null,
?string $SelectedUiLanguage=null,
?string $svSession=null,
?string $Title=null,
?string $PageTip=null,
?bool $NewBrowser=null,
?bool $ScanFront400TA=null,
?bool $ScanFront400UTAX=null,
/** @var IClientTemplate|null */
public ?IClientTemplate $Template=null,
/** @var array<IClientQuestion>|null */
public ?array $GlobalQuestions=null,
/** @var bool|null */
public ?bool $CanEnableScanButton=null
) {
parent::__construct($Brand,$SelectedUiLanguage,$svSession,$Title,$PageTip,$NewBrowser,$ScanFront400TA,$ScanFront400UTAX);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['Template'])) $this->Template = JsonConverters::from('IClientTemplate', $o['Template']);
if (isset($o['GlobalQuestions'])) $this->GlobalQuestions = JsonConverters::fromArray('IClientQuestion', $o['GlobalQuestions']);
if (isset($o['CanEnableScanButton'])) $this->CanEnableScanButton = $o['CanEnableScanButton'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->Template)) $o['Template'] = JsonConverters::to('IClientTemplate', $this->Template);
if (isset($this->GlobalQuestions)) $o['GlobalQuestions'] = JsonConverters::toArray('IClientQuestion', $this->GlobalQuestions);
if (isset($this->CanEnableScanButton)) $o['CanEnableScanButton'] = $this->CanEnableScanButton;
return empty($o) ? new class(){} : $o;
}
}
/**
* @property ReadOnlyCollection<IUser>|null $Users
*/
interface IUserGroup extends IIdTemplatesItem, IGroup
{
}
/**
* @property ReadOnlyCollection<IUserGroup>|null $Groups
* @property string|null $EmailAddress
* @property bool $HasPassword
* @property string|null $HomeFolder
* @property string|null $Password
* @property bool|null $SbcUser
*/
interface IUser extends IIdTemplatesItem
{
}
interface IMetadataParserEx extends IMetadataParser
{
}
class GetQuestionResponse extends ScanResponseBase implements JsonSerializable
{
/**
* @param Brand|null $Brand
* @param string|null $SelectedUiLanguage
* @param string|null $svSession
* @param string|null $Title
* @param string|null $PageTip
* @param bool|null $NewBrowser
* @param bool|null $ScanFront400TA
* @param bool|null $ScanFront400UTAX
* @param IClientTemplate|null $Template
* @param array<IClientQuestion>|null $GlobalQuestions
* @param bool|null $CanEnableScanButton
*/
public function __construct(
?Brand $Brand=null,
?string $SelectedUiLanguage=null,
?string $svSession=null,
?string $Title=null,
?string $PageTip=null,
?bool $NewBrowser=null,
?bool $ScanFront400TA=null,
?bool $ScanFront400UTAX=null,
?IClientTemplate $Template=null,
?array $GlobalQuestions=null,
?bool $CanEnableScanButton=null,
/** @var IClientQuestion|null */
public ?IClientQuestion $Question=null,
/** @var bool|null */
public ?bool $RegexMatches=null,
/** @var string|null */
public ?string $RegexHint=null,
/** @var string|null */
public ?string $SelectedFolder=null,
/** @var IUser|null */
public ?IUser $LoggedInUser=null,
/** @var IMetadataParserEx|null */
public ?IMetadataParserEx $MetadataParser=null,
/** @var string|null */
public ?string $ParsedRoot=null,
/** @var string|null */
public ?string $FolderBrowser=null,
/** @var string|null */
public ?string $Parent=null,
/** @var string|null */
public ?string $SearchTerm=null,
/** @var int|null */
public ?int $PageNumber=null
) {
parent::__construct($Brand,$SelectedUiLanguage,$svSession,$Title,$PageTip,$NewBrowser,$ScanFront400TA,$ScanFront400UTAX,$Template,$GlobalQuestions,$CanEnableScanButton);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['Question'])) $this->Question = JsonConverters::from('IClientQuestion', $o['Question']);
if (isset($o['RegexMatches'])) $this->RegexMatches = $o['RegexMatches'];
if (isset($o['RegexHint'])) $this->RegexHint = $o['RegexHint'];
if (isset($o['SelectedFolder'])) $this->SelectedFolder = $o['SelectedFolder'];
if (isset($o['LoggedInUser'])) $this->LoggedInUser = JsonConverters::from('IUser', $o['LoggedInUser']);
if (isset($o['MetadataParser'])) $this->MetadataParser = JsonConverters::from('IMetadataParserEx', $o['MetadataParser']);
if (isset($o['ParsedRoot'])) $this->ParsedRoot = $o['ParsedRoot'];
if (isset($o['FolderBrowser'])) $this->FolderBrowser = $o['FolderBrowser'];
if (isset($o['Parent'])) $this->Parent = $o['Parent'];
if (isset($o['SearchTerm'])) $this->SearchTerm = $o['SearchTerm'];
if (isset($o['PageNumber'])) $this->PageNumber = $o['PageNumber'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->Question)) $o['Question'] = JsonConverters::to('IClientQuestion', $this->Question);
if (isset($this->RegexMatches)) $o['RegexMatches'] = $this->RegexMatches;
if (isset($this->RegexHint)) $o['RegexHint'] = $this->RegexHint;
if (isset($this->SelectedFolder)) $o['SelectedFolder'] = $this->SelectedFolder;
if (isset($this->LoggedInUser)) $o['LoggedInUser'] = JsonConverters::to('IUser', $this->LoggedInUser);
if (isset($this->MetadataParser)) $o['MetadataParser'] = JsonConverters::to('IMetadataParserEx', $this->MetadataParser);
if (isset($this->ParsedRoot)) $o['ParsedRoot'] = $this->ParsedRoot;
if (isset($this->FolderBrowser)) $o['FolderBrowser'] = $this->FolderBrowser;
if (isset($this->Parent)) $o['Parent'] = $this->Parent;
if (isset($this->SearchTerm)) $o['SearchTerm'] = $this->SearchTerm;
if (isset($this->PageNumber)) $o['PageNumber'] = $this->PageNumber;
return empty($o) ? new class(){} : $o;
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /{Brand}/question/{TemplateGuid}/{QuestionGuid} HTTP/1.1
Host: buildmax.org
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{Unable to show example output for type 'GetQuestionResponse' using the custom 'csv' filter}No parameterless constructor defined for this object.