ScannerVision Web Server

<back to all web services

GetJsonTemplateRequest

Requires Authentication
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


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JsonDto:
    pass


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetJsonTemplateRequest(JsonDto):
    guid: Optional[str] = None


class QuestionType(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'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JsonQuestion:
    pl_question_type: Optional[QuestionType] = None
    question: Optional[str] = None
    tag_name: Optional[str] = None
    default: Optional[str] = None
    tool_tip: Optional[str] = None
    sample_value: Optional[str] = None
    regex: Optional[str] = None
    minimum: int = 0
    maximum: int = 0
    required: bool = False
    dynamic: bool = False
    picklist_guid: Optional[str] = None
    template_guid: Optional[str] = None
    hide_default_value: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JsonScanSettings:
    scan_type: Optional[str] = None
    scan_type_locked: bool = False
    scan_colour: Optional[str] = None
    scan_colour_locked: bool = False
    scan_resolution: Optional[str] = None
    scan_resolution_locked: bool = False
    scan_side: Optional[str] = None
    scan_side_locked: bool = False
    scan_size: Optional[str] = None
    scan_size_locked: bool = False
    scan_orientation: Optional[str] = None
    scan_orientation_locked: bool = False
    scan_source: Optional[str] = None
    scan_source_locked: bool = False
    scan_continuously: bool = False
    scan_continuously_locked: bool = False
    is_mixed_sizes: bool = False
    is_mixed_sizes_locked: bool = False
    minimum_page_count: int = 0
    maximum_page_count: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JsonTemplate:
    name: Optional[str] = None
    description: Optional[str] = None
    guid: Optional[str] = None
    template_modification_date: datetime.datetime = datetime.datetime(1, 1, 1)
    icon_modification_date: datetime.datetime = datetime.datetime(1, 1, 1)
    icon: Optional[bytes] = None
    template_questions: Optional[List[JsonQuestion]] = None
    global_questions: Optional[List[JsonQuestion]] = None
    scan_settings: Optional[JsonScanSettings] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetJsonTemplateResponse(JsonDto):
    template: Optional[JsonTemplate] = None

Python GetJsonTemplateRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/GetJsonTemplateRequest HTTP/1.1 
Host: dmsshow.kyocerasolutions.cz 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Guid: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Template: 
	{
		Name: String,
		Description: String,
		Guid: String,
		TemplateModificationDate: 0001-01-01,
		IconModificationDate: 0001-01-01,
		Icon: AA==,
		TemplateQuestions: 
		[
			{
				PlQuestionType: Edit,
				Question: String,
				TagName: String,
				Default: String,
				ToolTip: String,
				SampleValue: String,
				Regex: String,
				Minimum: 0,
				Maximum: 0,
				Required: False,
				Dynamic: False,
				PicklistGuid: String,
				TemplateGuid: String,
				HideDefaultValue: False
			}
		],
		GlobalQuestions: 
		[
			{
				PlQuestionType: Edit,
				Question: String,
				TagName: String,
				Default: String,
				ToolTip: String,
				SampleValue: String,
				Regex: String,
				Minimum: 0,
				Maximum: 0,
				Required: False,
				Dynamic: False,
				PicklistGuid: String,
				TemplateGuid: String,
				HideDefaultValue: False
			}
		],
		ScanSettings: 
		{
			ScanType: String,
			ScanTypeLocked: False,
			ScanColour: String,
			ScanColourLocked: False,
			ScanResolution: String,
			ScanResolutionLocked: False,
			ScanSide: String,
			ScanSideLocked: False,
			ScanSize: String,
			ScanSizeLocked: False,
			ScanOrientation: String,
			ScanOrientationLocked: False,
			ScanSource: String,
			ScanSourceLocked: False,
			ScanContinuously: False,
			ScanContinuouslyLocked: False,
			IsMixedSizes: False,
			IsMixedSizesLocked: False,
			MinimumPageCount: 0,
			MaximumPageCount: 0
		}
	}
}