ScanViewConfig Documentation

Human Readable Documentation

Linked above is the complete human-readable documentation for the ScanViewConfig JSON Schema. For a detailed explanation on how to use it, refer to Constructing your Configuration JSON using JSON Schemas.

Raw JSON Schemas

The ScanViewConfig JSON Schema contains all the required definitions, except the pluginConfig and uiFeedbackConfig definitions, which are defined in separate JSON Schemas and linked into the ScanViewConfig JSON Schema.

Below you can find the full JSON Schema used for the ScanView Configuration classes.

You can also view the raw JSON Schema files for

ScanViewConfig JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema",
  "title": "ScanView Configuration",
  "description": "Schema for SDK JSON configurations",
  "type": "object",
  "properties": {
    "scanViewConfigDescription": {
      "description": "An optional description for the entire ScanView configuration.",
      "type": "string"
    },
    "cameraConfig": {
      "$ref": "#/definitions/cameraConfig"
    },
    "flashConfig": {
      "$ref": "#/definitions/flashConfig"
    },
    "viewPluginConfig": {
      "$ref": "#/definitions/viewPluginConfig"
    },
    "viewPluginCompositeConfig": {
      "$ref": "#/definitions/viewPluginCompositeConfig"
    },
    "options": {
      "type": "object"
    }
  },
  "definitions": {
    "offset": {
      "description": "An optional offset (in dp) for the elements.",
      "type": "object",
      "properties": {
        "x": {
          "type": "integer",
          "default": 0
        },
        "y": {
          "type": "integer",
          "default": 0
        }
      },
      "additionalProperties": false
    },
    "cameraConfig": {
      "description": "Schema for SDK Camera Configuration",
      "type": "object",
      "properties": {
        "captureResolution": {
          "description": "The preferred resolution for video capture (720, 720p, 1080, 1080p). This resolution is used to process images for scanning.",
          "type": "string"
        },
        "pictureResolution": {
          "description": "The preferred resolution for taking images (720, 720p, 1080, 1080p).",
          "type": "string"
        },
        "defaultCamera": {
          "description": "The preferred camera of the device (FRONT, BACK, EXTERNAL, EXTERNAL_FRONT).",
          "type": "string",
          "default": "BACK"
        },
        "zoomGesture": {
          "description": "This flag enables or disables the zoom gesture if supported.",
          "type": "boolean",
          "default": false
        },
        "focalLength": {
          "description": "The focal length.",
          "type": "number",
          "default": 0
        },
        "zoomRatio": {
          "description": "The zoom ratio.",
          "type": "number",
          "default": 0
        },
        "maxZoomRatio": {
          "description": "The maximum zoom ratio.",
          "type": "number",
          "default": 0
        },
        "maxFocalLength": {
          "description": "The maximum focal length.",
          "type": "number",
          "default": 0
        },
        "fallbackCameras": {
          "description": "Optional cameras to fall back if the defaultCamera is not found.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "captureResolution"
      ],
      "additionalProperties": false
    },
    "flashConfig": {
      "description": "Schema for SDK Flash Configuration",
      "type": "object",
      "properties": {
        "mode": {
          "description": "The flash mode.",
          "type": "string",
          "enum": [
            "none",
            "auto",
            "manual",
            "manual_off",
            "manual_on"
          ],
          "default": "none"
        },
        "alignment": {
          "description": "The alignment of the flash button.",
          "type": "string",
          "enum": [
            "top",
            "top_left",
            "top_right",
            "bottom",
            "bottom_left",
            "bottom_right"
          ],
          "default": "top_left"
        },
        "offset": {
          "description": "An optional offset (in dp) for the flash button.",
          "$ref": "#/definitions/offset"
        },
        "imageOn": {
          "description": "The asset name of the icon to be displayed when the flash is on.",
          "type": "string"
        },
        "imageOff": {
          "description": "The asset name of the icon to be displayed when the flash is off.",
          "type": "string"
        },
        "imageAuto": {
          "description": "The asset name of the icon to be displayed when the flash is set to auto.",
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "viewPluginConfig": {
      "description": "Schema for SDK ViewPlugin Configuration",
      "type": "object",
      "properties": {
        "pluginConfig": {
          "$ref": "./plugin_config.schema.json"
        },
        "cutoutConfig": {
          "$ref": "#/definitions/viewPluginConfig/definitions/cutoutConfig"
        },
        "scanFeedbackConfig": {
          "$ref": "#/definitions/viewPluginConfig/definitions/scanFeedbackConfig"
        },
        "uiFeedbackConfig": {
          "$ref": "./uifeedback_config.schema.json"
        }
      },
      "definitions": {
        "cutoutConfig": {
          "description": "Schema for SDK Cutout Configuration",
          "type": "object",
          "properties": {
            "alignment": {
              "description": "The alignment of the cutout area.",
              "type": "string",
              "enum": [
                "top",
                "top_half",
                "center",
                "bottom_half",
                "bottom"
              ],
              "default": "center"
            },
            "width": {
              "description": "The preferred width in pixels, relating to the camera resolution. If not specified or 0, the maximum possible width will be chosen.",
              "type": "integer",
              "default": 0
            },
            "maxWidthPercent": {
              "description": "The maximum width in percent (0-100), relating to the size of the view.",
              "type": "string"
            },
            "maxHeightPercent": {
              "description": "The maximum height in percent (0-100), relating to the size of the view.",
              "type": "string"
            },
            "ratioFromSize": {
              "description": "A size constraining the ratio of width / height. If set to 0, the ratio will be equal to the full frame.",
              "type": "object",
              "properties": {
                "width": {
                  "type": "number",
                  "default": 0
                },
                "height": {
                  "type": "number",
                  "default": 0
                }
              },
              "additionalProperties": false
            },
            "strokeWidth": {
              "description": "The stroke width of the cutout. If set to 0, the line will be invisible.",
              "type": "integer",
              "default": 0
            },
            "strokeColor": {
              "description": "The hex string (RRGGBB) of the stroke color. (e.g. 00CCFF).",
              "type": "string",
              "default": "0099FF"
            },
            "feedbackStrokeColor": {
              "description": "The hex string (RRGGBB) of the stroke color for visual feedback. (e.g. 00CCFF).",
              "type": "string",
              "default": "0099FF"
            },
            "cornerRadius": {
              "description": "Radius of the corners of the cutout.",
              "type": "integer",
              "default": 0
            },
            "outerColor": {
              "description": "Background color as a 6-digit (RRGGBB) or 8-digit (AARRGGBB) hex string.",
              "type": "string",
              "default": "4D000000"
            },
            "outerAlpha": {
              "description": "Optional transparency factor for the outer color (0.0 - 1.0).",
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "offset": {
              "description": "Position offset of the cutout, used in conjunction with alignment.",
              "$ref": "#/definitions/offset"
            },
            "animation": {
              "description": "Animation type for the cutout when initially displayed. Values: none, fade, zoom",
              "type": "string",
              "enum": [
                "none",
                "fade",
                "zoom"
              ],
              "default": "none"
            },
            "cropPadding": {
              "description": "Amount of padding to be applied to the cutout (NOTE: use positive amounts only). A crop padding truncates the visual area represented by the cutout used in optimizing scan performance for some plugins. Define as an x-y point structure.",
              "$ref": "#/definitions/offset"
            },
            "cropOffset": {
              "description": "Used in conjunction with cropPadding. This offset further adjusts the crop position after the padding is applied. Define as an x-y point structure.",
              "$ref": "#/definitions/offset"
            }
          },
          "required": [],
          "additionalProperties": false
        },
        "scanFeedbackConfig": {
          "description": "Schema for SDK ScanFeedback Configuration",
          "type": "object",
          "properties": {
            "style": {
              "description": "The style of the feedback.",
              "type": "string",
              "enum": [
                "none",
                "rect",
                "contour_rect",
                "contour_point",
                "contour_underline",
                "animated_rect"
              ],
              "default": "rect"
            },
            "animation": {
              "description": "The animation style of the feedback.",
              "type": "string",
              "enum": [
                "none",
                "traverse_single",
                "traverse_multi",
                "kitt",
                "blink",
                "resize",
                "pulse",
                "pulse_random"
              ],
              "default": "none"
            },
            "redrawTimeout": {
              "description": "The timeout to redraw the visual feedback in milliseconds.",
              "type": "integer"
            },
            "cornerRadius": {
              "description": "The corner radius of the visual feedback.",
              "type": "integer"
            },
            "animationDuration": {
              "description": "The duration of the animation in milliseconds.",
              "type": "integer"
            },
            "strokeWidth": {
              "description": "The stroke width.",
              "type": "integer"
            },
            "strokeColor": {
              "description": "The stroke color.",
              "type": "string"
            },
            "fillColor": {
              "description": "The fill color.",
              "type": "string"
            },
            "beepOnResult": {
              "description": "If true, make a beep sound when a result is found.",
              "type": "boolean"
            },
            "blinkAnimationOnResult": {
              "description": "If true, flash the view when a result is found.",
              "type": "boolean"
            },
            "vibrateOnResult": {
              "description": "If true, vibrate the device when a result is found.",
              "type": "boolean"
            }
          },
          "required": [],
          "additionalProperties": false
        }
      },
      "required": [
        "pluginConfig"
      ],
      "additionalProperties": false
    },
    "viewPluginCompositeConfig": {
      "description": "Schema for SDK ViewPlugin Configuration",
      "type": "object",
      "properties": {
        "id": {
          "description": "The ID (name) of the workflow.",
          "type": "string"
        },
        "processingMode": {
          "description": "The processing mode of the workflow (parallel, sequential, parallelFirstScan).",
          "type": "string",
          "enum": [
            "parallel",
            "sequential",
            "parallelFirstScan"
          ]
        },
        "viewPlugins": {
          "description": "The ordered list of viewPlugins, each as JSON object with a given viewPluginConfig.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "viewPluginConfig": {
                "$ref": "#/definitions/viewPluginConfig"
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        }
      },
      "required": [
        "id",
        "processingMode",
        "viewPlugins"
      ],
      "additionalProperties": false
    }
  },
  "oneOf": [{"required": ["viewPluginConfig"]},{"required": ["viewPluginCompositeConfig"]}],
  "required": [],
  "additionalProperties": false
}
PluginConfig JSON Schema
{
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "PluginConfig",
    "description": "General configuration for scan plugins",
    "type": "object",
    "allOf": [
        {
            "required": [
                "id"
            ]
        },
        {
            "oneOf": [
                {
                    "required": [
                        "barcodeConfig"
                    ]
                },
                {
                    "required": [
                        "meterConfig"
                    ]
                },
                {
                    "required": [
                        "odometerConfig"
                    ]
                },
                {
                    "required": [
                        "universalIdConfig"
                    ]
                },
                {
                    "required": [
                        "mrzConfig"
                    ]
                },
                {
                    "required": [
                        "japaneseLandingPermissionConfig"
                    ]
                },
                {
                    "required": [
                        "vehicleRegistrationCertificateConfig"
                    ]
                },
                {
                    "required": [
                        "licensePlateConfig"
                    ]
                },
                {
                    "required": [
                        "tinConfig"
                    ]
                },
                {
                    "required": [
                        "tireSizeConfig"
                    ]
                },
                {
                    "required": [
                        "commercialTireIdConfig"
                    ]
                },
                {
                    "required": [
                        "tireMakeConfig"
                    ]
                },
                {
                    "required": [
                        "vinConfig"
                    ]
                },
                {
                    "required": [
                        "containerConfig"
                    ]
                },
                {
                    "required": [
                        "ocrConfig"
                    ]
                }
            ]
        }
    ],
    "properties": {
        "id": {
            "description": "Sets a name for the scan plugin.",
            "type": "string"
        },
        "cancelOnResult": {
            "type": "boolean",
            "default": true,
            "description": "Sets whether or not to continue scanning once a result is found."
        },
        "startScanDelay": {
            "description": "Sets an initial time period where scanned frames are not processed as results.",
            "type": "integer",
            "default": 0,
            "minimum": 0,
            "maximum": 1000000
        },
        "startVariables": {
            "type": "array",
            "description": "Allows to fine-tune a list of options for plugins.",
            "items": {
                "$ref": "#/definitions/startVariable"
            }
        },
        "barcodeConfig": {
            "$ref": "#/definitions/barcodeConfig"
        },
        "meterConfig": {
            "$ref": "#/definitions/meterConfig"
        },
        "odometerConfig": {
            "$ref": "#/definitions/odometerConfig"
        },
        "universalIdConfig": {
            "$ref": "#/definitions/universalIdConfig"
        },
        "mrzConfig": {
            "$ref": "#/definitions/mrzConfig"
        },
        "japaneseLandingPermissionConfig": {
            "$ref": "#/definitions/japaneseLandingPermissionConfig"
        },
        "vehicleRegistrationCertificateConfig": {
            "$ref": "#/definitions/vehicleRegistrationCertificateConfig"
        },
        "licensePlateConfig": {
            "$ref": "#/definitions/licensePlateConfig"
        },
        "tinConfig": {
            "$ref": "#/definitions/tinConfig"
        },
        "tireSizeConfig": {
            "$ref": "#/definitions/tireSizeConfig"
        },
        "commercialTireIdConfig": {
            "$ref": "#/definitions/commercialTireIdConfig"
        },
        "tireMakeConfig": {
            "$ref": "#/definitions/tireMakeConfig"
        },
        "vinConfig": {
            "$ref": "#/definitions/vinConfig"
        },
        "containerConfig": {
            "$ref": "#/definitions/containerConfig"
        },
        "ocrConfig": {
            "$ref": "#/definitions/ocrConfig"
        }
    },
    "definitions": {
        "startVariable": {
            "type": "object",
            "description": "Describes a start variable for fine-tuning plugins.",
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key of the variable."
                },
                "value": {
                    "type": [
                        "string",
                        "number",
                        "integer",
                        "boolean"
                    ],
                    "description": "The value of the variable."
                }
            },
            "required": [
                "key",
                "value"
            ],
            "additionalProperties": false
        },
        "ocrConfig": {
            "description": "Configuration for general OCR scanning use-cases",
            "type": "object",
            "properties": {
                "scanMode": {
                    "type": "string",
                    "enum": [
                        "line",
                        "grid",
                        "auto"
                    ],
                    "default": "auto",
                    "description": "Sets whether to scan single-line texts, multi-line texts in a grid-formation or finds text automatically."
                },
                "models": {
                    "type": "array",
                    "description": "Sets one or more custom Anyline models. The files have to be located in the project and point to a path relative from the project root. If no customCmdFile is set, only a maximum of one model is valid. If a customCmdFile is set, it depends whether or not the customCmdFile requires multiple models or not. Please check the official documentation for more details.",
                    "items": {
                        "type": "string"
                    }
                },
                "customCmdFile": {
                    "type": "string",
                    "description": "Sets a custom Anyline script. The file has to be located in the project and point to a path relative from the project root. Please check the official documentation for more details."
                },
                "minSharpness": {
                    "type": "integer",
                    "description": "Sets a sharpnes factor (0-100) to rule out blurry images."
                },
                "charCountX": {
                    "type": "integer",
                    "description": "Sets the number of characters in each text line for 'grid' mode."
                },
                "charCountY": {
                    "type": "integer",
                    "description": "Sets the number of text lines for 'grid' mode."
                },
                "charPaddingXFactor": {
                    "type": "number",
                    "description": "Defines the average horizontal distance between two characters in 'grid' mode, measured in percentage of the characters width."
                },
                "charPaddingYFactor": {
                    "type": "number",
                    "description": "Defines the average vertical distance between two characters in 'grid' mode, measured in percentage of the characters height."
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "minCharHeight": {
                    "type": "integer",
                    "description": "Sets a minimum character height (in pixels) to be considered in the scanning process."
                },
                "maxCharHeight": {
                    "type": "integer",
                    "description": "Sets a maximum character height (in pixels) to be considered in the scanning process."
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the scanned text needs to match in order to trigger a scan result."
                },
                "charWhitelist": {
                    "type": "string",
                    "description": "Restricts the scanner to a set of characters to be detected."
                }
            },
            "dependencies": {
                "minSharpness": {
                    "properties": {
                        "scanMode": {
                            "enum": [
                                "line"
                            ]
                        }
                    }
                },
                "charCountX": {
                    "properties": {
                        "scanMode": {
                            "enum": [
                                "grid"
                            ]
                        }
                    }
                },
                "charCountY": {
                    "properties": {
                        "scanMode": {
                            "enum": [
                                "grid"
                            ]
                        }
                    }
                },
                "charPaddingXFactor": {
                    "properties": {
                        "scanMode": {
                            "enum": [
                                "grid"
                            ]
                        }
                    }
                },
                "charPaddingYFactor": {
                    "properties": {
                        "scanMode": {
                            "enum": [
                                "grid"
                            ]
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "containerConfig": {
            "description": "Configuration for scanning shipping container numbers",
            "type": "object",
            "properties": {
                "scanMode": {
                    "type": "string",
                    "description": "Determines if container numbers shall be scanned horizontally or vertically.",
                    "enum": [
                        "HORIZONTAL",
                        "VERTICAL"
                    ],
                    "default": "HORIZONTAL"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "validationRegex": {
                    "description": "Sets a regular expression which the scanned text needs to match in order to trigger a scan result.",
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "vinConfig": {
            "description": "Configuration for scanning vehicle identification numbers (VIN)",
            "type": "object",
            "properties": {
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the scanned text needs to match in order to trigger a scan result."
                },
                "charWhitelist": {
                    "type": "string",
                    "description": "Restricts the scanner to a set of characters to be detected."
                }
            },
            "additionalProperties": false
        },
        "tireMakeConfig": {
            "description": "Configuration for scanning Tire Makes",
            "type": "object",
            "properties": {
                "upsideDownMode": {
                    "description": "Sets whether the text shall also be scanned upside-down.",
                    "type": "string",
                    "enum": [
                        "DISABLED",
                        "ENABLED",
                        "AUTO"
                    ],
                    "default": "AUTO"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the tire make text needs to match in order to trigger a scan result. E.g. \"(Continental|Dunlop)\" will only trigger on Continental or Dunlop tires."
                }
            },
            "additionalProperties": false
        },
        "commercialTireIdConfig": {
            "description": "Configuration for scanning commercial Tire IDs",
            "type": "object",
            "properties": {
                "upsideDownMode": {
                    "description": "Sets whether the text shall also be scanned upside-down.",
                    "type": "string",
                    "enum": [
                        "DISABLED",
                        "ENABLED",
                        "AUTO"
                    ],
                    "default": "AUTO"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the commercial tire id text needs to match in order to trigger a scan result."
                }
            },
            "additionalProperties": false
        },
        "tireSizeConfig": {
            "description": "Configuration for scanning Tire Size Specifications",
            "type": "object",
            "properties": {
                "upsideDownMode": {
                    "type": "string",
                    "description": "Sets whether the text shall also be scanned upside-down.",
                    "enum": [
                        "DISABLED",
                        "ENABLED",
                        "AUTO"
                    ],
                    "default": "AUTO"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the tire size text needs to match in order to trigger a scan result."
                }
            },
            "additionalProperties": false
        },
        "tinConfig": {
            "description": "Configuration for scanning TIN numbers",
            "type": "object",
            "properties": {
                "scanMode": {
                    "type": "string",
                    "description": "Sets the mode to scan universal TIN numbers ('UNIVERSAL') or TIN numbers of any length starting with DOT ('DOT').",
                    "enum": [
                        "UNIVERSAL",
                        "DOT"
                    ],
                    "default": "UNIVERSAL"
                },
                "upsideDownMode": {
                    "type": "string",
                    "description": "Sets whether the text shall also be scanned upside-down.",
                    "enum": [
                        "DISABLED",
                        "ENABLED",
                        "AUTO"
                    ],
                    "default": "AUTO"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "validateProductionDate": {
                    "type": "boolean",
                    "description": "Sets whether the production date validation is enabled. If it is set to false the scan result is also returned for invalid and missing dates.",
                    "default": false
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the TIN text needs to match in order to trigger a scan result."
                }
            },
            "additionalProperties": false
        },
        "licensePlateConfig": {
            "description": "Configuration for scanning license plates",
            "type": "object",
            "properties": {
                "scanMode": {
                    "description": "Specifies a country or location of which license plates shall be scanned.",
                    "type": "string",
                    "enum": [
                        "auto",
                        "austria",
                        "unitedkingdom",
                        "ireland",
                        "poland",
                        "norway",
                        "norwayspecial",
                        "germany",
                        "czech",
                        "finland",
                        "france",
                        "croatia",
                        "slovakia",
                        "slovenia",
                        "albania",
                        "andorra",
                        "armenia",
                        "azerbaijan",
                        "belarus",
                        "belgium",
                        "bosniaandherzegovina",
                        "bulgaria",
                        "cyprus",
                        "denmark",
                        "estonia",
                        "georgia",
                        "greece",
                        "hungary",
                        "iceland",
                        "italy",
                        "latvia",
                        "liechtenstein",
                        "lithuania",
                        "luxembourg",
                        "malta",
                        "moldova",
                        "monaco",
                        "montenegro",
                        "netherlands",
                        "northmacedonia",
                        "portugal",
                        "romania",
                        "russia",
                        "serbia",
                        "spain",
                        "sweden",
                        "switzerland",
                        "turkey",
                        "ukraine",
                        "unitedstates",
                        "africa"
                    ],
                    "default": "auto"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result.",
                    "default": 0
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression per country. Expected format: \"'country_code':^regex$, 'other_country_code':^other_regex$\". The country code needs to be provided in the international vehicle registration code format that is visible on the license plate (for example 'A' for Austria). Note: not available for the scanModes unitedstates and africa."
                },
                "vehicleInspectionSticker": {
                    "description": "Select if the visual inspection sticker should be scanned. If OPTIONAL, the visual inspection sticker will only be returned if found successfully. If MANDATORY the scan will only return if found successfully. Not available on africa and unitedstates.",
                    "type": "string",
                    "enum": [
                        "DISABLED",
                        "OPTIONAL",
                        "MANDATORY"
                    ],
                    "default": "DISABLED"
                }
            },
            "additionalProperties": false
        },
        "barcodeConfig": {
            "description": "Configuration for scanning barcodes",
            "type": "object",
            "properties": {
                "multiBarcode": {
                    "type": "boolean",
                    "description": "Setting this to 'true' will enable reading multiple barcodes per frame.",
                    "default": false
                },
                "parseAAMVA": {
                    "type": "boolean",
                    "description": "If this option is set, barcodes parsed according to the AAMVA standard. This only works for PDF417 codes on driving licenses.",
                    "default": false
                },
                "consecutiveEqualResults": {
                    "type": "boolean",
                    "description": "If this option is set, allows consecutive barcode results of the same barcode when scanning continuously.",
                    "default": false
                },
                "disableAdvancedBarcode": {
                    "type": "boolean",
                    "default": false,
                    "description": "Sets whether or not to disable advanced barcode scanning even if the license supports it."
                },
                "barcodeFormats": {
                    "type": "array",
                    "description": "Set this to filter which barcode formats should be scanned. Setting 'ALL' will enable scanning all supported formats.",
                    "minItems": 1,
                    "items": {
                        "type": "string",
                        "enum": [
                            "ALL",
                            "ONE_D_INVERSE",
                            "AZTEC",
                            "AZTEC_INVERSE",
                            "BOOKLAND",
                            "CODABAR",
                            "CODE_11",
                            "CODE_32",
                            "CODE_39",
                            "CODE_93",
                            "CODE_128",
                            "DATABAR",
                            "COUPON",
                            "DATA_MATRIX",
                            "DISCRETE_2_5",
                            "DOT_CODE",
                            "EAN_8",
                            "EAN_13",
                            "GS1_QR_CODE",
                            "GS1_128",
                            "ITF",
                            "ISSN_EAN",
                            "ISBT_128",
                            "KIX",
                            "MATRIX_2_5",
                            "MSI",
                            "MICRO_QR",
                            "MICRO_PDF",
                            "PDF_417",
                            "POST_UK",
                            "QR_CODE",
                            "QR_INVERSE",
                            "RSS_14",
                            "RSS_EXPANDED",
                            "TRIOPTIC",
                            "UPC_A",
                            "UPC_E",
                            "UPC_EAN_EXTENSION",
                            "UPU_FICS",
                            "USPS_4CB",
                            "US_PLANET",
                            "US_POSTNET",
                            "MAXICODE"
                        ]
                    }
                }
            },
            "required": [
                "barcodeFormats"
            ],
            "additionalProperties": false
        },
        "meterConfig": {
            "description": "Configuration for scanning meters",
            "type": "object",
            "required": [
                "scanMode"
            ],
            "properties": {
                "scanMode": {
                    "type": "string",
                    "description": "Determines which types of meters to scan.",
                    "enum": [
                        "auto_analog_digital_meter",
                        "dial_meter",
                        "multi_field_digital_meter",
                        "digital_meter_2_experimental"
                    ],
                    "default": "auto_analog_digital_meter"
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result."
                },
                "maxNumDecimalDigits": {
                    "type": "integer",
                    "description": "Defines the maximum number of read decimal digits for values >=0. Negative values mean all decimal digits are read. Currently implemented only for the \"auto_analog_digital_meter\" scan mode.",
                    "default": -1
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the scanned text needs to match in order to trigger a scan result."
                }
            },
            "additionalProperties": false
        },
        "odometerConfig": {
            "description": "Configuration for scanning odometers",
            "type": "object",
            "properties": {
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result.The value has to be between 0 and 100. Defaults to 60.",
                    "minimum": 0,
                    "maximum": 100
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Sets a regular expression which the scanned text needs to match in order to trigger a scan result."
                }
            },
            "additionalProperties": false
        },
        "allowedLayout": {
            "description": "Sets a set of layouts to be included by the scanner. If none are set, every supported layout is included.",
            "type": "array",
            "items": {
                "type": "string",
                "pattern": "([A-Z]{2}(-[A-Z]{2,3})?_[A-Z]{3}_[A-Z]+_[A-Z0-9]+(-[A-Z0-9]+)*_(F|B)(_v[0-9])?)"
            }
        },
        "layoutMRZ": {
            "title": "layoutMrz",
            "description": "Contains all the supported field scan options for MRZ.",
            "type": "object",
            "properties": {
                "vizAddress": {
                    "$ref": "#/definitions/universalIdField"
                },
                "vizDateOfIssue": {
                    "$ref": "#/definitions/universalIdField"
                },
                "vizSurname": {
                    "$ref": "#/definitions/universalIdField"
                },
                "vizGivenNames": {
                    "$ref": "#/definitions/universalIdField"
                },
                "vizDateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "vizDateOfExpiry": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfExpiry": {
                    "$ref": "#/definitions/universalIdField"
                }
            },
            "additionalProperties": false
        },
        "layoutDrivingLicense": {
            "description": "Contains all the supported field scan options for driving licenses.",
            "type": "object",
            "properties": {
                "additionalInformation": {
                    "$ref": "#/definitions/universalIdField"
                },
                "additionalInformation1": {
                    "$ref": "#/definitions/universalIdField"
                },
                "address": {
                    "$ref": "#/definitions/universalIdField"
                },
                "audit": {
                    "$ref": "#/definitions/universalIdField"
                },
                "authority": {
                    "$ref": "#/definitions/universalIdField"
                },
                "cardNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "categories": {
                    "$ref": "#/definitions/universalIdField"
                },
                "conditions": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfExpiry": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfIssue": {
                    "$ref": "#/definitions/universalIdField"
                },
                "documentDiscriminator": {
                    "$ref": "#/definitions/universalIdField"
                },
                "documentNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "duplicate": {
                    "$ref": "#/definitions/universalIdField"
                },
                "duration": {
                    "$ref": "#/definitions/universalIdField"
                },
                "endorsements": {
                    "$ref": "#/definitions/universalIdField"
                },
                "eyes": {
                    "$ref": "#/definitions/universalIdField"
                },
                "firstIssued": {
                    "$ref": "#/definitions/universalIdField"
                },
                "firstName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "fullName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "givenNames": {
                    "$ref": "#/definitions/universalIdField"
                },
                "hair": {
                    "$ref": "#/definitions/universalIdField"
                },
                "height": {
                    "$ref": "#/definitions/universalIdField"
                },
                "lastName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "licenceNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "licenseClass": {
                    "$ref": "#/definitions/universalIdField"
                },
                "licenseNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "name": {
                    "$ref": "#/definitions/universalIdField"
                },
                "office": {
                    "$ref": "#/definitions/universalIdField"
                },
                "parish": {
                    "$ref": "#/definitions/universalIdField"
                },
                "personalNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "placeOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "previousType": {
                    "$ref": "#/definitions/universalIdField"
                },
                "restrictions": {
                    "$ref": "#/definitions/universalIdField"
                },
                "revoked": {
                    "$ref": "#/definitions/universalIdField"
                },
                "sex": {
                    "$ref": "#/definitions/universalIdField"
                },
                "surname": {
                    "$ref": "#/definitions/universalIdField"
                },
                "type": {
                    "$ref": "#/definitions/universalIdField"
                },
                "version": {
                    "$ref": "#/definitions/universalIdField"
                },
                "verticalNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "weight": {
                    "$ref": "#/definitions/universalIdField"
                }
            },
            "additionalProperties": false
        },
        "layoutIdFront": {
            "description": "Contains all the supported field scan options for ID front cards.",
            "type": "object",
            "properties": {
                "additionalInformation": {
                    "$ref": "#/definitions/universalIdField"
                },
                "additionalInformation1": {
                    "$ref": "#/definitions/universalIdField"
                },
                "address": {
                    "$ref": "#/definitions/universalIdField"
                },
                "age": {
                    "$ref": "#/definitions/universalIdField"
                },
                "authority": {
                    "$ref": "#/definitions/universalIdField"
                },
                "cardAccessNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "citizenship": {
                    "$ref": "#/definitions/universalIdField"
                },
                "cityNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfExpiry": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfIssue": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfRegistration": {
                    "$ref": "#/definitions/universalIdField"
                },
                "divisionNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "documentNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "familyName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "fathersName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "firstName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "folio": {
                    "$ref": "#/definitions/universalIdField"
                },
                "fullName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "givenNames": {
                    "$ref": "#/definitions/universalIdField"
                },
                "height": {
                    "$ref": "#/definitions/universalIdField"
                },
                "lastName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "licenseClass": {
                    "$ref": "#/definitions/universalIdField"
                },
                "licenseType": {
                    "$ref": "#/definitions/universalIdField"
                },
                "municipalityNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "nationalId": {
                    "$ref": "#/definitions/universalIdField"
                },
                "nationality": {
                    "$ref": "#/definitions/universalIdField"
                },
                "parentsGivenName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "personalNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "placeAndDateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "placeOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "sex": {
                    "$ref": "#/definitions/universalIdField"
                },
                "stateNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "supportNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "surname": {
                    "$ref": "#/definitions/universalIdField"
                },
                "voterId": {
                    "$ref": "#/definitions/universalIdField"
                }
            },
            "additionalProperties": false
        },
        "layoutInsuranceCard": {
            "description": "Contains all the supported field scan options for insurance cards.",
            "type": "object",
            "properties": {
                "authority": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfBirth": {
                    "$ref": "#/definitions/universalIdField"
                },
                "dateOfExpiry": {
                    "$ref": "#/definitions/universalIdField"
                },
                "documentNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "nationality": {
                    "$ref": "#/definitions/universalIdField"
                },
                "personalNumber": {
                    "$ref": "#/definitions/universalIdField"
                },
                "lastName": {
                    "$ref": "#/definitions/universalIdField"
                },
                "firstName": {
                    "$ref": "#/definitions/universalIdField"
                }
            },
            "additionalProperties": false
        },
        "universalIdField": {
            "type": "object",
            "description": "Configures scanning options for ID fields in order to fine-tune the ID scanner.",
            "properties": {
                "scanOption": {
                    "description": "The scanOption determines whether a field is considered optional, mandatory, disabled or follows a default behavior. Default behavior is one of the other three that yields the best recall results with all layouts enabled.",
                    "type": "string",
                    "enum": [
                        "mandatory",
                        "optional",
                        "disabled",
                        "default"
                    ],
                    "default": "default"
                },
                "minConfidence": {
                    "description": "Set the minConfidence which has to be reached in order to trigger a scan result. The value has to be between 0 and 100. Defaults to 60.",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                }
            },
            "additionalProperties": false
        },
        "universalIdConfig": {
            "description": "Configuration for scanning all kinds of identification documents",
            "type": "object",
            "properties": {
                "alphabet": {
                    "description": "Sets a specific character set.",
                    "type": "string",
                    "enum": [
                        "latin",
                        "arabic",
                        "cyrillic"
                    ],
                    "default": "latin"
                },
                "allowedLayouts": {
                    "type": "object",
                    "description": "Specifies the document types to be scanned and optionally further specifies which types of layout are scanned per type.",
                    "properties": {
                        "mrz": {
                            "$ref": "#/definitions/allowedLayout"
                        },
                        "drivingLicense": {
                            "$ref": "#/definitions/allowedLayout"
                        },
                        "idFront": {
                            "$ref": "#/definitions/allowedLayout"
                        },
                        "insuranceCard": {
                            "$ref": "#/definitions/allowedLayout"
                        }
                    },
                    "additionalProperties": false
                },
                "mrz": {
                    "$ref": "#/definitions/layoutMRZ"
                },
                "drivingLicense": {
                    "$ref": "#/definitions/layoutDrivingLicense"
                },
                "idFront": {
                    "$ref": "#/definitions/layoutIdFront"
                },
                "insuranceCard": {
                    "$ref": "#/definitions/layoutInsuranceCard"
                },
                "faceDetectionEnabled": {
                    "type": "boolean",
                    "description": "Sets whether the face detection approach is enabled.",
                    "default": false
                }
            },
            "dependencies": {
                "mrz": {
                    "properties": {
                        "allowedLayouts": {
                            "required": [
                                "mrz"
                            ]
                        }
                    }
                },
                "drivingLicense": {
                    "properties": {
                        "allowedLayouts": {
                            "required": [
                                "drivingLicense"
                            ]
                        }
                    }
                },
                "idFront": {
                    "properties": {
                        "allowedLayouts": {
                            "required": [
                                "idFront"
                            ]
                        }
                    }
                },
                "insuranceCard": {
                    "properties": {
                        "allowedLayouts": {
                            "required": [
                                "insuranceCard"
                            ]
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "mrzScanOption": {
            "type": "string",
            "description": "The mrzScanOption determines whether a field is considered optional, mandatory, disabled or follows a default behavior.",
            "enum": [
                "mandatory",
                "optional",
                "disabled",
                "default"
            ]
        },
        "minConfidenceField": {
            "type": "integer",
            "description": "The minimum field confidence determines the minimum confidence a field text needs to reach in order to be taken into account. If the scanned field confidence is lower than the set minConfidenceField but the scanOption is not set to mandatory, a result will be retuned without the field. The value has to be between 0 and 100. Defaults to 60.",
            "minimum": 0,
            "maximum": 100
        },
        "mrzConfig": {
            "description": "Configuration for scanning machine-readable zones (MRZ) of passports and other IDs",
            "type": "object",
            "properties": {
                "mrzFieldScanOptions": {
                    "type": "object",
                    "description": "The fieldmrzScanOptions configure which text fields shall be captured mandatory, optional or not at all.",
                    "properties": {
                        "surname": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "givenNames": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "dateOfBirth": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "dateOfExpiry": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "documentNumber": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "documentType": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "issuingCountryCode": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "nationalityCountryCode": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "sex": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "personalNumber": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "optionalData": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "mrzString": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "checkDigitDateOfExpiry": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "checkDigitDocumentNumber": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "checkDigitPersonalNumber": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "checkDigitDateOfBirth": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "checkDigitFinal": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizAddress": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizDateOfIssue": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizSurname": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizGivenNames": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizDateOfBirth": {
                            "$ref": "#/definitions/mrzScanOption"
                        },
                        "vizDateOfExpiry": {
                            "$ref": "#/definitions/mrzScanOption"
                        }
                    },
                    "additionalProperties": false
                },
                "mrzMinFieldConfidences": {
                    "type": "object",
                    "description": "The minFieldConfidences configure which fields must reach which confidence thresholds in order to be part of the scan result.",
                    "properties": {
                        "surname": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "givenNames": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "dateOfBirth": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "dateOfExpiry": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "documentNumber": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "documentType": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "issuingCountryCode": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "nationalityCountryCode": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "sex": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "personalNumber": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "optionalData": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "mrzString": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "checkDigitDateOfExpiry": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "checkDigitDocumentNumber": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "checkDigitPersonalNumber": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "checkDigitDateOfBirth": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "checkDigitFinal": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizAddress": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizDateOfIssue": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizSurname": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizGivenNames": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizDateOfBirth": {
                            "$ref": "#/definitions/minConfidenceField"
                        },
                        "vizDateOfExpiry": {
                            "$ref": "#/definitions/minConfidenceField"
                        }
                    },
                    "additionalProperties": false
                },
                "strictMode": {
                    "type": "boolean",
                    "description": "The strictMode determines whether or not the MRZ must follow the ICAO standard.",
                    "default": false
                },
                "cropAndTransformID": {
                    "type": "boolean",
                    "description": "The cropAndTransformID determines whether or not the image shall be cropped and transformed.",
                    "default": false
                },
                "minConfidence": {
                    "type": "integer",
                    "description": "Sets a minimum confidence which has to be reached in order to trigger a scan result.",
                    "default": 60,
                    "minimum": 0,
                    "maximum": 100
                },
                "faceDetectionEnabled": {
                    "type": "boolean",
                    "description": "Sets whether the face detection approach is enabled.",
                    "default": false
                }
            },
            "required": [
                "strictMode",
                "cropAndTransformID"
            ],
            "additionalProperties": false
        },
        "layoutVehicleRegistrationCertificate": {
            "description": "Contains all the supported field scan options for vehicle registration certificates.",
            "type": "object",
            "properties": {
                "documentNumber": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The DocumentNumber Field"
                },
                "licensePlate": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The LicensePlate Field"
                },
                "lastName": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The LastName Field"
                },
                "firstName": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The FirstName Field"
                },
                "address": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The Address Field"
                },
                "firstIssued": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The FirstIssued Field"
                },
                "manufacturerCode": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The ManufacturerCode Field"
                },
                "vehicleTypeCode": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The VehicleTypeCode Field"
                },
                "vehicleIdentificationNumber": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The VehicleIdentificationNumber Field"
                },
                "brand": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The Brand Field"
                },
                "vehicleType": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The VehicleType Field"
                },
                "displacement": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The Displacement Field"
                },
                "tire": {
                    "$ref": "#/definitions/vehicleRegistrationCertificateField",
                    "description": "The Tire Field"
                }
            },
            "additionalProperties": false
        },
        "vehicleRegistrationCertificateField": {
            "type": "object",
            "description": "Configures scanning options per field",
            "properties": {
                "scanOption": {
                    "description": "The scanOption determines whether a field is considered optional, mandatory, disabled or follows a default behavior. Default behavior is one of the other three that yields the best recall results with all layouts enabled.",
                    "type": "string",
                    "enum": [
                        "mandatory",
                        "optional",
                        "disabled",
                        "default"
                    ],
                    "default": "default"
                },
                "minConfidence": {
                    "description": "Set the minConfidence between 0 and 100. Otherwise, it's defaulted.",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                }
            },
            "additionalProperties": false
        },
        "vehicleRegistrationCertificateConfig": {
            "description": "Configuration for scanning Vehicle Registration Certificates",
            "type": "object",
            "properties": {
                "vehicleRegistrationCertificate": {
                    "$ref": "#/definitions/layoutVehicleRegistrationCertificate"
                }
            },
            "additionalProperties": false
        },
        "japaneseLandingPermissionConfig": {
            "description": "Configuration for scanning japanese landing permission tickets",
            "type": "object",
            "properties": {
                "dateOfIssue": {
                    "$ref": "#/definitions/japaneseLandingPermissionConfigFieldOption"
                },
                "dateOfExpiry": {
                    "$ref": "#/definitions/japaneseLandingPermissionConfigFieldOption"
                },
                "status": {
                    "$ref": "#/definitions/japaneseLandingPermissionConfigFieldOption"
                },
                "duration": {
                    "$ref": "#/definitions/japaneseLandingPermissionConfigFieldOption"
                },
                "airport": {
                    "$ref": "#/definitions/japaneseLandingPermissionConfigFieldOption"
                }
            }
        },
        "japaneseLandingPermissionConfigFieldOption": {
            "type": "object",
            "description": "Field option for JLP fields",
            "properties": {
                "scanOption": {
                    "description": "The scanOption determines whether a field is considered optional, mandatory, disabled or follows a default behavior. Default behavior is one of the other three that yields the best recall results with all layouts enabled.",
                    "type": "string",
                    "enum": [
                        "mandatory",
                        "optional",
                        "disabled",
                        "default"
                    ],
                    "default": "default"
                },
                "minConfidence": {
                    "description": "Set the minConfidence between 0 and 100. Otherwise, it's defaulted.",
                    "type": "integer"
                }
            }
        }
    },
    "additionalProperties": false
}
UIFeedbackConfig JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema",
  "title": "UIFeedbackConfig",
  "description": "General configuration for UI Feedback elements",
  "type": "object",
  "properties": {
    "elements": {
      "type": "array",
      "description": "Elements inside UIFeedbackConfig.",
      "items": {
        "$ref": "#/definitions/element"
      }
    },
    "presetDefinitions": {
      "type": "array",
      "description": "Preset definitions inside UIFeedbackConfig.",
      "items": {
        "$ref": "#/definitions/presetDefinition"
      }
    },
    "presets": {
      "type": "array",
      "description": "Allows to use presets.",
      "items": {
        "$ref": "#/definitions/preset"
      }
    }
  },
  "definitions": {
    "overlayScale": {
      "title": "OverlayScaleConfig",
      "description": "Configuration for UI Feedback overlays",
      "type": "object",
      "properties": {
        "scaleValue": {
          "description": "Sets the scale value of the overlay.",
          "type": "number"
        },
        "scaleType": {
          "title": "OverlayScaleTypeConfig",
          "description": "Sets the scale type of the overlay.",
          "type": "string",
          "enum": [
            "none",
            "fixed_px",
            "keep_ratio",
            "overlay"
          ]
        }
      }
    },
    "overlayDimension": {
      "title": "OverlayDimensionConfig",
      "description": "Sets the dimension of the overlay.",
      "type": "object",
      "properties": {
        "scaleX": {
          "description": "Sets the scale for x axis of the overlay.",
          "$ref": "#/definitions/overlayScale"
        },
        "scaleY": {
          "description": "Sets the scale for y axis of the overlay.",
          "$ref": "#/definitions/overlayScale"
        }
      }
    },
    "overlayAnchor": {
      "title": "OverlayAnchorConfig",
      "description": "Sets the anchor of the overlay relative to the source defined in the overlaySource.",
      "type": "string",
      "enum": [
        "top_left",
        "top_center",
        "top_right",
        "center_left",
        "center",
        "center_right",
        "bottom_left",
        "bottom_center",
        "bottom_right"
      ]
    },
    "overlaySource": {
      "type": "string",
      "enum": [
        "cutout"
      ],
      "default": "cutout",
      "description": "Sets the source of the overlay. Currently cutout is the only available overlay source."
    },
    "overlay": {
      "title": "OverlayConfig",
      "description": "Configuration for UI Feedback overlays",
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/definitions/overlaySource",
          "description": "Sets the source of the overlay."
        },
        "anchor": {
          "$ref": "#/definitions/overlayAnchor",
          "description": "Sets the anchor of the overlay."
        },
        "sizeDimension": {
          "$ref": "#/definitions/overlayDimension",
          "description": "Sets the size dimension of the overlay."
        },
        "offsetDimension": {
          "$ref": "#/definitions/overlayDimension",
          "description": "Sets the offset dimension of the overlay."
        },
        "presets": {
          "type": "array",
          "description": "Allows to use overlay presets.",
          "items": {
            "$ref": "#/definitions/preset"
          }
        }
      }
    },
    "content": {
      "title": "UIFeedbackElementContentConfig",
      "description": "Configuration for UI Feedback content",
      "type": "object",
      "properties": {
        "contentValue": {
          "type": "string",
          "default": "",
          "description": "Sets the content of the element."
        },
        "durationMills": {
          "type": "integer",
          "default": 0,
          "minimum": 0,
          "maximum": 1000000,
          "description": "Sets the duration of the element."
        },
        "priorityLevel": {
          "type": "integer",
          "default": 1,
          "minimum": 0,
          "maximum": 100,
          "description": "Sets the priority of the element."
        }
      }
    },
    "triggerScanInfo": {
      "title": "UIFeedbackElementTriggerScanInfoConfig",
      "description": "Configuration for triggering UI Feedback on ScanInfo events",
      "type": "object",
      "properties": {
        "applyDefaultContent": {
          "type": "boolean",
          "default": false,
          "description": "Sets whether the trigger must apply defaultContent."
        },
        "applyContentInstead": {
          "$ref": "#/definitions/content"
        },
        "applyDefaultAttributes": {
          "type": "boolean",
          "default": false,
          "description": "Sets whether the trigger must apply defaultAttributes."
        },
        "applyAttributesInstead": {
          "$ref": "#/definitions/elementAttributes"
        },
        "varNameEquals": {
          "type": "string",
          "default": "",
          "description": "Sets the ScanInfo variable name to be watched."
        },
        "varValueEquals": {
          "type": "string",
          "default": "",
          "description": "Sets the ScanInfo variable value to be watched."
        }
      }
    },
    "triggerRunSkipped": {
      "title": "UIFeedbackElementTriggerRunSkippedConfig",
      "description": "Configuration for triggering UI Feedback on RunSkipped events",
      "type": "object",
      "properties": {
        "applyDefaultContent": {
          "type": "boolean",
          "default": false,
          "description": "Sets whether the trigger must apply defaultContent."
        },
        "applyContentInstead": {
          "$ref": "#/definitions/content"
        },
        "applyDefaultAttributes": {
          "type": "boolean",
          "default": false,
          "description": "Sets whether the trigger must apply defaultAttributes."
        },
        "applyAttributesInstead": {
          "$ref": "#/definitions/elementAttributes"
        },
        "codeEquals": {
          "type": "integer",
          "default": "0",
          "description": "Sets the runSkipped code to be watched."
        }
      }
    },
    "triggerWhenScanInfo": {
      "title": "UIFeedbackElementTriggerWhenScanInfoConfig",
      "description": "Configuration for triggering UI Feedback on ScanInfo events",
      "type": "object",
      "properties": {
        "when": {
          "javaName": "whenElement",
          "type": "object",
          "$ref": "#/definitions/triggerScanInfo"
        }
      }
    },
    "triggerWhenRunSkipped": {
      "title": "UIFeedbackElementTriggerWhenRunSkippedConfig",
      "description": "Configuration for triggering UI Feedback on RunSkipped events",
      "type": "object",
      "properties": {
        "when": {
          "javaName": "whenElement",
          "type": "object",
          "$ref": "#/definitions/triggerRunSkipped"
        }
      }
    },
    "elementTrigger": {
      "title": "UIFeedbackElementTriggerConfig",
      "description": "Trigger configuration for UI Feedback",
      "type": "object",
      "properties": {
        "scanInfo": {
          "type": "array",
          "description": "Allows to watch scanInfo events.",
          "items": {
            "$ref": "#/definitions/triggerWhenScanInfo"
          }
        },
        "runSkipped": {
          "type": "array",
          "description": "Allows to watch runSkipped events.",
          "items": {
            "$ref": "#/definitions/triggerWhenRunSkipped"
          }
        },
        "presets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/preset"
          }
        }
      }
    },
    "elementType": {
      "type": "string",
      "enum": [
        "image",
        "sound",
        "text"
      ],
      "default": "text",
      "description": "Sets the view type of the element."
    },
    "elementAttributes": {
      "title": "UIFeedbackElementAttributesConfig",
      "description": "Configuration attributes for UI Feedback view elements",
      "type": "object",
      "properties": {
        "textAlignment": {
          "type": "string",
          "enum": [
            "left",
            "right",
            "center"
          ],
          "default": "center",
          "description": "Sets the text alignment."
        },
        "textColor": {
          "type": "string",
          "description": "Sets the text color."
        },
        "backgroundColor": {
          "type": "string",
          "description": "Sets the background color."
        },
        "imageScaleType": {
          "type": "string",
          "enum": [
            "center",
            "center_crop",
            "fit_center",
            "fit_xy"
          ],
          "default": "fit_center",
          "description": "Sets the image scale type."
        }
      }
    },
    "element": {
      "title": "UIFeedbackElementConfig",
      "description": "Configuration for uiFeedback element",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Sets the id of the element."
        },
        "contentType": {
          "$ref": "#/definitions/elementType"
        },
        "defaultContent": {
          "$ref": "#/definitions/content"
        },
        "clickable": {
          "type": "boolean",
          "default": false,
          "description": "Sets whether the view is clickable."
        },
        "tag": {
          "type": "string",
          "default": "",
          "description": "Sets a tag for the element."
        },
        "defaultAttributes": {
          "$ref": "#/definitions/elementAttributes"
        },
        "trigger": {
          "$ref": "#/definitions/elementTrigger"
        },
        "overlay": {
          "$ref": "#/definitions/overlay"
        },
        "presets": {
          "type": "array",
          "description": "Allows to use element presets.",
          "items": {
            "$ref": "#/definitions/preset"
          }
        }
      }
    },
    "presetDefinitionAttribute": {
      "title": "UIFeedbackPresetDefinitionAttributeConfig",
      "description": "Configuration for uiFeedback preset definition attribute.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Sets the name of the attribute."
        },
        "elementName": {
          "type": "string",
          "description": "Sets the name of the element of the attribute."
        },
        "elementType": {
          "type": "string",
          "enum": [
            "int",
            "long",
            "double",
            "boolean",
            "string",
            "any"
          ],
          "description": "Sets the preset definition attribute element type."
        }
      }
    },
    "presetDefinition": {
      "title": "UIFeedbackPresetDefinitionConfig",
      "description": "Configuration for uiFeedback preset definition.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Sets the name of the preset definition."
        },
        "type": {
          "type": "string",
          "enum": [
            "presetElementOverlay",
            "presetElementTrigger",
            "presetElement",
            "preset"
          ],
          "description": "Sets the preset definition type."
        },
        "attributes": {
          "type": "array",
          "description": "Attributes inside preset definition.",
          "items": {
            "$ref": "#/definitions/presetDefinitionAttribute"
          }
        },
        "presetContent": {
          "title": "UIFeedbackPresetContentConfig",
          "description": "Configuration for uiFeedback preset content definition.",
          "type": "object",
          "properties": {
            "overlay": {
              "$ref": "#/definitions/overlay"
            },
            "trigger": {
              "$ref": "#/definitions/elementTrigger"
            },
            "element": {
              "$ref": "#/definitions/element"
            },
            "elements": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/element"
              }
            },
            "presets": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/preset"
              }
            }
          }
        }
      },
      "required":  [
        "name",
        "type"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "type": { "const": "presetElementOverlay" }
            }
          },
          "then": {
            "properties": {
              "presetContent": {
                "required": ["overlay"]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": { "const": "presetElementTrigger" }
            }
          },
          "then": {
            "properties": {
              "presetContent": {
                "required": ["trigger"]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": { "const": "presetElement" }
            }
          },
          "then": {
            "properties": {
              "presetContent": {
                "required": ["element"]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "type": { "const": "preset" }
            }
          },
          "then": {
            "properties": {
              "presetContent": {
                "required": ["elements"]
              }
            }
          }
        }
      ]
    },
    "presetAttribute": {
      "title": "UIFeedbackPresetAttributeConfig",
      "description": "Configuration for uiFeedback preset attribute.",
      "type": "object",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "Name of the attribute declared in the preset definition."
        },
        "attributeValue": {
          "type": "string",
          "description": "Sets the value of the attribute."
        }
      }
    },
    "preset": {
      "title": "UIFeedbackPresetConfig",
      "description": "Configuration for uiFeedback preset.",
      "type": "object",
      "properties": {
        "presetName": {
          "type": "string",
          "description": "Name of the preset."
        },
        "presetAttributes": {
          "type": "array",
          "description": "Attributes inside preset.",
          "items": {
            "$ref": "#/definitions/presetAttribute"
          }
        }
      }
    }
  }
}