""" Options: Date: 2026-01-27 18:37:18 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: GetTemplate.* #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 @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}/templates/{TemplateGuid}", "GET") # @Route("/{Brand}/templates/{TemplateGuid}/{RetainMetadata}", "GET") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GetTemplate(RequestBase, IReturn[GetTemplateResponse]): template_guid: Optional[str] = None retain_metadata: bool = False