""" Options: Date: 2026-01-27 18:36:49 Version: 8.40 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://buildmax.org #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: ScanSettingsRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class Brand(str, Enum): DESKTOP = 'Desktop' HP = 'Hp' KYOCERA = 'Kyocera' NEA_SCAN = 'NeaScan' SAMSUNG = 'Samsung' FUJI_XEROX = 'FujiXerox' TA = 'Ta' UTAX = 'Utax' EPSON = 'Epson' SCAN_FRONT400 = 'ScanFront400' SHARP = 'Sharp' RICOH = 'Ricoh' FUJI_FILM = 'FujiFilm' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DtoBase: brand: Optional[Brand] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RequestBase(DtoBase): pass class ScanColour(str, Enum): BLACK_AND_WHITE = 'BlackAndWhite' GREYSCALE = 'Greyscale' COLOUR = 'Colour' AUTO = 'Auto' class ScanOrientation(str, Enum): PORTRAIT = 'Portrait' LANDSCAPE = 'Landscape' class ScanResolution(str, Enum): DPI100 = 'Dpi100' DPI200 = 'Dpi200' DPI300 = 'Dpi300' DPI400 = 'Dpi400' DPI600 = 'Dpi600' class ScanSide(str, Enum): SIMPLEX = 'Simplex' DUPLEX = 'Duplex' class ScanSize(str, Enum): AUTO = 'Auto' A3 = 'A3' A4 = 'A4' A5 = 'A5' B4 = 'B4' B5 = 'B5' LETTER = 'Letter' LEGAL = 'Legal' EXECUTIVE = 'Executive' FOLIO = 'Folio' AUTO_LONG = 'AutoLong' A4_R = 'A4R' A5_R = 'A5R' A6_R = 'A6R' B6_R = 'B6R' class ScanSource(str, Enum): ADF = 'Adf' GLASS = 'Glass' AUTO = 'Auto' class ScanType(str, Enum): TEXT = 'Text' PHOTO = 'Photo' TEXT_AND_PHOTO = 'TextAndPhoto' class BoolSetting(str, Enum): TRUE = 'True' FALSE = 'False' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ResponseBase(DtoBase): selected_ui_language: Optional[str] = None sv_session: Optional[str] = None title: Optional[str] = None page_tip: Optional[str] = None new_browser: bool = False scan_front400_t_a: bool = False scan_front400_u_t_a_x: bool = False class IClientQuestion(ITemplateQuestion): question_guid: Optional[str] = None value_displayed: Optional[str] = None value_returned: Optional[str] = None answered: bool = False regex_matches: bool = False regex_hint: Optional[str] = None class ITemplateModificationInfo: guid: Optional[str] = None template_modification_date_time: datetime.datetime = datetime.datetime(1, 1, 1) icon_modification_date_time: datetime.datetime = datetime.datetime(1, 1, 1) class TemplateType(str, Enum): WORKFLOW = 'Workflow' FREE_FORM = 'FreeForm' class TemplateScheduleType(str, Enum): INTERVAL = 'Interval' FIXED = 'Fixed' class ITemplateSchedule(IInterface): time: Optional[datetime.timedelta] = None end_time: Optional[datetime.timedelta] = None no_end_time: Optional[bool] = None type: Optional[TemplateScheduleType] = None class ICredentials(IInterface): username: Optional[str] = None password: Optional[str] = None class IRejection: reject_after: Optional[int] = None rejection_path: Optional[str] = None share_credentials: Optional[ICredentials] = None class IBadDocumentRejection(IStatus): rejection_path: Optional[str] = None share_credentials: Optional[ICredentials] = None class PdfLoadResolution(str, Enum): DEFAULT = 'Default' DPI100 = 'Dpi100' DPI150 = 'Dpi150' DPI200 = 'Dpi200' DPI300 = 'Dpi300' DPI400 = 'Dpi400' DPI500 = 'Dpi500' DPI600 = 'Dpi600' class IGeneral(IInterface): name: Optional[str] = None description: Optional[str] = None icon: Optional[str] = None schedule: Optional[ITemplateSchedule] = None rejection: Optional[IRejection] = None bad_document_rejection: Optional[IBadDocumentRejection] = None pdf_load_resolution: Optional[PdfLoadResolution] = None class ICaptureSource(IStatus): pass class ICapture(IInterface): capture_sources: Optional[ReadOnlyCollection[ICaptureSource]] = None class IStringMetadata(IMetadata): is_secure: Optional[bool] = None sample_value: Optional[str] = None value: Optional[str] = None class IXmlMetadataImportTagMapping(IInterface): x_path_expression: Optional[str] = None metadata: Optional[IStringMetadata] = None class IXmlMetadataImportNamespaceMapping(IInterface): prefix: Optional[str] = None name: Optional[str] = None class IXmlMetadataImport(IStatus): sample_document_name: Optional[str] = None tag_mappings: Optional[ReadOnlyCollection[IXmlMetadataImportTagMapping]] = None namespace_mappings: Optional[ReadOnlyCollection[IXmlMetadataImportNamespaceMapping]] = None class NotificationType(str, Enum): FAILURE_ONLY = 'FailureOnly' SUCCESS_ONLY = 'SuccessOnly' ALWAYS = 'Always' class INotification(IStatus): description: Optional[str] = None to: Optional[str] = None subject: Optional[str] = None body: Optional[str] = None cc: Optional[str] = None bcc: Optional[str] = None notification_type: Optional[NotificationType] = None class INotifications(IStatus): notifications: Optional[ReadOnlyCollection[INotification]] = None class IValidationError: property: Optional[str] = None error_message: Optional[str] = None class IValidationErrors: errors: Optional[ReadOnlyCollection[IValidationError]] = None class IValidator: validation_errors: Optional[IValidationErrors] = None is_valid: bool = False class ITemplate(IStatus): template_version: Optional[str] = None scanner_vision_version: Optional[str] = None guid: Optional[str] = None begin_script: Optional[str] = None end_script: Optional[str] = None template_type: Optional[TemplateType] = None general: Optional[IGeneral] = None capture: Optional[ICapture] = None xml_metadata_import: Optional[IXmlMetadataImport] = None notifications: Optional[INotifications] = None validator: Optional[IValidator] = None class IClientTemplate: description: Optional[str] = None icon: Optional[bytes] = None modification_info: Optional[ITemplateModificationInfo] = None name: Optional[str] = None questions: Optional[List[IClientQuestion]] = None template: Optional[ITemplate] = None template_guid: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ScanResponseBase(ResponseBase): template: Optional[IClientTemplate] = None global_questions: Optional[List[IClientQuestion]] = None can_enable_scan_button: bool = False class TemplateQuestionType(str, Enum): EDIT = 'Edit' LIST = 'List' EDIT_LIST = 'EditList' BROWSE = 'Browse' PASSWORD = 'Password' DATE = 'Date' TIME = 'Time' BOOLEAN = 'Boolean' INTEGER = 'Integer' DOUBLE = 'Double' BROWSE_LIST = 'BrowseList' class ITemplatePicklist(IStatus): guid: Optional[str] = None class ITemplateQuestion(IStatus): tag_name: Optional[str] = None question: Optional[str] = None tooltip: Optional[str] = None default_value: Optional[str] = None hide_default_value: Optional[bool] = None regex: Optional[str] = None sample: Optional[str] = None question_type: Optional[TemplateQuestionType] = None minimum_size: Optional[int] = None maximum_size: Optional[int] = None is_required: Optional[bool] = None picklist: Optional[ITemplatePicklist] = None class IStatus(IInterface): status: Optional[bool] = None class IInterface: pass class DataType(str, Enum): STRING = 'String' BOOLEAN = 'Boolean' INTEGER = 'Integer' DOUBLE = 'Double' DATE_TIME = 'DateTime' class IMetadata(IDataTypeInterface): tag_name: Optional[str] = None description: Optional[str] = None class IDataTypeInterface(IInterface): data_type: Optional[DataType] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GetTemplateResponse(ScanResponseBase): server_address: Optional[str] = None server_port: int = 0 # @Route("/{Brand}/scansettings/{TemplateGuid}", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ScanSettingsRequest(RequestBase, IReturn[GetTemplateResponse]): template_guid: Optional[str] = None selected_colour: Optional[ScanColour] = None selected_orientation: Optional[ScanOrientation] = None selected_resolution: Optional[ScanResolution] = None selected_sides: Optional[ScanSide] = None selected_size: Optional[ScanSize] = None selected_source: Optional[ScanSource] = None selected_type: Optional[ScanType] = None selected_scan_continuously: Optional[BoolSetting] = None selected_mixed_sizes: Optional[BoolSetting] = None