/* Options: Date: 2026-01-27 18:40:55 SwiftVersion: 5.0 Version: 8.40 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://buildmax.org //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: GetQuestion.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}", "GET") // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}/page/{PageNumber}", "GET") // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}", "GET") // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/page/{PageNumber}", "GET") // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/search/{SearchTerm}", "GET") // @Route("/{Brand}/question/{TemplateGuid}/{QuestionGuid}/{ParsedRoot*}/folder/revisited/{FolderBrowser*}/search/{SearchTerm}/page/{PageNumber}", "GET") public class GetQuestion : QuestionRequestDto, IReturn { public typealias Return = GetQuestionResponse public var parsedRoot:String public var searchTerm:String public var pageNumber:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case parsedRoot case searchTerm case pageNumber } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) parsedRoot = try container.decodeIfPresent(String.self, forKey: .parsedRoot) searchTerm = try container.decodeIfPresent(String.self, forKey: .searchTerm) pageNumber = try container.decodeIfPresent(Int.self, forKey: .pageNumber) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if parsedRoot != nil { try container.encode(parsedRoot, forKey: .parsedRoot) } if searchTerm != nil { try container.encode(searchTerm, forKey: .searchTerm) } if pageNumber != nil { try container.encode(pageNumber, forKey: .pageNumber) } } } public class GetQuestionResponse : ScanResponseBase { //question:IClientQuestion ignored. Swift doesn't support interface properties public var regexMatches:Bool public var regexHint:String public var selectedFolder:String //loggedInUser:IUser ignored. Swift doesn't support interface properties //metadataParser:IMetadataParserEx ignored. Swift doesn't support interface properties public var parsedRoot:String public var folderBrowser:String public var parent:String public var searchTerm:String public var pageNumber:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case question case regexMatches case regexHint case selectedFolder case loggedInUser case metadataParser case parsedRoot case folderBrowser case parent case searchTerm case pageNumber } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) question = try container.decodeIfPresent(IClientQuestion.self, forKey: .question) regexMatches = try container.decodeIfPresent(Bool.self, forKey: .regexMatches) regexHint = try container.decodeIfPresent(String.self, forKey: .regexHint) selectedFolder = try container.decodeIfPresent(String.self, forKey: .selectedFolder) loggedInUser = try container.decodeIfPresent(IUser.self, forKey: .loggedInUser) metadataParser = try container.decodeIfPresent(IMetadataParserEx.self, forKey: .metadataParser) parsedRoot = try container.decodeIfPresent(String.self, forKey: .parsedRoot) folderBrowser = try container.decodeIfPresent(String.self, forKey: .folderBrowser) parent = try container.decodeIfPresent(String.self, forKey: .parent) searchTerm = try container.decodeIfPresent(String.self, forKey: .searchTerm) pageNumber = try container.decodeIfPresent(Int.self, forKey: .pageNumber) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if question != nil { try container.encode(question, forKey: .question) } if regexMatches != nil { try container.encode(regexMatches, forKey: .regexMatches) } if regexHint != nil { try container.encode(regexHint, forKey: .regexHint) } if selectedFolder != nil { try container.encode(selectedFolder, forKey: .selectedFolder) } if loggedInUser != nil { try container.encode(loggedInUser, forKey: .loggedInUser) } if metadataParser != nil { try container.encode(metadataParser, forKey: .metadataParser) } if parsedRoot != nil { try container.encode(parsedRoot, forKey: .parsedRoot) } if folderBrowser != nil { try container.encode(folderBrowser, forKey: .folderBrowser) } if parent != nil { try container.encode(parent, forKey: .parent) } if searchTerm != nil { try container.encode(searchTerm, forKey: .searchTerm) } if pageNumber != nil { try container.encode(pageNumber, forKey: .pageNumber) } } } public enum Brand : String, Codable { case Desktop case Hp case Kyocera case NeaScan case Samsung case FujiXerox case Ta case Utax case Epson case ScanFront400 case Sharp case Ricoh case FujiFilm } public class RequestBase : DtoBase { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class QuestionRequestDto : RequestBase { public var templateGuid:String public var questionGuid:String public var parent:String public var folderBrowser:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case templateGuid case questionGuid case parent case folderBrowser } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) templateGuid = try container.decodeIfPresent(String.self, forKey: .templateGuid) questionGuid = try container.decodeIfPresent(String.self, forKey: .questionGuid) parent = try container.decodeIfPresent(String.self, forKey: .parent) folderBrowser = try container.decodeIfPresent(String.self, forKey: .folderBrowser) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if templateGuid != nil { try container.encode(templateGuid, forKey: .templateGuid) } if questionGuid != nil { try container.encode(questionGuid, forKey: .questionGuid) } if parent != nil { try container.encode(parent, forKey: .parent) } if folderBrowser != nil { try container.encode(folderBrowser, forKey: .folderBrowser) } } } public class ResponseBase : DtoBase { public var selectedUiLanguage:String public var svSession:String public var title:String public var pageTip:String public var newBrowser:Bool public var scanFront400TA:Bool public var scanFront400UTAX:Bool required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case selectedUiLanguage case svSession case title case pageTip case newBrowser case scanFront400TA case scanFront400UTAX } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) selectedUiLanguage = try container.decodeIfPresent(String.self, forKey: .selectedUiLanguage) svSession = try container.decodeIfPresent(String.self, forKey: .svSession) title = try container.decodeIfPresent(String.self, forKey: .title) pageTip = try container.decodeIfPresent(String.self, forKey: .pageTip) newBrowser = try container.decodeIfPresent(Bool.self, forKey: .newBrowser) scanFront400TA = try container.decodeIfPresent(Bool.self, forKey: .scanFront400TA) scanFront400UTAX = try container.decodeIfPresent(Bool.self, forKey: .scanFront400UTAX) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if selectedUiLanguage != nil { try container.encode(selectedUiLanguage, forKey: .selectedUiLanguage) } if svSession != nil { try container.encode(svSession, forKey: .svSession) } if title != nil { try container.encode(title, forKey: .title) } if pageTip != nil { try container.encode(pageTip, forKey: .pageTip) } if newBrowser != nil { try container.encode(newBrowser, forKey: .newBrowser) } if scanFront400TA != nil { try container.encode(scanFront400TA, forKey: .scanFront400TA) } if scanFront400UTAX != nil { try container.encode(scanFront400UTAX, forKey: .scanFront400UTAX) } } } public protocol IClientQuestion : ITemplateQuestion { var questionGuid:String { get set } var valueDisplayed:String { get set } var valueReturned:String { get set } var answered:Bool { get set } var regexMatches:Bool { get set } var regexHint:String { get set } } public protocol IUser : IIdTemplatesItem { var groups:ReadOnlyCollection { get set } var emailAddress:String { get set } var hasPassword:Bool { get set } var homeFolder:String { get set } var password:String { get set } var sbcUser:Bool? { get set } } public protocol IMetadataParserEx : IMetadataParser { } public protocol IClientTemplate { var Description:String { get set } var icon:[UInt8] { get set } //modificationInfo:ITemplateModificationInfo ignored. Swift doesn't support interface properties var name:String { get set } var questions:[IClientQuestion] { get set } //template:ITemplate ignored. Swift doesn't support interface properties var templateGuid:String { get set } } public class ScanResponseBase : ResponseBase { //template:IClientTemplate ignored. Swift doesn't support interface properties public var globalQuestions:[IClientQuestion] = [] public var canEnableScanButton:Bool required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case template case globalQuestions case canEnableScanButton } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) template = try container.decodeIfPresent(IClientTemplate.self, forKey: .template) globalQuestions = try container.decodeIfPresent([IClientQuestion].self, forKey: .globalQuestions) ?? [] canEnableScanButton = try container.decodeIfPresent(Bool.self, forKey: .canEnableScanButton) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if template != nil { try container.encode(template, forKey: .template) } if globalQuestions.count > 0 { try container.encode(globalQuestions, forKey: .globalQuestions) } if canEnableScanButton != nil { try container.encode(canEnableScanButton, forKey: .canEnableScanButton) } } } public class DtoBase : Codable { public var brand:Brand required public init(){} } public enum TemplateQuestionType : String, Codable { case Edit case List case EditList case Browse case Password case Date case Time case Boolean case Integer case Double case BrowseList } public protocol ITemplatePicklist : IStatus { var guid:String { get set } } public protocol ITemplateQuestion : IStatus { var tagName:String { get set } var question:String { get set } var tooltip:String { get set } var defaultValue:String { get set } var hideDefaultValue:Bool? { get set } var regex:String { get set } var sample:String { get set } var questionType:TemplateQuestionType? { get set } var minimumSize:Int? { get set } var maximumSize:Int? { get set } var isRequired:Bool? { get set } //picklist:ITemplatePicklist ignored. Swift doesn't support interface properties } public protocol IStatus : IInterface { var status:Bool? { get set } } public protocol IInterface { } public protocol IUserGroup : IIdTemplatesItem, IGroup { var users:ReadOnlyCollection { get set } } public protocol IIdTemplatesItem : IStatus { var id:String { get set } var name:String { get set } var Description:String { get set } var templates:ReadOnlyCollection { get set } } public protocol IMetadataParser { } public protocol ITemplateModificationInfo { var guid:String { get set } var templateModificationDateTime:Date { get set } var iconModificationDateTime:Date { get set } } public protocol ITemplate : IStatus { var templateVersion:String { get set } var scannerVisionVersion:String { get set } var guid:String { get set } var beginScript:String { get set } var endScript:String { get set } var templateType:TemplateType { get set } //general:IGeneral ignored. Swift doesn't support interface properties //capture:ICapture ignored. Swift doesn't support interface properties //xmlMetadataImport:IXmlMetadataImport ignored. Swift doesn't support interface properties //notifications:INotifications ignored. Swift doesn't support interface properties //validator:IValidator ignored. Swift doesn't support interface properties } public protocol IGroup : IInterface { var useGroupSettings:Bool? { get set } } public enum TemplateType : String, Codable { case Workflow case FreeForm } public protocol IGeneral : IInterface { var name:String { get set } var Description:String { get set } var icon:String { get set } //schedule:ITemplateSchedule ignored. Swift doesn't support interface properties //rejection:IRejection ignored. Swift doesn't support interface properties //badDocumentRejection:IBadDocumentRejection ignored. Swift doesn't support interface properties var pdfLoadResolution:PdfLoadResolution? { get set } } public protocol ICapture : IInterface { var captureSources:ReadOnlyCollection { get set } } public protocol IXmlMetadataImport : IStatus { var sampleDocumentName:String { get set } var tagMappings:ReadOnlyCollection { get set } var namespaceMappings:ReadOnlyCollection { get set } } public protocol INotifications : IStatus { var notifications:ReadOnlyCollection { get set } } public protocol IValidator { //validationErrors:IValidationErrors ignored. Swift doesn't support interface properties var isValid:Bool { get set } } public protocol ITemplateSchedule : IInterface { var time:TimeInterval? { get set } var endTime:TimeInterval? { get set } var noEndTime:Bool? { get set } var type:TemplateScheduleType? { get set } } public protocol IRejection { var rejectAfter:Int? { get set } var rejectionPath:String { get set } //shareCredentials:ICredentials ignored. Swift doesn't support interface properties } public protocol IBadDocumentRejection : IStatus { var rejectionPath:String { get set } //shareCredentials:ICredentials ignored. Swift doesn't support interface properties } public enum PdfLoadResolution : String, Codable { case Default case Dpi100 case Dpi150 case Dpi200 case Dpi300 case Dpi400 case Dpi500 case Dpi600 } public protocol ICaptureSource : IStatus { } public protocol IXmlMetadataImportTagMapping : IInterface { var xPathExpression:String { get set } //metadata:IStringMetadata ignored. Swift doesn't support interface properties } public protocol IXmlMetadataImportNamespaceMapping : IInterface { var `prefix`:String { get set } var name:String { get set } } public protocol INotification : IStatus { var Description:String { get set } var to:String { get set } var subject:String { get set } var body:String { get set } var cc:String { get set } var bcc:String { get set } var notificationType:NotificationType? { get set } } public protocol IValidationErrors { var errors:ReadOnlyCollection { get set } } public enum TemplateScheduleType : String, Codable { case Interval case Fixed } public protocol ICredentials : IInterface { var username:String { get set } var password:String { get set } } public protocol IStringMetadata : IMetadata { var isSecure:Bool? { get set } var sampleValue:String { get set } var value:String { get set } } public enum NotificationType : String, Codable { case FailureOnly case SuccessOnly case Always } public protocol IValidationError { var property:String { get set } var errorMessage:String { get set } } public enum DataType : String, Codable { case String case Boolean case Integer case Double case DateTime } public protocol IMetadata : IDataTypeInterface { var tagName:String { get set } var Description:String { get set } } public protocol IDataTypeInterface : IInterface { var dataType:DataType? { get set } }