diff --git a/.github/workflows/back-merge-handler.yml b/.github/workflows/back-merge-handler.yml index 0346f03..f6a5269 100644 --- a/.github/workflows/back-merge-handler.yml +++ b/.github/workflows/back-merge-handler.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest if: github.ref_name == 'master' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest if: github.ref_name == 'stable' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 diff --git a/.github/workflows/back-merge.yaml b/.github/workflows/back-merge.yaml new file mode 100644 index 0000000..37f44cd --- /dev/null +++ b/.github/workflows/back-merge.yaml @@ -0,0 +1,16 @@ +name: Back Merge + +on: + push: + branches: + - master + - stable + +jobs: + back-merge: + uses: regulaforensics/reusable-workflows/.github/workflows/back-merge.yaml@f9848fa9ec1ae1e6285b56200ac1f24fbfaee0c3 # main + with: + source_branch: ${{ github.ref_name }} + merge_pairs: "master:stable,stable:develop" + secrets: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/run-smoke-test.yml b/.github/workflows/run-smoke-test.yml index d3eeded..7e10a6f 100755 --- a/.github/workflows/run-smoke-test.yml +++ b/.github/workflows/run-smoke-test.yml @@ -11,9 +11,9 @@ jobs: run_smoke_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 with: python-version: 3.9 - name: Install pipenv diff --git a/.github/workflows/sast.yaml b/.github/workflows/sast.yaml index 2c68e11..336b15d 100644 --- a/.github/workflows/sast.yaml +++ b/.github/workflows/sast.yaml @@ -1,4 +1,8 @@ -name: Semgrep SAST +# This repository is public and cannot call reusable workflows from a private +# repository (regulaforensics/reusable-workflows). The logic below is a local +# copy that mirrors the reusable workflow exactly. SHA pins are kept up-to-date +# by Renovate (see renovate.json). +name: SAST on: pull_request: @@ -10,49 +14,32 @@ on: - main - master -env: - # Fail workflow or not if vulnerabilities found - FAIL_ON_VULNERABILITIES: true - # List of paths (space separated) to ignore - # Supports PATTERNS - # EXCLUDE_PATHS: 'foo bar/baz file.txt dir/*.yml' - EXCLUDE_PATHS: 'generator-templates regula/documentreader/webclient/gen .github' - # List of rules (space separated) to ignore - # EXCLUDE_RULES: 'generic.secrets.security.detected-aws-account-id.detected-aws-account-id' - # See https://github.com/semgrep/semgrep-rules for rules registry - EXCLUDE_RULES: '' - jobs: semgrep: name: semgrep-oss/scan runs-on: ubuntu-latest container: - image: semgrep/semgrep + image: semgrep/semgrep@sha256:65dcd4408adda7c183a6b4550cb1e9b19f7f627a6fbb7e0559bd466bedc44d7b steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Scan shell: bash + env: + EXCLUDE_PATHS: 'generator-templates regula/documentreader/webclient/gen .github' + EXCLUDE_RULES: '' run: | EXCLUDED_PATHS=() - if [[ ! -z $EXCLUDE_PATHS ]]; then + if [[ -n "$EXCLUDE_PATHS" ]]; then for path in $EXCLUDE_PATHS; do - EXCLUDED_PATHS+=("--exclude $path") + EXCLUDED_PATHS+=("--exclude" "$path") done fi EXCLUDED_RULES=() - if [[ ! -z $EXCLUDE_RULES ]]; then + if [[ -n "$EXCLUDE_RULES" ]]; then for rule in $EXCLUDE_RULES; do - EXCLUDED_RULES+=("--exclude-rule $rule") + EXCLUDED_RULES+=("--exclude-rule" "$rule") done fi - if [[ $FAIL_ON_VULNERABILITIES == "true" ]]; then - semgrep scan --config auto ${EXCLUDED_PATHS[@]} ${EXCLUDED_RULES[@]} --error --verbose - elif [[ $FAIL_ON_VULNERABILITIES == "false" ]]; then - semgrep scan --config auto ${EXCLUDED_PATHS[@]} ${EXCLUDED_RULES[@]} --error --verbose || true - else - echo "Bad FAIL_ON_VULNERABILITIES env var value" - exit 1 - fi - + semgrep scan --config auto "${EXCLUDED_PATHS[@]}" "${EXCLUDED_RULES[@]}" --error --verbose diff --git a/.github/workflows/trivy-scan.yaml b/.github/workflows/trivy-scan.yaml index 232ca59..df8bcfc 100644 --- a/.github/workflows/trivy-scan.yaml +++ b/.github/workflows/trivy-scan.yaml @@ -1,27 +1,32 @@ +# This repository is public and cannot call reusable workflows from a private +# repository (regulaforensics/reusable-workflows). The logic below is a local +# copy that mirrors the reusable workflow exactly. SHA pins are kept up-to-date +# by Renovate (see renovate.json). name: Trivy Scan on: pull_request: branches: - - main - - master - develop + - staging + - production - stable + - main + - master jobs: trivy-scan: - name: Scanner runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - name: Run Trivy vulnerability scanner in fs mode - uses: aquasecurity/trivy-action@v0.35.0 - with: - scan-type: 'fs' - exit-code: '1' - ignore-unfixed: true - severity: 'CRITICAL,HIGH,MEDIUM,LOW' - env: - TRIVY_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-db:2 + - name: Run Trivy scanner + uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0 + with: + scan-type: 'fs' + exit-code: '1' + ignore-unfixed: true + severity: 'CRITICAL,HIGH,MEDIUM,LOW' + env: + TRIVY_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-db:2 diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 7aa8e86..7cb8630 100755 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -143,6 +143,7 @@ regula/documentreader/webclient/gen/models/mrz_rows_item.py regula/documentreader/webclient/gen/models/mrz_test_quality.py regula/documentreader/webclient/gen/models/mrz_test_quality_item.py regula/documentreader/webclient/gen/models/mrz_test_quality_result.py +regula/documentreader/webclient/gen/models/occlusion_check_params.py regula/documentreader/webclient/gen/models/ocr_security_text_item.py regula/documentreader/webclient/gen/models/ocr_security_text_result.py regula/documentreader/webclient/gen/models/one_candidate.py @@ -177,6 +178,7 @@ regula/documentreader/webclient/gen/models/result_item.py regula/documentreader/webclient/gen/models/result_mrz_detector.py regula/documentreader/webclient/gen/models/result_mrz_detector_item.py regula/documentreader/webclient/gen/models/rfid_a_chip.py +regula/documentreader/webclient/gen/models/rfid_access_control.py regula/documentreader/webclient/gen/models/rfid_access_control_info.py regula/documentreader/webclient/gen/models/rfid_access_control_procedure_type.py regula/documentreader/webclient/gen/models/rfid_access_key.py diff --git a/regula/documentreader/webclient/ext/models/recognition_request.py b/regula/documentreader/webclient/ext/models/recognition_request.py index 2504a42..0b4a19c 100755 --- a/regula/documentreader/webclient/ext/models/recognition_request.py +++ b/regula/documentreader/webclient/ext/models/recognition_request.py @@ -69,6 +69,7 @@ def __init__( images: List[Union[RecognitionImage, bytes, Base64String]] = None, container_list: ContainerList = None, tag=None, system_info: ProcessSystemInfo = ProcessSystemInfo(), + tenant: str = None, env: str = None ): input_images = [] if images: @@ -81,12 +82,16 @@ def __init__( processParam=process_params, List=input_images, systemInfo=system_info, - tag=tag + tag=tag, + tenant=tenant, + env=env ) if container_list: super().__init__( processParam=process_params, ContainerList=container_list, systemInfo=system_info, - tag=tag + tag=tag, + tenant=tenant, + env=env ) diff --git a/regula/documentreader/webclient/gen/__init__.py b/regula/documentreader/webclient/gen/__init__.py index 1207645..aed4fff 100644 --- a/regula/documentreader/webclient/gen/__init__.py +++ b/regula/documentreader/webclient/gen/__init__.py @@ -157,6 +157,7 @@ "MrzPositionItem", "OCRSecurityTextItem", "OCRSecurityTextResult", + "OcclusionCheckParams", "OneCandidate", "OneCandidateItem", "OriginalSymbol", @@ -197,6 +198,7 @@ "ResultMRZDetector", "ResultMRZDetectorItem", "RfidAChip", + "RfidAccessControl", "RfidAccessControlInfo", "RfidAccessControlProcedureType", "RfidAccessKey", @@ -429,6 +431,7 @@ from regula.documentreader.webclient.gen.models.mrz_position_item import MrzPositionItem as MrzPositionItem from regula.documentreader.webclient.gen.models.ocr_security_text_item import OCRSecurityTextItem as OCRSecurityTextItem from regula.documentreader.webclient.gen.models.ocr_security_text_result import OCRSecurityTextResult as OCRSecurityTextResult + from regula.documentreader.webclient.gen.models.occlusion_check_params import OcclusionCheckParams as OcclusionCheckParams from regula.documentreader.webclient.gen.models.one_candidate import OneCandidate as OneCandidate from regula.documentreader.webclient.gen.models.one_candidate_item import OneCandidateItem as OneCandidateItem from regula.documentreader.webclient.gen.models.original_symbol import OriginalSymbol as OriginalSymbol @@ -469,6 +472,7 @@ from regula.documentreader.webclient.gen.models.result_mrz_detector import ResultMRZDetector as ResultMRZDetector from regula.documentreader.webclient.gen.models.result_mrz_detector_item import ResultMRZDetectorItem as ResultMRZDetectorItem from regula.documentreader.webclient.gen.models.rfid_a_chip import RfidAChip as RfidAChip + from regula.documentreader.webclient.gen.models.rfid_access_control import RfidAccessControl as RfidAccessControl from regula.documentreader.webclient.gen.models.rfid_access_control_info import RfidAccessControlInfo as RfidAccessControlInfo from regula.documentreader.webclient.gen.models.rfid_access_control_procedure_type import RfidAccessControlProcedureType as RfidAccessControlProcedureType from regula.documentreader.webclient.gen.models.rfid_access_key import RfidAccessKey as RfidAccessKey @@ -707,6 +711,7 @@ from regula.documentreader.webclient.gen.models.mrz_position_item import MrzPositionItem as MrzPositionItem from regula.documentreader.webclient.gen.models.ocr_security_text_item import OCRSecurityTextItem as OCRSecurityTextItem from regula.documentreader.webclient.gen.models.ocr_security_text_result import OCRSecurityTextResult as OCRSecurityTextResult +from regula.documentreader.webclient.gen.models.occlusion_check_params import OcclusionCheckParams as OcclusionCheckParams from regula.documentreader.webclient.gen.models.one_candidate import OneCandidate as OneCandidate from regula.documentreader.webclient.gen.models.one_candidate_item import OneCandidateItem as OneCandidateItem from regula.documentreader.webclient.gen.models.original_symbol import OriginalSymbol as OriginalSymbol @@ -747,6 +752,7 @@ from regula.documentreader.webclient.gen.models.result_mrz_detector import ResultMRZDetector as ResultMRZDetector from regula.documentreader.webclient.gen.models.result_mrz_detector_item import ResultMRZDetectorItem as ResultMRZDetectorItem from regula.documentreader.webclient.gen.models.rfid_a_chip import RfidAChip as RfidAChip +from regula.documentreader.webclient.gen.models.rfid_access_control import RfidAccessControl as RfidAccessControl from regula.documentreader.webclient.gen.models.rfid_access_control_info import RfidAccessControlInfo as RfidAccessControlInfo from regula.documentreader.webclient.gen.models.rfid_access_control_procedure_type import RfidAccessControlProcedureType as RfidAccessControlProcedureType from regula.documentreader.webclient.gen.models.rfid_access_key import RfidAccessKey as RfidAccessKey diff --git a/regula/documentreader/webclient/gen/models/__init__.py b/regula/documentreader/webclient/gen/models/__init__.py index 5eb8b79..66c9489 100644 --- a/regula/documentreader/webclient/gen/models/__init__.py +++ b/regula/documentreader/webclient/gen/models/__init__.py @@ -141,6 +141,7 @@ from regula.documentreader.webclient.gen.models.mrz_position_item import MrzPositionItem from regula.documentreader.webclient.gen.models.ocr_security_text_item import OCRSecurityTextItem from regula.documentreader.webclient.gen.models.ocr_security_text_result import OCRSecurityTextResult + from regula.documentreader.webclient.gen.models.occlusion_check_params import OcclusionCheckParams from regula.documentreader.webclient.gen.models.one_candidate import OneCandidate from regula.documentreader.webclient.gen.models.one_candidate_item import OneCandidateItem from regula.documentreader.webclient.gen.models.original_symbol import OriginalSymbol @@ -181,6 +182,7 @@ from regula.documentreader.webclient.gen.models.result_mrz_detector import ResultMRZDetector from regula.documentreader.webclient.gen.models.result_mrz_detector_item import ResultMRZDetectorItem from regula.documentreader.webclient.gen.models.rfid_a_chip import RfidAChip + from regula.documentreader.webclient.gen.models.rfid_access_control import RfidAccessControl from regula.documentreader.webclient.gen.models.rfid_access_control_info import RfidAccessControlInfo from regula.documentreader.webclient.gen.models.rfid_access_control_procedure_type import RfidAccessControlProcedureType from regula.documentreader.webclient.gen.models.rfid_access_key import RfidAccessKey @@ -400,6 +402,7 @@ from regula.documentreader.webclient.gen.models.mrz_position_item import MrzPositionItem from regula.documentreader.webclient.gen.models.ocr_security_text_item import OCRSecurityTextItem from regula.documentreader.webclient.gen.models.ocr_security_text_result import OCRSecurityTextResult +from regula.documentreader.webclient.gen.models.occlusion_check_params import OcclusionCheckParams from regula.documentreader.webclient.gen.models.one_candidate import OneCandidate from regula.documentreader.webclient.gen.models.one_candidate_item import OneCandidateItem from regula.documentreader.webclient.gen.models.original_symbol import OriginalSymbol @@ -440,6 +443,7 @@ from regula.documentreader.webclient.gen.models.result_mrz_detector import ResultMRZDetector from regula.documentreader.webclient.gen.models.result_mrz_detector_item import ResultMRZDetectorItem from regula.documentreader.webclient.gen.models.rfid_a_chip import RfidAChip +from regula.documentreader.webclient.gen.models.rfid_access_control import RfidAccessControl from regula.documentreader.webclient.gen.models.rfid_access_control_info import RfidAccessControlInfo from regula.documentreader.webclient.gen.models.rfid_access_control_procedure_type import RfidAccessControlProcedureType from regula.documentreader.webclient.gen.models.rfid_access_key import RfidAccessKey diff --git a/regula/documentreader/webclient/gen/models/image_qa.py b/regula/documentreader/webclient/gen/models/image_qa.py index a376892..ea2c76d 100644 --- a/regula/documentreader/webclient/gen/models/image_qa.py +++ b/regula/documentreader/webclient/gen/models/image_qa.py @@ -13,6 +13,7 @@ from typing import Any, ClassVar, Dict, List, Optional, Union from regula.documentreader.webclient.gen.models.glares_check_params import GlaresCheckParams from regula.documentreader.webclient.gen.models.input_image_quality_checks import InputImageQualityChecks +from regula.documentreader.webclient.gen.models.occlusion_check_params import OcclusionCheckParams from typing import Optional, Set from typing_extensions import Self from pydantic import SkipValidation, Field @@ -31,7 +32,9 @@ class ImageQA(BaseModel): document_position_indent: SkipValidation[Optional[int]] = Field(alias="documentPositionIndent", default=None, description="This parameter specifies the necessary margin. Default 0.") expected_pass: SkipValidation[Optional[List[InputImageQualityChecks]]] = Field(alias="expectedPass", default=None, description="This parameter controls the quality checks that the image should pass to be considered a valid input during the scanning process.") glares_check_params: SkipValidation[Optional[GlaresCheckParams]] = Field(alias="glaresCheckParams", default=None) - __properties: ClassVar[List[str]] = ["brightnessThreshold", "dpiThreshold", "angleThreshold", "focusCheck", "glaresCheck", "colornessCheck", "moireCheck", "documentPositionIndent", "expectedPass", "glaresCheckParams"] + occlusion_check: SkipValidation[Optional[bool]] = Field(alias="occlusionCheck", default=None, description="This option enables the occlusion detection to identify cases where parts of a document are covered by fingers, hands, or other objects during image capture.") + occlusion_check_params: SkipValidation[Optional[OcclusionCheckParams]] = Field(alias="occlusionCheckParams", default=None) + __properties: ClassVar[List[str]] = ["brightnessThreshold", "dpiThreshold", "angleThreshold", "focusCheck", "glaresCheck", "colornessCheck", "moireCheck", "documentPositionIndent", "expectedPass", "glaresCheckParams", "occlusionCheck", "occlusionCheckParams"] model_config = ConfigDict( populate_by_name=True, @@ -77,6 +80,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of glares_check_params if self.glares_check_params and isinstance(self.glares_check_params, GlaresCheckParams): _dict['glaresCheckParams'] = self.glares_check_params.to_dict() + # override the default output from pydantic by calling `to_dict()` of occlusion_check_params + if self.occlusion_check_params and isinstance(self.occlusion_check_params, OcclusionCheckParams): + _dict['occlusionCheckParams'] = self.occlusion_check_params.to_dict() return _dict @classmethod @@ -98,7 +104,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "moireCheck": obj.get("moireCheck"), "documentPositionIndent": obj.get("documentPositionIndent"), "expectedPass": obj.get("expectedPass"), - "glaresCheckParams": GlaresCheckParams.from_dict(obj["glaresCheckParams"]) if obj.get("glaresCheckParams") is not None else None + "glaresCheckParams": GlaresCheckParams.from_dict(obj["glaresCheckParams"]) if obj.get("glaresCheckParams") is not None else None, + "occlusionCheck": obj.get("occlusionCheck"), + "occlusionCheckParams": OcclusionCheckParams.from_dict(obj["occlusionCheckParams"]) if obj.get("occlusionCheckParams") is not None else None }) return _obj diff --git a/regula/documentreader/webclient/gen/models/occlusion_check_params.py b/regula/documentreader/webclient/gen/models/occlusion_check_params.py new file mode 100644 index 0000000..983165a --- /dev/null +++ b/regula/documentreader/webclient/gen/models/occlusion_check_params.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" + Generated by: https://openapi-generator.tech +""" + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Optional, Set +from typing_extensions import Self +from pydantic import SkipValidation, Field + +class OcclusionCheckParams(BaseModel): + """ + OcclusionCheckParams + """ # noqa: E501 + max_occlusion_part: SkipValidation[Optional[float]] = Field(alias="maxOcclusionPart", default=None, description="The maximum size for the occluded area of a document; only those exceeding this size will be validated") + __properties: ClassVar[List[str]] = ["maxOcclusionPart"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + arbitrary_types_allowed=True, + use_enum_values=True + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OcclusionCheckParams from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OcclusionCheckParams from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "maxOcclusionPart": obj.get("maxOcclusionPart") + }) + return _obj + + diff --git a/regula/documentreader/webclient/gen/models/process_params.py b/regula/documentreader/webclient/gen/models/process_params.py index e9c670d..3212de2 100644 --- a/regula/documentreader/webclient/gen/models/process_params.py +++ b/regula/documentreader/webclient/gen/models/process_params.py @@ -48,7 +48,7 @@ class ProcessParams(BaseModel): image_output_max_width: SkipValidation[Optional[int]] = Field(alias="imageOutputMaxWidth", default=None, description="This parameter allows setting maximum width in pixels of output images and thus reducing image size to desired. Does not change the aspect ratio. Changes disabled if equals to 0. Default 0.") scenario: SkipValidation[Scenario] = Field(alias="scenario") result_type_output: SkipValidation[Optional[List[Result]]] = Field(alias="resultTypeOutput", default=None, description="Types of results to return in response. See 'Result' enum for available options") - double_page_spread: SkipValidation[Optional[bool]] = Field(alias="doublePageSpread", default=None, description="Enable this option if the image you provide contains double page spread of the passport and you want to process both pages in one go. It makes sense to use it for documents that have meaningful information on both pages, like Russian domestic passport, or some others. Disabled by default.") + double_page_spread: SkipValidation[Optional[bool]] = Field(alias="doublePageSpread", default=None, description="This option can be set to true if the image you provide contains double page spread of the passport and you want to process both pages in one go. It makes sense to use it for documents that have meaningful information on both pages. If disabled, only one page is extracted.") generate_double_page_spread_image: SkipValidation[Optional[bool]] = Field(alias="generateDoublePageSpreadImage", default=None, description="When enabled together with \"doublePageSpread\" and there is a passport with two pages spread in the image, pages will be cropped, straightened and aligned together, as if the document was captured on a flatbed scanner. Disabled by default.") field_types_filter: SkipValidation[Optional[List[TextFieldType]]] = Field(alias="fieldTypesFilter", default=None, description="If a document contains Visual zone, you can set the list of field types to extract. In this case, other fields are skipped during the processing, i.e. document recognition becomes faster. This filter is not applicable to the MRZ, barcode or RFID. If the fieldTypesFilter is empty, all fields are extracted. Empty by default. If fieldTypesFilter and fieldTypesIgnoreFilter are used simultaneously, fieldTypesFilter takes priority.") field_types_ignore_filter: SkipValidation[Optional[List[TextFieldType]]] = Field(alias="fieldTypesIgnoreFilter", default=None, description="If a document contains a Visual zone, you can specify a list of field types that should be excluded from extraction. All field types listed in this array are skipped during processing, while the remaining fields are recognized. This filter is not applicable to the MRZ, barcode or RFID. If the fieldTypesIgnoreFilter is empty, all fields are extracted. Empty by default. If fieldTypesFilter and fieldTypesIgnoreFilter are used simultaneously, fieldTypesFilter takes priority.") diff --git a/regula/documentreader/webclient/gen/models/rfid_access_control.py b/regula/documentreader/webclient/gen/models/rfid_access_control.py new file mode 100644 index 0000000..03efe29 --- /dev/null +++ b/regula/documentreader/webclient/gen/models/rfid_access_control.py @@ -0,0 +1,31 @@ +# coding: utf-8 + +""" + Generated by: https://openapi-generator.tech +""" + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class RfidAccessControl(int, Enum): + """ + RfidAccessControl + """ + + """ + allowed enum values + """ + DEFAULT = 0 + CHIP_ACCESS_BAC = 1 + CHIP_ACCESS_PACE = 2 + LOCAL_PIN = 3 + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of RfidAccessControl from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/regula/documentreader/webclient/gen/models/rfid_application_type.py b/regula/documentreader/webclient/gen/models/rfid_application_type.py index 70e9fb6..86df9cf 100644 --- a/regula/documentreader/webclient/gen/models/rfid_application_type.py +++ b/regula/documentreader/webclient/gen/models/rfid_application_type.py @@ -27,6 +27,8 @@ class RfidApplicationType(int, Enum): LDS2_VisaRecords = 6 LDS2_AddBiometrics = 7 eDTC_PC = 8 + APPLET_ROOT = 50 + USER_DEFINED = 100 @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/regula/documentreader/webclient/gen/models/rfid_password_type.py b/regula/documentreader/webclient/gen/models/rfid_password_type.py index e2c9bb2..edc8401 100644 --- a/regula/documentreader/webclient/gen/models/rfid_password_type.py +++ b/regula/documentreader/webclient/gen/models/rfid_password_type.py @@ -26,6 +26,7 @@ class RfidPasswordType(int, Enum): PIN_E_SIGN = 5 SAI = 6 MRZ_HASH = 7 + PIN_LOCAL = 8 @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..d952d9d --- /dev/null +++ b/renovate.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended", + "helpers:pinGitHubActionDigests" + ], + "enabledManagers": [ + "github-actions" + ], + "labels": [ + "dependencies" + ], + "prBodyNotes": [ + "https://redmine.regulaforensics.com/issues/58096" + ], + "packageRules": [ + { + "description": "Update all GitHub Actions to latest, including major version bumps", + "matchManagers": [ + "github-actions" + ], + "groupName": "GitHub Actions dependencies", + "groupSlug": "github-actions-deps", + "matchUpdateTypes": [ + "major", + "minor", + "patch", + "pin", + "digest" + ], + "schedule": [ + "before 6am on wednesday" + ], + "automerge": false, + "enabled": true + } + ], + "github-actions": { + "enabled": true, + "pinDigests": true + } +}